mecabに単語を登録
mecabで固有名詞を処理してゆきたいので、ユーザ辞書登録をしてみる。システム辞書登録もできるみたいだが、頻度が多く数が多いので、任意のタイミングで追加できるユーザ辞書タイプがいいと考えた。
辞書登録するにはまずは、登録用のcsvを作る。文字コードはUTF8にした。
フォーマットは以下の通り。
表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,読み,発音
最後の発音の後ろに任意の情報を追加できるらしいので「ユーザ登録」と入れてみた。
カタンの開拓,-1,-1,10,名詞,一般,*,*,*,*,カタンの開拓,かたんのかいたく,かたんのかいたく,ユーザ登録
これを辞書バイナリに変換する。変換はmecab-dic-indexを使う。書式は以下の通り。
$ mecab-dict-index -d システム辞書のあるディレクトリ -f csvの文字コード -t 作成するバイナリ辞書の文字コード 作成するバイナリファイル辞書
今回作成した辞書は以下のとおり
$ /Users/名前/App/mecab/libexec/mecab/mecab-dict-index -d /Users/名前/App/mecab/lib/mecab/dic/ipadic -f utf8 -t utf8 -u /Users/名前/App/mecab/dic/user.dic /Users/名前/App/mecab/dic/user.csv reading /Users/名前/App/mecab/dic/user.csv ... 1 emitting double-array: 100% |###########################################| done!
このユーザ辞書を利用するように設定に追加する。
/Users/名前/App/mecab/lib/mecab/dic/ipadic/dicrcに以下の定義を追加 ;UserDic userdic = /Users/名前/App/mecab/dic/user.dic
これでユーザ辞書が登録されたはずなので、テストしてみる。
$ /Users/名前/App/mecab/bin/mecab カタンの開拓 カタンの開拓 名詞,一般,*,*,*,*,カタンの開拓,かたんのかいたく,かたんのかいたく,ユーザ登録 EOS
無事に認識できてる。英語の固有名詞に関しても登録してみる。
カタンの開拓,-1,-1,10,名詞,一般,*,*,*,*,カタンの開拓,かたんのかいたく,かたんのかいたく,ユーザ登録 The Settlers of Catan,-1,-1,10,名詞,一般,*,*,*,*,カタンの開拓,かたんのかいたく,かたんのかいたく,ユーザ登録
これで辞書登録をもう一度行って、テストしてみる。
$ ./mecab The Settlers of Catan is Good The Settlers of Catan 名詞,一般,*,*,*,*,カタンの開拓,かたんのかいたく,かたんのかいたく,ユーザ登録 is 名詞,一般,*,*,*,*,* Good 名詞,固有名詞,組織,*,*,*,* EOS
名詞でうまく解析されている。これなら使えそうな気がしてきた。つぎはRubyからの処理だな。