2019-05-18WikipediaのデータでWord2Vecを試すいまさらWord2Vecをやってみる。やりたいことWikipediaの全日本語記事をWord2Vecする。これにより、単語を単語ベクトルに変換できる。その後、単語の関連度とかを見て遊ぶ。LTSPython3.5.2gensim3.7.3流れWord2Vec使うときはいつもこんな感じっぽい。テキストを用意する分かち書きにするWord2Vecにかけるテキストを用意するダンプデータのダウンロードWikipediaのダンプデータについてはここに書いてある。これをたどると記事全体のダンプデータのリンクがわかる。以下のようにしてダウンロードする。ダウンロード先を指定している。https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2ダンプデータをテキストにする上で取得したダンプデータの中身はXMLであり、かつWiki記法なので、これを単純なテキストにする。WikiExtractorというツールを使う。解凍不要で、bz2ファイルのまま使える。テキストができるが、1MBごとにファイルに分割されている。これを1つのファイルにまとめる。title="アンパサンド">...</doc>のようなタグが残っているので、これを削除する。解凍して中身を見れる。並立助詞「...と...」を意味する[[記号]]である。合字であることが容易にわかる。WikiExtractorによってテキストにすると、この部分は次のようになる。並立助詞「...と...」を意味する記号である。合字であることが容易にわかる。分かち書きにするWord2Vecを使うには単語に分割されてないといけない。英語は空白などで分割されているのですぐにわかるが、日本語はそのままだと分割されていないので、分かち書きにする作業が必要。分かち書きにするためのライブラリとしては形態素解析器のMeCabを使う。他にはJUMAN++やJanomeというのもあるらしい。標準の辞書だと新語に弱い。1語として扱ってほしい語を複数単語にされたりする。これを避けるためにNEologdという辞書を使う。この辞書によって結果がどう変わるかはNElogdのREADMEに例が書いてあるのでそれを見れば一発でわかる。インストールNEologdのREADMEに書いてある通りにやる。タイプするこれでインストールが完了する。辞書のパスは以下でわかる。標準の辞書とNEologdの辞書で形態素解析すると、それぞれこんな感じになる。名詞,固有名詞,一般,*,*,*,2019年,レイワガンネン,レイワガンネンEOSWikipediaのテキストを分かち書きにするこれも時間がかかる。16384オプションの意味は以下。-d使用する辞書を指定。上で調べたパスを入れる。-Owakati分かち書きにする。これを指定しない場合、普通に形態素解析される。-o出力ファイルを指定。-bバッファサイズを指定。option.というエラーが途中で出たので追加した。変換後はバイナリファイルになるという話だったが、大丈夫そう。分かち書きしたファイルこんな感じになる。