* mecab [#s6b4c636]

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

** 入手とインストール [#pe306bfe]

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

-[[ダウンロード:http://taku910.github.io/mecab/#download]]
-[[インストール:http://taku910.github.io/mecab/#install]]

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

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

 ./configure --with-charset=utf8

** ユーザー辞書の追加 [#gc075b5f]

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

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

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

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

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

まずmecab-ipadicのモデルファイルを[[こちら:https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7bnc5aFZSTE9qNnM]]から入手します。リンクが切れていたら、公式などから辿ってください。文字コードは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
  -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 

*** トラブルシューティング [#s636c01e]

 ../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

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

----

** 履歴 [#v32a7772]

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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS