Fujitsu Advent Calenderの記事です。
実は出遅れてしまったのですが、何か書きたいと思い、誰もいない過ぎてしまった日にこっそり投稿させて頂きました。
はじめに
形態素解析、といえばMecabを思い浮かべる方が多いと思います。もちろん私もそうでしたが、先日(といっても1ヶ月くらい前ですが)知人に、 RNNを使ったJUMAN++なる新しい形態素解析器が出て、なんと"外国人参政権(※)"を正しく分かち書きできるらしい ということを聞き、興味をもったので挑戦してみました。
今回は環境構築と実際に実行するまでに詰まったところを共有したいと思います。
環境構築手順に関してはこちらを参考にさせて頂きました。
※MecabやJUMAN++の前のJUMANだと「外国 / 人参 / 政権」となってしまいます
環境構築
私の開発環境はUbuntu14.04なのですが、JUMAN++のインストールの際に必要な「Boost C++ Libraries」をなぜかインストールすることができませんでした。
そこでDockerを使い、公式で推奨されているCentOS上で環境構築しました(Cent OS 6.7 で動作を確認、とあったので今回はCentOS7にしました)
Boost C++ Librariesのインストール
JUMAN++の導入に関する記事は先ほど紹介したものの他にもたくさんあったのですが、Boost C++ Librariesの導入に関して、見つけられなかったので載せておきます
$ wget https://sourceforge.net/projects/boost/files/boost/1.62.0/boost_1_62_0.tar.gz
$ tar xvzf boost_1_62_0.tar.gz
$ cd boost_1_62_0 && sh bootstrap.sh && ./b2 install -j2
pythonから使う際の文字コード
こちらを参考にPythonからJUMANN++を使おうとしていたのですが、文字コードで怒られてしまいました。
どうやらPYTHONIOENCODINGという環境変数に文字コードを設定する必要があったみたいです。
$ export PYTHONIOENCODING=utf-8
実行時
Python3.4からのJUMAN++を呼び出して、livedoorニュースコーパスを形態素解析する際に引っかかったところを書きます。
下記2点とも知人の環境では起こらなかったらしいので、何か私がインストールするものが足りてないのかもしれませんが、ご参考までに。
半角スペース
形態素解析に半角スペースが入っていると、エラーは起こらないのですが、実行後固まってしまうという現象が起こりました。
解析の際は半角スペースを消したのですが、英語の分かち書きがうまくできなかったので全角スペースに置換すればよかったかもですね。
文頭の#, @
文章中に含まれている文には問題ないのですが、分かち書きするためにJUMAN++に投げる文章の1文字目が@か#だと、こちらも固まってしまうという現象が起こりました。
こちらも文頭の@や#は削除するという方法で対処しました。
所感
最後にJUMAN++を使ってみた感想ですが、私のPCが弱いということもあると思うのですが、処理が遅いということが気になりました。
livedoorニュースコーパスの分かち書きの際、Mecabは10秒ほどで終わったのに対し、JUMAN++は 10時間以上 かかってしまい、ほぼ半日動かし続けることになってしまいました。
処理速度は圧倒的にMecabに軍配があがるので、完全にMecabの上位互換というわけでもなさそうです。
とは言っても、やはりJUMAN++の能力は魅力的なのでうまいこと使えるようになりたいですね。