しろかい!

アプリ開発や機械学習などの開発Tips.

【Mecab】ユーザ辞書の使い方

オープンソースの形態素解析器「Mecab」でユーザ辞書を使う方法のまとめです.
辞書を追加することで,形態素解析の精度を向上させることができます.

f:id:shun9167:20150423105640p:plain

はじめに

大雑把に手順を説明すると,

  1. 辞書に追加したい単語のリストを取得.
  2. 取得したリストを,辞書作成スクリプトに対応するフォーマットに変換.
  3. 辞書を作成.

となります.以下,順に説明していきます.

辞書に追加したい単語のリストを取得

今回は,Wikipediaの全記事のタイトルとはてなのキーワードリストをユーザ辞書として追加しようと思うので,まずはそれらを取得します.

# Wikipedia
$ curl -L http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-all-titles-in-ns0.gz | gunzip > jawiki-latest-all-titles-in-ns0
# はてな
$ curl -L http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv | iconv -f euc-jp -t utf-8 > keywordlist_furigana.csv

辞書作成スクリプトに対応するフォーマットに変換

まずは,変換用のスクリプトを自前で用意する必要があります.
今回は,既に用意してある以下のスクリプトを使って,先程取得したリストを変換します.

上記スクリプトを書きコマンドで実行します.
必ず取得したリストを置いているディレクトリに移動してから実行して下さい.

$ ruby mecab_dictionary_formatter.rb

辞書を作成

辞書作成スクリプトは,Mecabをインストールされた時に一緒にインストールされている「mecab-dict-index」というスクリプトです.
例えば,以下のようにして辞書作成を実行します.

$ /usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/ipadic/ -u onomasticon.dic -f utf-8 -t utf-8 onomasticon.csv

注意として,

  • /usr/local/libexec/mecab/ã‚„/usr/local/lib/mecab/dic/ipadic/の部分は適宜適切なパスに変更して下さい.環境により異なるようです.
  • onomasticon.dicは作成する辞書のファイル名です.
  • onomasticon.csvは辞書作成に用いるファイルの名前です.先ほどのmecab_dictionary_formatter.rbでは,変換後のファイルをonomasticon.csvという名前で出力するようにしています.

実際にユーザ辞書を使ってみる

mecabを実行するときに,-u [ユーザ辞書ファイル名]オプションを付けるだけでユーザ辞書が使えます.

コマンドラインから使用する場合は以下のようにします.

$ echo 'レーベンシュタイン距離' | mecab -u onomasticon.dic

また,各種プログラムから実行する場合も多いと思いますが,例えばPythonから実行する場合は以下のようにします.

m = MeCab.Tagger('-Owakati -u onomasticon.dic')

参考

mecabにwikipediaとhatenaキーワードのユーザ辞書を適用する(ついでに、辞書にない場合はそれもわかるようにするオプション付き) - すがブロ
MeCabのPythonバインディングでユーザー辞書を使用する - Symfoware