#はじめに
研究目的で実践医療用語が収納されたComeJisyoをmecabのユーザ辞書に登録した際に,辞書が反映されなかった話です.結論から言うとだいぶ初歩的なミスで, mecabの使い方をよく理解していなかったのが原因でした.しかし,自分は結構困ってしまったので,もしかして誰かの役に立つかもしれないので記録を残します.
#参考サイト
(1)ComeJisyoダウンロード:https://ja.osdn.net/projects/comedic/
(2)ユーザ辞書の登録:https://qiita.com/quvo/items/9ef250d58971eadf6e1a
(2)の記事は2016年の古い記事のため,(1)で公開されているComeJisyoの一番古いバージョンしかない時期でした.そのため,(2)で紹介されているような辞書をmacで使用するためにUtf-8に変換してdicファイルを生成する必要はなく,今だったら公開されているUtf-8版をダウンロードすれば既にdic形式のファイルも付いています.
なので,参考にするのは(2)のユーザ辞書の登録のみです.
#ハマったところ
参考サイト(2)を参考にして,ComeJisyoをユーザ辞書に指定した後,python3でmecabによる形態素解析を行なったところ
import MeCab
tagger = MeCab.Tagger('-Ochasen')
text = '消化器の病気'
print(tagger.parse(text))
出力
消化 ショウカ 消化 名詞-サ変接続
器 キ 器 名詞-接尾-一般
の ノ の 助詞-連体化
病気 ビョウキ 病気 名詞-サ変接続
あれ? ComeJisyoが適用されていたら「消化 器 の 病気」ではなく,「消化器 の 病気」で分かち書きされるはず...
何かがおかしい.
#解決
$ mecab
消化器の病気
消化器の病気
消化器 名詞,一般,*,*,*,*,消化器,ショウカキ,ショウカキ,◆::看栄教:5::42354
の 助詞,連体化,*,*,*,*,の,ノ,ノ
病気 名詞,一般,*,*,*,*,病気,ビョウキ,ビョウキ,◆::看助栄教:5::124578
上記のようにmecabをターミナルから使用するとちゃんとユーザ辞書が反映されていることがわかる.このことからpythonでmecabを使用する時に何か間違えていることに思い当たりました.
調べた結果,下記のようにユーザ辞書を指定することで解決しました!
import MeCab
tagger = MeCab.Tagger('-d /usr/local/lib/mecab/dic/ipadic -u /usr/local/lib/mecab/dic/userdic/ComeJisyoUtf8-2.dic')
text = '消化器の病気'
print(tagger.parse(text))
出力
消化器 名詞,一般,*,*,*,*,消化器,ショウカキ,ショウカキ,◆::看栄教:5::42354
の 助詞,連体化,*,*,*,*,の,ノ,ノ
病気 名詞,一般,*,*,*,*,病気,ビョウキ,ビョウキ,◆::看助栄教:5::124578