Ad

MeCab編集のインストール anchor.png Edit

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
Page Top

辞書の更新 anchor.png Edit

残念ながらデフォルトのままでは辞書の単語数が少なすぎて、あまり正確に解析できない。 自分でも単語を追加できるが、精度をあげるには相当数を追加する必要があり、ちょっと難しい。 幸いこちら(http://diary.overlasting.net/2015-03-13-1.html)で新語などを追加している方がいるので、ありがたく使わせていただく。 辞書のインストールと使い方はリンク先参照のこと。

Page Top

pythonのMeCab編集バインディングのインストール anchor.png Edit

MeCab編集には各種スクリプト言語 (perl, ruby, python, Java) から使うためのバインディングがある。 ここでpythonを選んだのは、世界的には最も普及したスクリプト言語であり、各種のライブラリや(日本語にこだわらなければ)たくさんの資料があるため。

pythonのMeCab編集バインディングのインストールは

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,活用型,活用形,原形,読み,発音」と入っている。 品詞細分類については形態素解析ツールの品詞体系を参照のこと。

ここでMeCab編集への入力はstr型で無くてはならない。

>>> 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/")

とする。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 3219, today: 1, yesterday: 0
初版日時: 2016-05-27 (金) 11:24:05
最終更新: 2018-07-15 (日) 17:07:53 (JST) (153d) by njf
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失


NJF