ミスの内容
MeCabのユーザ辞書を作成する方法は、いろいろなページで紹介されていますが、例えば以下のようなエントリを追加しようとします。
test.csv
1号館,-1,-1,1,名詞,固有名詞,*,*,*,*,1号館,イチゴウカン,イチゴーカン,(テストユーザ辞書)
このtest.csv
をもとにmecab-dict-index
でdicファイルを生成しようとすると、システム辞書がIPA品詞体系であれば、以下のようなエラーが返されます。
reading ./test.csv ... context_id.cpp(96) [it != left_.end()] cannot find LEFT-ID for 名詞,固有名詞,*,*,*,*,*
いったいどこが間違っているんだ!とずっと思っていましたが、エントリを以下のように修正することで治りました。
test.csv
1号館,-1,-1,1,名詞,固有名詞,一般,*,*,*,1号館,イチゴウカン,イチゴーカン,(テストユーザ辞書)
固有名詞
の右側の*
を一般
に変更しています。
結論
MeCabユーザ辞書を追加するときは、システム辞書の品詞体系に沿って、品詞を指定しないといけません。今回の例の場合、「1号館」という固有名詞を追加したいと思って、品詞を名詞,固有名詞,*,*
と指定していましたが、IPA品詞体系の場合、固有名詞はさらに「一般」「人名」「組織」「地域」と別れているため、それに沿って、名詞,固有名詞,一般,*
などのように指定しなければなりません。
関連ページ
- 形態素解析ツールの品詞体系 ChaSen品詞体系(IPA品詞体系) - IPA品詞体系の分類表が載っています