work.log

エンジニアの備忘録的ブログ

新語に対応したMeCabの辞書mecab-ipadic-NEologdを使ってみる

投稿:2019-03-01 16:25  更新:

日々生まれる新語に対応してくれるMeCabの辞書mecab-ipadic-NEologdを使ってみました。

日本語で自然言語処理をする時は形態素解析がほぼ必要になってきますが、従来からあるMeCabのIPA辞書だと思うように出来なかったりするし、かと言って自分で辞書をカスタマイズするのも大変です。

そこで今回のmecab-ipadic-NEologdという辞書が役に立つのですが、その存在を最近知ったので導入方法をメモしておきたいと思います。

スポンサーリンク

インストール要件

mecab-ipadic-NEologdをインストールするにはこれらが必要です。

  • MeCab本体とmecab-ipadic (UTF8)
  • 2GB以上のメモリを積んだマシン

メモリは最低2GBは積んでないとコンパイルに失敗するみたいです。公式では1.5GBのメモリ空きが必須で、5GBのメモリ搭載マシンを推奨しています。

これはインストール時のバイナリファイルが850MBもあって、今後も増えていく見込みだからだそうです。

mecab-ipadic-NEologdのプロジェクトページは日本語で書かれているのでそこを読めばわざわざ書く必要は無いと思いつつも、この辞書はインストールするのに結構メモリを使うので貧弱なVPSで大丈夫かなと少し不安に。

このブログが動いているさくらのVPS 2Gプランでは何とかインストール出来ました。(mem:2GB、swap:4GB)

コンパイル中はswapしまくりでいつOOM Killerがやって来るか少しヒヤヒヤしましたが、最低限これくらいのスペックがあればインストールは出来そうです。

MeCabとNEologdのインストール

MeCabと辞書のmecab-ipadicはyumでもソースでもどちらでも簡単にインストール可能です。

今回はCentOSにインストールしましたが、yumでやるならこんな感じ。

# rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
# yum install mecab mecab-devel mecab-ipadic git make curl xz

ソースからインストールするならMeCabの公式からソースコードを落としてきてこのように。

# tar xfz mecab-0.996.tar.gz ; cd mecab-0.996
# ./configure --with-charset=utf8
# make && make install
# cd ..

# ldconfig

# tar xfz mecab-ipadic-2.7.0-20070801.tar.gz ; cd mecab-ipadic-2.7.0-20070801
# ./configure --with-charset=utf8
# make && make install

MeCabをインストールしたら次はmecab-ipadic-NEologdのインストールです。

対話式で聞いてくるので必要事項を入力して応答します。

$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd
$ ./bin/install-mecab-ipadic-neologd -n -a
.
. ~省略~
.
[test-mecab-ipadic-NEologd] : Please check difference between default system dictionary and mecab-ipadic-NEologd

default system dictionary         |     mecab-ipadic-NEologd
電動 自転車                       |     電動自転車 
スト パン                         |     ストパン 
金元 寿子                         |     金元寿子 
甲子園 駅                         |     甲子園駅 
自衛 官 募集 ポスター             |     自衛官 募集 ポスター 
速水 も こ みち                   |     速水もこみち 
四條畷 市                         |     四條畷市 
セブン チケット                   |     セブンチケット 
千歳 駅                           |     千歳駅 
ガル パン                         |     ガルパン 
伊勢 半                           |     伊勢半 
ブルー インパルス                 |     ブルーインパルス 

[test-mecab-ipadic-NEologd] : Finish..

[install-mecab-ipadic-NEologd] : Please check the list of differences in the upper part.

[install-mecab-ipadic-NEologd] : Do you want to install mecab-ipadic-NEologd? Type yes or no.
yes <= yesで回答

[install-mecab-ipadic-NEologd] : OK. Let's install mecab-ipadic-NEologd.
[install-mecab-ipadic-NEologd] : Start..
[install-mecab-ipadic-NEologd] : /usr/local/lib/mecab/dic isn't current user's directory
[install-mecab-ipadic-NEologd] : Sudo make install to /usr/local/lib/mecab/dic/mecab-ipadic-neologd
[sudo] password for miura: <= sudoのパスワード

[install-mecab-ipadic-NEologd] : Install completed.
[install-mecab-ipadic-NEologd] : When you use MeCab, you can set '/usr/local/lib/mecab/dic/mecab-ipadic-neologd' as a value of '-d' option of MeCab.
[install-mecab-ipadic-NEologd] : Usage of mecab-ipadic-NEologd is here.
Usage:
    $ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd ...

[install-mecab-ipadic-NEologd] : Finish..

sudoを設定していないなら普通にrootアカウントでインストールすれば良いです。

インストールオプションに -a を付けて辞書全部入りを選びましたが、他にも –ignore_ から始まるオプションを付けてコンパクトにする事も可能なようです。

メモリがどうしても足りない場合はこちらのオプションも検討する必要があります。

NEologdの自動アップデート

mecab-ipadic-NEologdは頻繁にアップデートされるようなので、cronにその設定を仕込んでおけば常に最新の辞書が利用できます。

毎週月曜日と木曜日の週二回、更新を予定しているそうなので火曜と金曜に設定すればいいみたい。

下記をcronに登録しておけば、質問にはyで自動応答して任意のディレクトリに新しい辞書を更新できる設定です。

00 03 * * 2,5 /path/to/bin/install-mecab-ipadic-neologd -n -y -u -p /usr/local/lib/mecab/dic/mecab-ipadic-neologd > /path/to/log/file

/path/to の部分および辞書の吐き出し先は適時変更して下さい。

メモリを使うので上記のようにAM3:00とかが無難なのでしょうが、メモリが少ないVPNとかだとコンパイル中にOOM Killerが他のプロセスを殺しかねないので、今回は設定しない事にしました。

NEologdを使ってみる

早速、MeCabでmecab-ipadic-NEologdを使ってみます。

このような文章を分かち書きしてみました。

ドナルド・トランプ米国大統領と北朝鮮の金正恩(キム・ジョンウン)の会談は決裂か?

IPA辞書

$ mecab
ドナルド・トランプ米国大統領と北朝鮮の金正恩(キム・ジョンウン)の会談は決裂か?
ドナルド        名詞,固有名詞,人名,名,*,*,ドナルド,ドナルド,ドナルド
・      記号,一般,*,*,*,*,・,・,・
トランプ        名詞,一般,*,*,*,*,トランプ,トランプ,トランプ
米国    名詞,固有名詞,地域,国,*,*,米国,ベイコク,ベイコク
大統領  名詞,一般,*,*,*,*,大統領,ダイトウリョウ,ダイトーリョー
と      助詞,並立助詞,*,*,*,*,と,ト,ト
北朝鮮  名詞,固有名詞,地域,国,*,*,北朝鮮,キタチョウセン,キタチョーセン
の      助詞,連体化,*,*,*,*,の,ノ,ノ
金      名詞,固有名詞,人名,姓,*,*,金,キム,キム
正      名詞,固有名詞,人名,名,*,*,正,タダシ,タダシ
恩      名詞,一般,*,*,*,*,恩,オン,オン
(      記号,括弧開,*,*,*,*,(,(,(
キム    名詞,固有名詞,人名,姓,*,*,キム,キム,キム
・      記号,一般,*,*,*,*,・,・,・
ジョン  名詞,固有名詞,人名,名,*,*,ジョン,ジョン,ジョン
ウン    感動詞,*,*,*,*,*,ウン,ウン,ウン
)      記号,括弧閉,*,*,*,*,),),)
の      助詞,連体化,*,*,*,*,の,ノ,ノ
会談    名詞,サ変接続,*,*,*,*,会談,カイダン,カイダン
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
決裂    名詞,サ変接続,*,*,*,*,決裂,ケツレツ,ケツレツ
か      助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ
?      記号,一般,*,*,*,*,?,?,?
EOS

NEologd

$ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
ドナルド・トランプ米国大統領と北朝鮮の金正恩(キム・ジョンウン)の会談は決裂か?
ドナルド・トランプ      名詞,固有名詞,人名,一般,*,*,ドナルド・トランプ,ドナルドトランプ,ドナルドトランプ
米国大統領      名詞,固有名詞,一般,*,*,*,米国大統領,ベイコクダイトウリョウ,ベイコクダイトウリョー
と      助詞,並立助詞,*,*,*,*,と,ト,ト
北朝鮮  名詞,固有名詞,地域,国,*,*,北朝鮮,キタチョウセン,キタチョーセン
の      助詞,連体化,*,*,*,*,の,ノ,ノ
金正恩  名詞,固有名詞,人名,一般,*,*,金正恩,キムジョンウン,キムジョンウン
(      記号,括弧開,*,*,*,*,(,(,(
キム・ジョンウン        名詞,固有名詞,一般,*,*,*,キム・ジョンウン,キムジョンウン,キムジョンウン
)      記号,括弧閉,*,*,*,*,),),)
の      助詞,連体化,*,*,*,*,の,ノ,ノ
会談    名詞,サ変接続,*,*,*,*,会談,カイダン,カイダン
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
決裂    名詞,サ変接続,*,*,*,*,決裂,ケツレツ,ケツレツ
か      助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ
?      記号,一般,*,*,*,*,?,?,?
EOS

IPA辞書では対応できて居なかった人名がしっかり分かち書き出来ています!

今後、分かち書きをするならmecab-ipadic-NEologdは絶対入れておきたい辞書ですね。

スポンサーリンク

コメント

コメントを残す

よく読まれている記事

  • 今日
  • 週間
  • 月間