形態素解析・特徴語抽出エンジン『MeCab』に単語やユーザ辞書を追加する方法

オープンソースの形態素解析・特徴語抽出エンジン『MeCab』に単語を追加する方法。つまりうまく単語を切り出せなかったときにうまく切り出せるようにユーザー辞書を作成したりして単語を追加していく方法。

詳しくはリンク先を参照。Windows上で利用する場合元の説明を見ると分かりにくいのでWindows上で使うのに困らない様メモとして記しておく。


ユーザ辞書追加の準備

フォーマット

表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,読み,発音

 

直接最初から付属している辞書を編集するか、以下の様にユーザ辞書を作成して追加する。通常辞書がインストールされているパスは以下の場所である。

C:\Program Files\MeCab\dic\ipadic

 

ユーザ辞書を追加する場合は以下のファイイルを編集して

C:\Program Files\MeCab\etc\mecabrc

以下の様にユーザ辞書のパスを指定する。

userdic = F:\kumacchi\MyProgram\perl\mecabdic\user.dic

 


ユーザ辞書の作成方法

以下のようにユーザ辞書の元になるcsvファイルを作成する。大抵の場合一般名詞か人名の追加になるとおもう。詳しくは関連リンク先を参照。

  • 文脈IDは「-1」にしておけば自動で良きに計らってくれるので便利。
  • コストはその単語の出現率を表す。小さいほど出現率は高くなる。徐々に小さくして様子をみるといい。
  • 行の作り方が分からないときは上記の元からある辞書を見て参考にする。

user.csv

超電磁砲,-1,-1,4000,名詞,一般,*,*,*,*,超電磁砲,チョウデンジホウ,チョウデンジホウ
山田太郎,-1,-1,6893,名詞,固有名詞,人名,一般,*,*,山田太郎,ヤマダタロウ,ヤマダタロウ

 

csvファイルを辞書ファイルに変換するのには「mecab-dict-index」コマンドを利用する。Windows上で使う場合はパスの指定などが分かりづらいので以下のようにバッチファイルにしておくと便利。実際のオプションの指定方法等も下記のバッチファイルを参照又は関連リンク先を参照。

userdic.bat

@echo off
REM MeCab: 単語の追加方法
REM http://mecab.sourceforge.net/dic.html
REM
REM     * 適当なディレクトリに移動 (例: /home/foo/bar)
REM     * foo.csv というファイルを作成
REM     * foo.csv に単語を追加
REM     * 辞書のコンパイル#
REM
REM       % /usr/local/libexec/mecab/mecab-dict-index -d/usr/local/lib/mecab/dic/ipadic \
REM       -u foo.dic -f euc-jp -t euc-jp foo.csv
REM
REM           o -d DIR: システム辞書があるディレクトリ
REM           o -u FILE: FILE というユーザファイルを作成
REM           o -f charset: CSVの文字コード
REM           o -t charset: バイナリ辞書の文字コード
REM     * /home/foo/bar/foo.dic ができていることを確認
REM     * /usr/local/lib/mecab/dic/ipadic/dicrc もしくは /usr/local/etc/mecabrc に以下を追加
REM
REM       userdic = /home/foo/bar/foo.dic
REM
REM     * /usr/local/etc/mecabrc を編集する権限が無い場合は /usr/local/etc/mecabrc を ~/.mecabrc にコピーし, 上記のエントリを追加
REM     * userdic はCSVフォーマットデ複数指定可能
REM
REM        userdic = /home/foo/bar/foo.dic,/home/foo/bar2/usr.dic,/home/foo/bar3/bar.dic
REM
REM
REM
echo on

"C:\Program Files\MeCab\bin\mecab-dict-index" -d"C:\Program Files\MeCab\dic\ipadic" -u user.dic -f shift-jis -t shift-jis user.csv

pause

うまく辞書が作成出来れば以下の様になる。

20100765


関連記事


関連リンク

タグ :