mac上で実行するために文字コードをUTF-8にしたりして居いる以外は殆ど公式サイトと変わらない。
■インストール
brew install mecab
brew install mecab-ipadic
これによってインストールされるmecab-ipadicには、csvが含まれず最小構成となっているため、別途ダウンロードする。
wget https://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
wget https://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.model.bz2
tar xvzf mecab-ipadic-2.7.0-20070801.tar.gz
bzip2 -d mecab-ipadic-2.7.0-20070801.model.bz2
mv mecab-ipadic-2.7.0-20070801.model mecab-ipadic-2.7.0-20070801/
mv mecab-ipadic-2.7.0-20070801 ~/
cd ~/mecab-ipadic-2.7.0-20070801/ #適当な場所
設定ファイル
vim /usr/local/Cellar/mecab/0.996/etc/mecabrc
以下のようになっている。
dicdir = /usr/local/Cellar/mecab/0.996/lib/mecab/dic/ipadic
UTF-8化
後述のmecab-cost-trainに文字コードオプションがなさそうで上手くいかないため変換する。
cp -r mecab-ipadic-2.7.0-20070801 mecab-ipadic-2.7.0-20070801.utf8
cd mecab-ipadic-2.7.0-20070801.utf8
nkf -w -Lu --overwrite mecab-ipadic-2.7.0-20070801.model
find `pwd` -type f -exec grep -Il "" {} \; | xargs -I{} nkf -w -Lu --overwrite {}
#find `pwd` -maxdepth 1 -type f -name '*.csv' | xargs -I{} nkf -w -Lu --overwrite {} # CSVだけじゃだめ
grep
UTF-8にファイルを変換していれば問題ないのだが、EUC-JPのままの場合は以下のようにする必要がある。
ggrep `echo "名詞,固有名詞,人名" | nkf -e` -r Noun.* | nkf -w
ターミナルをEUC-JPにしてもいいのだが、これだけのために設定変更するのは面倒。
■新規単語の追加
vim add.csv
小島よしお,1289,1289,7438,名詞,固有名詞,人名,一般,*,*,小島よしお,コジマヨシオ
なう,0,0,0,助詞,終助詞,*,*,*,*,なう,ナウ,ナウ
まーす,0,0,0,助動詞,*,*,*,特殊・マス,基本形,まーす,マース,マース
コストなどの推定
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index -m mecab-ipadic-2.7.0-20070801.model -f utf8 -t utf8 -d ~/mecab-ipadic-2.7.0-20070801/ -u add2.csv -a add.csv
新規単語の学習
cオプションでUTF-8を指定するのを忘れるとEUC-JPで出力されて、mecabコマンドの出力が文字化けする。
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index -f utf8 -t utf8 -c utf8 -d ./ -o ./
学習データの作成
以下の例を用いる。タブ区切りであることに注意する必要がある。
vim train
京都 名詞,固有名詞,地域,一般,*,*,京都,キョウト,キョート
なう 助詞,終助詞,*,*,*,*,なう,ナウ,ナウ
EOS
ラーメン 名詞,一般,*,*,*,*,ラーメン,ラーメン,ラーメン
なう 助詞,終助詞,*,*,*,*,なう,ナウ,ナウ
EOS
行っ 動詞,自立,*,*,五段・カ行促音便,連用タ接続,行く,イッ,イッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
き 動詞,非自立,*,*,カ変・クル,連用形,くる,キ,キ
まーす 助動詞,*,*,*,特殊・マス,基本形,まーす,マース,マース
EOS
以下のコマンドで学習させる。new_modelがutf8とeuc-jpが混在で出力される
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-cost-train -M mecab-ipadic-2.7.0-20070801.model -d ./ train new_model
mkdir new_dictionary
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-gen -d ./ -o ./new_dictionary -m new_model
以下のコマンドで辞書をコンパイルする。
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index -f utf8 -t utf8 -c utf8 -d ./ -o ./new_dictionary
以下のコマンドで辞書を指定してmecabを起動する。
mecab -d ./new_dictionary
binary以外、dictionaryはgit管理してもいいかもしれない。
■ユーザー辞書
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index -d ./ -u add.dic -f utf8 -t utf8 add.csv
mecab -u add.dic
■UniDic
wget http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Funidic%2F58338%2Funidic-mecab-2.1.2_model.zip
wget http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Funidic%2F58338%2Funidic-mecab-2.1.2_src.zip
unzip unidic-mecab-2.1.2_src.zip
unzip unidic-mecab-2.1.2_model.zip
cd unidic-mecab-2.1.2_src
./configure
make
vim dicrc
以下のようにして出力形式を揃える
;output-format-type = unidic
前述のcsvの形式でも学習はできる。しかしlex.csvを見ると以下の形式となっている。
表層形,左文脈ID,右文脈ID,コスト,品詞大分類,品詞中分類,品詞小分類,品詞細分類,活用型,活用形,語彙素読み,語彙素(語彙素表記+語彙素細分類),書字形出現形,発音形出現形,書字形基本形,発音形基本形,語種,語頭変化型,語頭変化形,語末変化型,語末変化形
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index -d ./ -o ./