LoginSignup
14
16

More than 5 years have passed since last update.

ウェブページの構成単語をword2vecしてkmeansしてみた(APIもあるよ)

Last updated at Posted at 2016-12-27

はじめに

先日、色んなサイトのTF-IDFを調べてみたという投稿をしましたが、今回はサイトの構成単語をWord2VecしてKmeansして、サイトの特徴的な単語が取れないか実験してみました。Word2Vecは日本語Wikipediaで作りました。Word2VecもKmeansもdeeplearning4jを使っています。

やってみる

せっかくなので、先日と同じ記事を分析してみましょう。

Qiitaの場合

いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方
TFIDFのときと違って、「BO」「BS」「SY」「CS」などLinuxコマンドの出力に出てくる単語が選ばれていますね。今回のアルゴリズムだと意味的に近いものは選ばれないようになっているので、こういうものが選ばれちゃうんでしょうか。

単語 TF-IDF値
ID 108.10941554574828
メモリ 209.22722419151629
BO 132.13373011147013
BS 132.13373011147013
HDD 156.15804467719198
CPU 132.13373011147013
SY 108.10941554574828
CS 108.10941554574828
MB 168.1702019600529
Linux 84.08510098002643

Retty流『2200万ユーザを支える機械学習基盤』の作り方
こちらはTFIDFのときと大体似たような感じですね。「Docker」「CROWD」「GPU」「AWS」など、ポイントは抑えている感じです。

単語 TF-IDF値
Docker 306.31001071295356
CROWD 144.14588739433106
virt-manager 104.55854782093631
DESKTOP 108.10941554574828
.S 108.10941554574828
Secret 144.14588739433106
Qiita 192.19451652577476
Retty 684.6929651230727
GPU 420.42550490013235
AWS 186.1884378843443

初心者がchainerで線画着色してみた。わりとできた。
TFIDFのときよりは画像処理っぽさが出ていますね。「PX」「着色」「JPEG」「IMAGE」「2D」「線画」がそれです。「PX」はピクセルです。

単語 TF-IDF値
Qiita 144.14588739433106
PX 60.06078641430457
.S 102.10333690431781
着色 77.32066589339188
JPEG 96.09725826288735
IMAGE 102.10333690431781
test 268.5932355319406
ID 60.06078641430457
2D 306.31001071295356
線画 140.24967520586745

Wikipediaの場合

ウィキペディア
TFIDFのときと近いですが、「ジミー・ウェールズ」が含まれているのがいいですね。ウィキペディアの基本要素は含まれています。

単語 TF-IDF値
百科事典 37.92148047407401
ウィキメディア財団 49.42546256406893
ヌーペディア 62.735128692561766
ジミー・ウェールズ 41.93165284787603
メーリングリスト 31.67046239357945
英語版ウィキペディア 31.974842712450794
記事 72.39311150747272
Wikipedia 144.14588739433106
編集 48.25859044190302
投稿 39.9784733507901

東京喰種トーキョーグール
こちらも基本的な特徴は捉えています。TFIDFのときよりは単語のバリエーションが少ない気もしますが、URLタグ付けとして考えたときはこちらのほうが良いですね。

単語 TF-IDF値
東京喰種 21.91414675516279
OWL 24.024314565721834
スカル 24.434044848916372
隻眼 41.69656394780747
東京喰種トーキョーグール 214.63517540942794
Loveit! 36.03647184858275
東京喰種トーキョーグール√A 30.030393207152294
富良 23.419296733482696
PSYCHO 24.024314565721834
TVアニメ 30.030393207152294

アルゴリズム

細かいアルゴリズムはこちらを参照下さい。ざっくり説明すると、まず入力文をkuromoji-ipadic-Neologdで形態素解析し、名詞、動詞、形容詞、未知語のみを代表語の候補とします。いくつかストップ品詞細分類とストップワードを設定しています。Word2Vecでベクトルにしたあと、Kmeansクラスタリングで指定した数のクラスタに分類します。最後に、クラスタの中心ベクトルに最も近い単語を選んで、入力したサイトの特徴語(タグ)として出力します。

関連情報

APIを公開しています。無料なので興味があればお試しください。

おわりに

Word2Vecでなんとか文章の自動タグ付けができないか検討し、失敗もしましたがまあまあ有用な技術ができました。TFIDFもWord2Vec+Kmeansも、それぞれ特徴があって面白いです。KmeansによるWord Vectorのクラスタリングは、各クラスタが独立になるように計算します。Word Vectorは単語の持つ概念を表現していることがわかってきましたし、Kmeansでクラスタリングすることで各クラスタの代表語は意味的に独立関係にあるということです。なかなかおもしろい特徴なので、まだまだ応用がありそうですね。

14
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
16