こんにちは制作部の花島です。
テキストマイニングをやっていて、MeCabでハマったのでその話をしたいと思います。
ちなみに、MeCabとは日本製のオープンソース 形態素解析エンジンです。
MeCabでは新しい単語でも抽出できるように単語を追加するユーザ辞書機能があります。
このユーザ辞書機能でハマりました。
原因は品詞,品詞細分類1,品詞細分類2,品詞細分類3を正しく設定していない事が原因でした。IPA品詞体系に沿って登録する事!!
しかし、ハマっている最中、エラー文言は[it != left_.end()] cannot find LEFT-ID for・・・エラーでした。
LEFT-ID関係ないじゃん!!
ハマった手順
1.単語の登録
単語は以下のフォーマットで登録できるので、自分の名前をユーザ辞書(new_word.csv)に登録しました。
表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音
花島君俊,,,1,名詞,固有名詞,人名,*,*,*,はなしまきみとし,ハナシマキミトシ,ハナシマキミトシ
2.エラー発生
コンパイル。
[yyyy@ip-xxx-xxx-xxx-xxx userdic]$ sudo /usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/ipadic -u /usr/local/lib/mecab/dic/userdic/new_word.dic -f utf-8 -t utf-8 new_word.csv
reading new_word.csv ... context_id.cpp(96) [it != left_.end()] cannot find LEFT-ID for 名詞,固有名詞,人名,*,*,*,*
3.LEFT-IDを-1や他の数値にして再度コンパイル
同じエラー・・・
4.MeCabはIPA品詞体系を使っている事を知る。
IPA品詞体系に沿って登録。
花島君俊,,,1,名詞,固有名詞,人名,*,*,*,はなしまきみとし,ハナシマキミトシ,ハナシマキミトシ
↓
花島君俊,,,1,名詞,固有名詞,人名,一般,*,*,はなしまきみとし,ハナシマキミトシ,ハナシマキミトシ
5.解決
再度コンパイルし解決。
[yyyy@ip-xxx-xxx-xxx-xxx userdic]$ sudo /usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/ipadic -u /usr/local/lib/mecab/dic/userdic/new_word.dic -f utf-8 -t utf-8 new_word.csv
reading new_word.csv ... 6
emitting double-array: 100% |###########################################|
done!
[yyyy@ip-xxx-xxx-xxx-xxx userdic]$ mecab
花島君俊は最近Djangoで開発しています。
花島君俊 名詞,固有名詞,人名,一般,*,*,はなしまきみとし,ハナシマキミトシ,ハナシマキミトシ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
最近 名詞,副詞可能,*,*,*,*,最近,サイキン,サイキン
Django 名詞,一般,*,*,*,*,*
で 助詞,格助詞,一般,*,*,*,で,デ,デ
開発 名詞,サ変接続,*,*,*,*,開発,カイハツ,カイハツ
し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
い 動詞,非自立,*,*,一段,連用形,いる,イ,イ
ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
。 記号,句点,*,*,*,*,。,。,。
EOS