今回は、インストールした MeCabにユーザ辞書を登録してみます。
思うように分かち書きがされない
形態素解析したときに、思うように形態素に分かれてくれないことがあります。例えば、これ。
$ mecab -d /usr/lib64/mecab/dic/mecab-ipadic-neologd/
ユーザ設定が必要です。
ユーザ 名詞,一般,*,*,*,*,ユーザ,ユーザ,ユーザ
設定 名詞,サ変接続,*,*,*,*,設定,セッテイ,セッテイ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
必要 名詞,形容動詞語幹,*,*,*,*,必要,ヒツヨウ,ヒツヨー
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。 記号,句点,*,*,*,*,。,。,。
EOS
「ユーザ設定」は1つの形態素として認識してほしかったりします。そんなときは、ユーザ辞書の登録が必要です。
正確にいうと、 MeCab の辞書にはシステム辞書とユーザ辞書があるのですが、システム辞書を更新するのは非常に大変なので、ユーザ辞書を作成することになります。
$ cp /etc/mecabrc ~/.mecabrc
として ~/.mecabrc
を編集します。以下のように基準とするシステム辞書 dicdir
と、ユーザ辞書のパス userdic
を設定します。 userdic
は一旦はコメントアウトです。
dicdir = /usr/lib64/mecab/dic/mecab-ipadic-neologd
; userdic = /home/ysawa/lib/mecab/user.dic
$ mkdir ~/lib/mecab
$ cd ~/lib/mecab
$ cat > user.csv
ユーザ設定,,,5000,名詞,一般,*,*,*,*,ユーザ設定,ユーザセッテイ,ユーザセッテイ,追加エントリ
$ /usr/libexec/mecab/mecab-dict-index -d /usr/lib64/mecab/dic/mecab-ipadic-neologd/ -u user.dic -f utf-8 -t utf-8 user.csv
reading user.csv ... 1
emitting double-array: 100% |###########################################|
done!
追加単語のフォーマットは、
表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,読み,発音
となります。(詳しくは引用元へ)
すると、最後の
,追加エントリ
という文字列が余分ですが、これは、ユーザ辞書に許されたカラムです。何をいれても形態素解析の結果には影響しません。
コストについて
システム辞書にもよるのですが、名詞に対するコストは実験してみたら、 5000
前後がちょうどよいような感じでした。
Wikipedia の見出し語を天下り的に登録する際に参考にしてみてください。
ユーザ辞書を学習させる
$ /usr/libexec/mecab/mecab-dict-index -d /usr/lib64/mecab/dic/mecab-ipadic-neologd/ -u user.dic -f utf-8 -t utf-8 user.csv
reading user.csv ... 1
emitting double-array: 100% |###########################################|
done!
-d
オプションには、通常使っているシステム辞書(dicdir
の値)を設定してください。
~/.mecabrc
を編集して、 userdic
のコメントを外します。
dicdir = /usr/lib64/mecab/dic/mecab-ipadic-neologd
userdic = /home/ysawa/lib/mecab/user.dic
ここまでで、ユーザ辞書の追加は完了。
結果
$ mecab
ユーザ設定が必要です。
ユーザ設定 名詞,一般,*,*,*,*,ユーザ設定,ユーザセッテイ,ユーザセッテイ,追加エントリ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
必要 名詞,形容動詞語幹,*,*,*,*,必要,ヒツヨウ,ヒツヨー
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。 記号,句点,*,*,*,*,。,。,。
EOS
できました。辞書の登録はとても簡単ですね。問題は、辞書の単語をどうやって取得してくるかですね。それは、今後の課題としておきます。
この記事を読んだあとに
- 書いた人のツイッター – Follow me!
- 『売上を3年連続20%成長させた18の秘訣』
- 運営しているアクションゲーム