mecab

日本語形態素解析のためのエンジンです。 現状一番広く使われているようです。

入手とインストール

公式(http://taku910.github.io/mecab/)を参考。

mecab本体と辞書をインストールする必要があります。 辞書は幾つか種類がありますが、トラブル時の情報の多さから、IPA辞書を入れておくと良いでしょう。

今のご時世(2017年)なら、辞書の文字コードはeucではなくutf-8にしておいた方が便利でしょう。

./configure --with-charset=utf8

ユーザー辞書の追加

csv形式で、追加したい単語を記述します。

宇佐美,,,,名詞,固有名詞,人名,姓,*,*,うさみ,ウサミ,ウサミ
いちか,,,,名詞,固有名詞,人名,名,*,*,いちか,イチカ,イチカ

非活用の単語は1行で済みますが、活用する単語は記述が少々面倒です。 詳しくは公式ページを参考ください。 ユーザー辞書に追加したい単語は、基本的に固有名詞かと思うので、活用形を持つ単語を登録する機会はないかと思うのですが。

https://taku910.github.io/mecab/dic.html

続いて、文脈IDやコスト値を学習モデルから自動的に補完します。手動で直接入れることも可能ですが、加減が悩ましいので自動で入れた方が良いです。

まずmecab-ipadicのモデルファイルをこちらから入手します。リンクが切れていたら、公式などから辿ってください。文字コードはeucになっているので、IPA辞書がそれ以外になっている場合は、変換が必要になります。巨大なファイルなので、emacsではなくviで開くと良いです。

$ vi mecab-ipadic-2.7.0-20070801.model

先頭付近にあるcharsetをutf-8に変更します。

charset: utf-8

続いてモデルファイル自体の文字コードを変換します。

$ nkf -w --overwrite ./mecab-ipadic-2.7.0-20070801.model

これで準備が整ったので、下記のコマンドを実行します。

$ /usr/local/libexec/mecab/mecab-dict-index -m ../mecab/mecab-ipadic-2.7.0-20070801.model\
 -d /usr/local/lib/mecab/dic/ipadic -u output_dic.csv \
 -f utf-8 -t utf-8 -a input_dic.csv

csvから辞書をコンパイルします。

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

/usr/local/lib/mecab/dic/ipadic/dicrcを編集して、下記を追加します。これでユーザー辞書が使えるようになります。

userdic = /home/foo/bar/usr.dic 

トラブルシューティング

../mecab/mecab-ipadic-2.7.0-20070801.model is not a binary model. reopen it as text mode...

特にエラーメッセージではないです。

feature_index.cpp(81) [ifs] no such file or directory: /usr/local/lib/mecab/dic/ipadic/feature.def

なぜかfeature.defがインストールされていなかったので、ダウンロードしたファイルの中にあったものを、コピーして解決です。

reading user_dic.csv ... context_id.cpp(96) [it != left_.end()] cannot find LEFT-ID  for 名詞,固有名詞,人名,名.*,*,うさみ,*

これは幾つか原因がありそうですが、csvの記載内容が正しくない場合に出力されます。下記などをチェックしましょう。自分はまさかの後者でした。

  • 品詞分類がpos-id.defに含まれているものと一致するか
  • カンマが誤ってドットになっていないか
viterbi.cpp(50) [tokenizer_->open(param)] tokenizer.cpp(130) [sysdic->isCompatible(*d)] incompatible dictionary: /home/var/foo/usr.dic

文字コードが異なっているかもしれません。辞書コンパイル時の文字コード指定が適切だったか確認しましょう。


履歴

  • 2017/07/04 : bokupi 新規作成

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Tue, 04 Jul 2017 08:00:18 JST (107d)