- 環境構築
- 使い方
- Node.js から Mecabを使う
- Python3 から MeCab を使う
環境構築
インストール
$ brew install mecab
$ mecab --version
mecab of 0.996
辞書の追加
このままでは辞書がないので追加する。
辞書の場所は /usr/local/lib/mecab/dic/
配下。
mecab-ipadic-neologd のインストール
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd/
$ ./bin/install-mecab-ipadic-neologd -n -p /usr/local/lib/mecab/dic/neologd
最後に本当にインストールするか聞かれるから yes
or no
をタイプする。
なお、筆者の環境では足りなかった以下のコマンドを追加した。
$ brew install xz
デフォルトの辞書を変更する
mecab -d /usr/local/lib/mecab/dic/neologd/
でも辞書を指定して実行できるが、めんどくさいのでデフォルトを変更する。
/usr/local/etc/mecabrc
の以下を変更する。
dicdir = /usr/local/lib/mecab/dic/ipadic
# 以下のように変更
dicdir = /usr/local/lib/mecab/dic/neologd
使い方
インタラクティブモードは以下。(そのままコマンドを打つ)
$ mecab
おはよう
おはよう 感動詞,*,*,*,*,*,おはよう,オハヨウ,オハヨー
EOS
第一引数にファイルを指定することもでき、 -o
オプションで出力も可能。
$ mecab [入力ファイル] -o [出力ファイル]
形態素の見方
表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音
「表層形」は文章からそのまま抜き出した形。
なお MeCab の品詞体系は IPA品詞体系というものが使われている。(茶筅と同じ)
未知語推定
MeCabには未知語を推定する機能があり、デフォルトでは有効。
未知語を抽出したい場合は -x
( --unk-feature
)で未知語の表示形式を指定して実行する。
$ mecab -x "undef"
にゃほにゃほたまくろー
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
ゃほにゃほたまくろ undef
ー undef
EOS
ユーザ辞書の追加
自分で単語を登録したいときの方法。
csv ファイルに 1 行 1 単語で以下の形式で作成する。
表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,読み,発音
例えば以下。
にゃほにゃほたまくろー,1223,1223,6058,名詞,固有名詞,人名,名,*,*,ニャホニャホタマクロー,ニャホニャホタマクロー,ニャホニャホタマクロー
- 左文脈ID
- その単語を左から見たときの内部状態ID
/usr/local/lib/mecab/dic/neologd/left-id.def
から該当する ID を選択- 空にしておくと mecab-dict-index が自動的に ID を付与する
- 右文脈ID
- その単語を右から見たときの内部状態ID
/usr/local/lib/mecab/dic/neologd/right-id.def
から該当する ID を選択- 空にしておくと, mecab-dict-index が自動的に ID を付与する
- コスト
- その単語がどれだけ出現しやすいかを示す
- 小さいほど, 出現しやすいという意味
- 似たような単語と 同じスコアを割り振り, その単位で切り出せない場合は, 徐々に小さくしていけばいい
以下のコマンドを実行する。
$ /usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/neologd -u user-dic.dic -f utf8 -t utf8 user-dic.csv
- -d DIR
- システム辞書があるディレクトリ
- -u FILE
- FILE というユーザファイルを作成
- -f charset
- CSVの文字コード
- -t charset
- バイナリ辞書の文字コード
/usr/local/lib/mecab/dic/user-dic/
ディレクトリを作成し、上記のコマンドで作成した user-dic.dic
を配置。
/usr/local/etc/mecabrc
に以下を追記。
userdic = /usr/local/lib/mecab/dic/user-dic/user-dic.dic
分かち書き
$ mecab -Owakati input.txt > output_wakati.txt
Node.js から Mecabを使う
上記の手順で MeCab をセットアップしていることが前提。
$ yarn add mecab-async
let MeCab = new require('mecab-async');
let mecab = new MeCab();
let input = process.argv[2];
mecab.parse(input,(err,result)=>{
if(err){
}
console.log(result);
});
$ node app.js "にゃほにゃほたまくろー"
[ [ 'にゃほにゃほたまくろー',
'名詞',
'固有名詞',
'人名',
'名',
'*',
'*',
'ニャホニャホタマクロー',
'ニャホニャホタマクロー',
'ニャホニャホタマクロー' ] ]
Python3 から MeCab を使う
$ pip install mecab-python3
import MeCab
mc = MeCab.Tagger("")
print (mc.parse("形態素解析システムMeCab入門"))
MeCab.Tagger
の引数に mecab
コマンドの引数を指定することができる。
また、 parse の結果は文字列になっている。
おすすめ書籍
リンク
リンク