Ad

MeCabEditのインストール anchor.png Edit

MeCabEditは日本語の文章を単語に分解してそれぞれの品詞や活用形を表示してくれる形態素解析のソフト。 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が最近はいろいろなテキストのデファクトスタンダードなコードになりつつあるので、固定しておいて入力データを変換した方がMeCabEditで見分けて解析するより何かと楽なのでそうしている。

インストールがうまくいっていれば、

mecab -v

でバージョンが表示される。

実際にテストで解析したければ、標準入力などでテキストを与える。

$ echo "庭には二羽鶏がいる" | mecab
庭	名詞,一般,*,*,*,*,庭,ニワ,ニワ
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
二	名詞,数,*,*,*,*,二,ニ,ニ
羽	名詞,接尾,助数詞,*,*,*,羽,ワ,ワ
鶏	名詞,一般,*,*,*,*,鶏,ニワトリ,ニワトリ
が	助詞,格助詞,一般,*,*,*,が,ガ,ガ
いる	動詞,自立,*,*,一段,基本形,いる,イル,イル
EOS
Page Top

辞書の更新 anchor.png Edit

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

Page Top

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

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

pythonのMeCabEditバインディングのインストールは

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

ここでMeCabEditへの入力は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/")

とする。


Front page   Edit Freeze Diff Backup Upload Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 3714, today: 5, yesterday: 0
Princeps date: 2016-05-27 (Fri) 11:24:05
Last-modified: 2018-07-15 (Sun) 17:07:53 (JST) (281d) by njf
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失


NJF