MeCabのインストール
MeCabは日本語の文章を単語に分解してそれぞれの品詞や活用形を表示してくれる形態素解析のソフト。 MeCabについて詳しくはこちらを参考のこと。
自然言語解析をするならとりあえず入れておいた方が良い。
インストルールは上記サイトにもあるが、最新ソースをダウンロードしてきて、本体は
tar zxfv mecab-X.X.tar.gz cd mecab-X.X ./configure --enable-utf8-only make make check sudo make install
辞書は
tar zxfv mecab-ipadic-2.7.0-xxxx cd mecab-ipadic-2.7.0-xxxx ./configure --with-charset=utf8 make make check sudo make install
とする。ここで文字コードをutf8に固定している。しなくても良いのだが、utf8が最近はいろいろなテキストのデファクトスタンダードなコードになりつつあるので、固定しておいて入力データを変換した方がMeCabで見分けて解析するより何かと楽なのでそうしている。
インストールがうまくいっていれば、
mecab -v
でバージョンが表示される。
実際にテストで解析したければ、標準入力などでテキストを与える。
$ echo "庭には二羽鶏がいる" | mecab 庭 名詞,一般,*,*,*,*,庭,ニワ,ニワ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 二 名詞,数,*,*,*,*,二,ニ,ニ 羽 名詞,接尾,助数詞,*,*,*,羽,ワ,ワ 鶏 名詞,一般,*,*,*,*,鶏,ニワトリ,ニワトリ が 助詞,格助詞,一般,*,*,*,が,ガ,ガ いる 動詞,自立,*,*,一段,基本形,いる,イル,イル EOS
辞書の更新
残念ながらデフォルトのままでは辞書の単語数が少なすぎて、あまり正確に解析できない。 自分でも単語を追加できるが、精度をあげるには相当数を追加する必要があり、ちょっと難しい。 幸いこちら(http://diary.overlasting.net/2015-03-13-1.html)で新語などを追加している方がいるので、ありがたく使わせていただく。 辞書のインストールと使い方はリンク先参照のこと。
pythonのMeCabバインディングのインストール
MeCabには各種スクリプト言語 (perl, ruby, python, Java) から使うためのバインディングがある。 ここでpythonを選んだのは、世界的には最も普及したスクリプト言語であり、各種のライブラリや(日本語にこだわらなければ)たくさんの資料があるため。
sudo pip install mecab-python
とすればよい。
pythonからの使い方は
import MeCab meCabTagger= MeCab.Tagger("mecabrc") res = meCabTagger.parseToNode("庭には二羽鶏がいる") while res: print res.surface print res.feature res = res.next
結果は
BOS/EOS,*,*,*,*,*,*,*,* 庭 名詞,一般,*,*,*,*,庭,ニワ,ニワ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 二 名詞,数,*,*,*,*,二,ニ,ニ 羽 名詞,接尾,助数詞,*,*,*,羽,ワ,ワ 鶏 名詞,一般,*,*,*,*,鶏,ニワトリ,ニワトリ が 助詞,格助詞,一般,*,*,*,が,ガ,ガ いる 動詞,自立,*,*,一段,基本形,いる,イル,イル BOS/EOS,*,*,*,*,*,*,*,*
つまり、「surface」にもとの単語が入り、「feature」に品詞や活用などがコンマ区切りのCSVのテキストで入っている。
featureは、「品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音」と入っている。 品詞細分類については形態素解析ツールの品詞体系を参照のこと。
>>> res = meCabTagger.parseToNode(u"庭には二羽鶏がいる") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Library/Python/2.7/site-packages/MeCab.py", line 282, in parseToNode def parseToNode(self, *args): return _MeCab.Tagger_parseToNode(self, *args) TypeError: in method 'Tagger_parseToNode', argument 2 of type 'char const *'
Mecabの初期化ではオプションを使える。つまり例えば他の辞書を使いたければ、
mecabTagger = MeCab.Tagger("-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd/")
とする。
ぺージ情報 | |
---|---|
ぺージ名 : | 自然言語解析/MeCabをpythonで使う |
ページ別名 : | 未設定 |
ページ作成 : | njf |
閲覧可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |
編集可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |