00:00:49岡山に似ている都道府県はどこだ!Wikipedia・言語処理的ランキング〜。19日目のエントリーです。十人十色な答えが出てくると思います。岡山に似ている都道府県をWikipedia的に解析していきたいと思います。つかうものWikipediaの記事MeCabという形態素解析機Word2Vecというニューラルネットワークコサイン類似度この4つです。これらがどういうものなのかについては全く説明しませんので調べてください。やりたいことWikipediaの記事をMeCabで分かち書きにします。最後に、岡山県と各都道府県の名前の単語のベクトルをコサイン類似度を用いて比較していきます。今回はWikipediaのデータを利用するのでそれをダウンロードしてきます。https://dumps.wikimedia.org/jawiki/2017年12月1日のデータを利用します。https://dumps.wikimedia.org/jawiki/20171201/jawiki-20171201-pages-articles.xml.bz2wikipediaのデータをXML→TXTに変換Rubyで書かれたwp2txtと言うものをインストールして使います。gemでインストールできます。ruby-buildがなかったらインストールしてください。99しばらく時間がかかります。終わると幾つかのファイルに分割されているので、くっつけます。jawiki-20171201.txt3GBになりましたー!ぱちぱちぱち。mecabで実行させて適当に日本語を入力したら形態素解析されることを確認できればOKです。日本語の文は英語のように単語が区切られていないため、区切る必要があります。それをMeCabが行ってくれます。さっき出力したデータセットをMeCabに食べさせてあげれば勝手にやってくれます。jawiki-20171201-wakati.txtこれもしばらく時間がかかります。3.6GBになりましたー!ぱちぱちぱち。今回は、PythonのgensimライブラリにあるWord2Vecで学習していきます。Pythonコード(train.py)はGithubにあげておきます。jawiki-20171201.modelしばらく時間がかかります。完了したらモデルが保存されます。注、メモリは10GBぐらいないとモデルを保存する時にメモリエラーになります。今回は、PythonのgensimライブラリにあるWord2Vecで学習していきます。Pythonコード(calc.py)はGithubにあげておきます。岡山は東京とは程遠いことがわかった今回は単語に対するベクトルのコサイン類似度で岡山県ににている都道府県ランキングをおこないました。このような結果になるのかイマイチわかりませんが、これがWikipedia先生による答えです。今後、単語ではなくWikipediaの都道府県ページのページに対する文書ベクトルをLSTMなどを用いて作った場合、ランキングがどうなるのか、変わるのかなどをやれればと思います。プログラムに関しては、ランキングを計算するcalc.pyがいちいちモデルを読み込んで類似度を計算しなおして、、っていう流れになってますが、一旦都道府県の単語ベクトルを保存しておいて、その単語ベクトルから別のプログラムで類似度計算してランキングを出す方が賢い気がしました。気が向いたら直します。(すぐ治りますけどね。今回書いたコードはGithubに上げてます。https://github.com/keisuke-oni/pref-similarity_based-word頑張る学生へのクリスマスプレゼントお待ちしております。論文紹介のために作成したスライドです。元の論文は以下のURLです。