1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PythonからMeCabを使用してユーザ辞書が適用されずハマった

Last updated at Posted at 2020-08-12

#はじめに
研究目的で実践医療用語が収納された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
1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?