Mecabの辞書に単語を追加してみる
前回のMeCabの記事を読んでくれた方や、実際にMeCabを使い始めた方には分かると思いますが、初期状態のMeCabを使って実際に形態素解析を行うと、いい精度とはいいにくい結果が返ってくると思います。
MeCabには、デフォルトでも、様々な単語を持った辞書があるみたいですが、ゲームや小説等の固有名やネットスラングなど、特殊な(?)単語では変なところを区切ってしまうということが多発します。
では、この特殊な単語を含んだ辞書を作ってMeCabさんに渡してみましょう。
OS : Ubuntu 14.04 LTS
MeCab : ver0.996
1. 辞書に登録する辞書を作る
では、さっそくMeCabに渡す辞書を作っていきましょう。ここでは、テストのために新たに1つの単語「艦娘」を追加しようと思います。この単語は、解析を行うと、「艦」と「娘」という二つの言葉に分離してしまいます。
ので、これを登録してみます。
登録には、csvファイルを使います。OfficeのExcelでまれに良く使うやつですね。とは言っても、Excelは必要なく、普通のテキストエディタ・・・viでも大丈夫です。
以下の形式で、記述してみてください。
1 |
表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,読み,発音 |
といってもわけが分からないので、以下に記述例をのっけておきます。
1 |
艦娘,,,0,名詞,一般,*,*,*,*,艦娘,カンムス,カンムス |
やけに空白が多く見えますが、コンパイルするときに自動で埋めてくれるみたいです。
2. 辞書の移動
次に、登録する辞書を置いておくディレクトリでも作っておきましょうか。タブンどこでも大丈夫だと思いますが、どこに置いてあるかを忘れないようにしてください。今回は、ホームディレクトリの下にmecabDicというディレクトリ(/home/[ユーザー名]/mecabDir)を作って、そこにおきました。ちなみに、ファイル名は、user.csvにしました。
3. csvファイルをコンパイルする
上記で作成したcsvファイルをコンパイルして、dicファイルという辞書ファイルを作成します。これには、以下のコマンドを使います。
1 |
/usr/lib/mecab/mecab-dict-index -d /usr/share/mecab/dic/ipadic -u [作成する辞書名].dic -f utf-8 -t utf-8 [作成したcsv].csv |
今回の環境では、csvのファイル名は「user.csv」、辞書名は「hoge.dic」なので、以下のようになります。
1 |
/usr/lib/mecab/mecab-dict-index -d /usr/share/mecab/dic/ipadic -u hoge.dic -f utf-8 -t utf-8 user.csv |
4. コンパイルした辞書ファイルをMeCabに渡す
これで最後です。MeCabの設定ファイルに、上記で作成した辞書ファイルのパスを記述します。設定ファイルは/etc/mecabrcです。もし、見つからなければ「$find mecabrc」などで探しちゃってください。
書き換える部分は、userdicの箇所です。以下のように書き換えてください。
1 2 3 4 |
;この部分を ;userdic = /home/foo/bar/user.dic ;このように変更してください userdic = /home/[ユーザー名]/mecabDic/user.dic |
※ コメントアウトの「;」が変更後にはついていないことに注意してください
5. 動作確認
動作確認をして終わりです。
今回の作業では、「艦娘」を追加したので、以下のコマンドでチェックします。
1 |
$ echo 艦娘 | mecab |
このコマンドの結果は、作業前では、
1 2 3 |
艦 名詞,一般,*,*,*,*,艦,カン,カン 娘 名詞,一般,*,*,*,*,娘,ムスメ,ムスメ EOS |
となりますが、作業後には、
1 2 |
艦娘 名詞,一般,*,*,*,*,艦娘,カンムス,カンムス EOS |
となり、設定が反映されている事が確認できると思います。
それでは、これにて終わりです。お疲れ様でした。
「MeCab:単語の追加方法」
https://mecab.googlecode.com/svn/・・・/dic.html
「Ubuntu 9.10 でmecabのユーザー辞書を作成したときのメモ」
「Ubuntu11.04でMecabのユーザー辞書を使う」