何をしたかったか
去年あたりから有名な、Word2Vecを触ることになった。
Word2Vecはどんなものかというと、単語の意味を文脈(単語の前後にある一連の単語)から判断し、100~200次元くらいの空間に射影するのだとか。単語がベクトルを持ち、このベクトルの向きがその単語の意味に相当するので、意味の足し引きなどができるようになるそう。Word2Vecについて詳しくは↓
米googleの研究者が開発したWord2Vecで自然言語処理(独自データ)
Word2Vecは文脈から判断するために、分かち書きされた大量の文書データを必要とするそうだ。
日本語のデータを分かち書きするには、MeCabというアプリケーションが使われる。MeCabは辞書を元に確率的に解析して、文書の中で分けるのに最適な部分を見つけてくるのだとか。辞書にない言葉は認識できないので、分かち書きしたい文書のジャンルによっては、そのジャンルの辞書が必要だ。
そこで試しにWikipediaのダンプデータから辞書を作ったり、コーパスを作ったりしたい。
まずwp2txtというrubyのgemを使って、wikiのダンプをパースするのだが、このwp2txtでハマった。以下はその時のメモ代わり。
環境
Windows 8.1上で vagrant + VirtualBox を使って仮想OS Ubuntu14.04 を導入してある。また、UbuntuはPythonが2系なのが気に入らないので、3系の環境をAnacondaで構築。さらにRubyも一応入れてあるところからスタート。
そのときの努力はここ。
wp2txtのワナ
本家(githubレポジトリ)には一行でインストールできると書いてある。
$ gem install wp2txt
しかしエラー。。。
root@ubuntu-1404:/home/vagrant# gem install wp2txt
Building native extensions. This could take a while...
ERROR: Error installing wp2txt:
ERROR: Failed to build gem native extension.
current directory: /var/lib/gems/2.3.0/gems/nokogiri-1.6.7.2/ext/nokogiri
/usr/bin/ruby2.3 -r ./siteconf20160503-3778-1cu9phe.rb extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h
extconf failed, exit code 1
Gem files will remain installed in /var/lib/gems/2.3.0/gems/nokogiri-1.6.7.2 for inspection.
Results logged to /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/nokogiri-1.6.7.2/gem_make.out
ちゃんと読むと、nokogiriとやらで詰まっていること、mkmfがヘッダを見つけられなかったことが分かる。
bundleで入れようとしたり(1, 2)、なぜかrailsを入れようとしてみたり(wp2txtと同様、nokogiriで全く同じエラーを吐く)したがまあダメ。
mkmfが無い場合はruby-devをインストールが惜しかったがこれもダメだった。
- 解決
結局Stack Overflow(本家の)を読んで解決した。
Error while installing json gem 'mkmf.rb can't find header files for ruby'
rubyのバージョンを確認すると次の通りだった。
root@ubuntu-1404:/# ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux-gnu]
よって
root@ubuntu-1404:/home/vagrant# sudo apt-get install ruby2.3-dev
とすると、
root@ubuntu-1404:/# gem install wp2txt
Fetching: wp2txt-0.8.0.gem (100%)
Successfully installed wp2txt-0.8.0
Parsing documentation for wp2txt-0.8.0
Installing ri documentation for wp2txt-0.8.0
Done installing documentation for wp2txt after 0 seconds
1 gem installed
となって解決。
ちなみに、原因はいろいろあるよう。
その他参考にしたページ
やりたいことが全く同じ
http://eyepodtouch.net/?p=77
wp2txtをこれで知った
http://saiyu.cocolog-nifty.com/zug/2014/02/word2vec-1867.html
青空文庫で試してる例
http://tjo.hatenablog.com/entry/2014/06/19/233949
nokogiriをビルドできない
http://qiita.com/chobi9999/items/7b66677b3bf3da8acc14