wp2txtでハマった話

  • 5
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

何をしたかったか

 去年あたりから有名な、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