1. Home
  2. 機械学習
  3. 簡単にMeCabに登録してみた

簡単にMeCabに登録してみた

by ysawa

今回は、インストールした 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

できました。辞書の登録はとても簡単ですね。問題は、辞書の単語をどうやって取得してくるかですね。それは、今後の課題としておきます。

この記事を読んだあとに


ysawa

エヌ次元株式会社代表取締役
東京工業大学工学部計算工学専攻卒業
符号理論の応用に関する研究
在学中よりフリーランスエンジニアとして活動
「持続可能な設計」を得意領域とする
会社設立後も設計からアプリ制作や
Webサイトのコーディングまでを幅広く担当
セキュリティスペシャリスト

 このブログについて

このブログは、プログラマやエンジニアのためになる情報を垂れ流しています。
ちょっと異端的なものも含まれているかもしれません。