kansiho's blog

ruby, python, javascript. Rails, wordpress, OpenCV, heroku...

fasttextを利用しPythonでTwitterやwikiから大量にデータをダウンロードしてニューラルネットで学習する

メモ書き程度。

ailaby.com

で概要を把握して、

apps.twitter.com

でアクセストークンを作成して、

初めて作る場合は携帯電話番号を登録しないといけないので、

support.twitter.com

に沿って携帯電話番号を認証して、

github.com

のOAuthライブラリを提供してくれるRequests-OAuthlibを

$ pip install requests requests_oauthlib

で入れて、

Twitter APIからテキストを落として、 毎月辞書データがアップデートされているmecab-ipadic-NEologdを

qiita.com

に従って入れて、

mecab -d /usr/local/mecab/lib/mecab/dic/mecab-ipadic-neologd -O wakati tweets.txt -o wakati_tweets.txt

分かち書きにして、

(-O –output-format-type TYPE 出力するフォーマット形式を指定する、

FastTextの扱い方については

Facebookが公開した10億語を数分で学習するfastTextで一体何ができるのか - DeepAge

github.com

で学んで、

分かち書きされた文章へのラベルの挿入はvim上で

「control + v」で矩形選択, 行末まで縦に一行選択して、「I」で挿入モードにし、escで抜けるという方法で行頭に一気に挿入した。

それらを基にして、

テキスト分類器fastTextを用いた文章の感情極性判定 - Qiita

の要領で評価をテストする。

qiita.com

を参考に

Wikipedia:データベースダウンロード - Wikipedia

Index of /jawiki/latest/

からxml形式の日本語wikiのデータを落として(概要だけで2GBくらい)。

そこからテキストデータを抽出するためにwikiExtractorを利用する。

github.com

そのあとテキストデータを分かち書きにする。

それらを基にしてfast textで学習を行うと、

-outputで指定したファイル名について、.binと.vecの二種類のファイルが作成される。

  • output model とすれば、model.bin , model.vec が作成される。

.vecの方は、単語と分散表現がペアになったもの。