のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

PythonからMeCabをさわろう(形態素解析)

Sponsored Links

皆さんこんにちは
お元気ですか。私はどうにもこうにも元気です。

さて、本日はMeCabについて

MeCabとは

MeCabって?

オープンソースの形態素解析エンジンで、奈良先端科学技術大学院大学出身、現GoogleソフトウェアエンジニアでGoogle 日本語入力開発者の一人である工藤拓[1][2]によって開発されている。名称は開発者の好物「和布蕪(めかぶ)」から取られた。(Wikipediaより)

端的に言うと、形態素解析やってくれるツールです。

形態素解析って?

形態素解析(けいたいそかいせき、Morphological Analysis)とは、コンピュータ等の計算機を用いた自然言語処理の基礎技術のひとつ。かな漢字変換等にも応用されている。
対象言語の文法の知識(文法のルールの集まり)や辞書(品詞等の情報付きの単語リスト)を情報源として用い、自然言語で書かれた文を形態素(Morpheme, おおまかにいえば、言語で意味を持つ最小単位)の列に分割し、それぞれの品詞を判別する作業を指す。(Wikipediaより)

自然言語処理の分野でよく利用される技術です。言葉を分割したい時によく使います。

形態素解析自体の処理は、言葉を分割して、それらに品詞を割り当てるわけですね。
MeCabを使って、例を出すと

私は 寝ることが大好きだ
私	名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
寝る	動詞,自立,*,*,一段,基本形,寝る,ネル,ネル
こと	名詞,非自立,一般,*,*,*,こと,コト,コト
が	助詞,格助詞,一般,*,*,*,が,ガ,ガ
大好き	名詞,形容動詞語幹,*,*,*,*,大好き,ダイスキ,ダイスキ
だ	助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ

インストール

mecab-ipadic は辞書らしいです。
homebrewでインストールするとどうやら32bit版がインストールされてしまうよう。
通常モードでインストールしてみました。

mecab

wget https://mecab.googlecode.com/files/mecab-0.996.tar.gz
tar -xzvf mecab-0.996.tar.gz
cd mecab-0.996
./configure
make
make install
make check

mecab-ipadic

wget https://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf8
make all
make install

check

mecab
私は本を買う
私	名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
本	名詞,一般,*,*,*,*,本,ホン,ホン
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
買う	動詞,自立,*,*,五段・ワ行促音便,基本形,買う,カウ,カウ
EOS

Python用のMeCabライブラリ

インストール

wget https://mecab.googlecode.com/files/mecab-python-0.996.tar.gz
tar zxvf mecab-python-0.996.tar.gz 
cd mecab-python-0.996
export CFLAGS=-Qunused-arguments
export CPPFLAGS=-Qunused-arguments
python setup.py build
python setup.py install

動作確認

>>> import MeCab
>>> m = MeCab.Tagger ("-Ochasen")
>>> print m.parse ("今日もしないとね")
今日	キョウ	今日	名詞-副詞可能		
も	モ	も	助詞-係助詞		
し	シ	する	動詞-自立	サ変・スル	未然形
ない	ナイ	ない	助動詞	特殊・ナイ	基本形
と	ト	と	助詞-接続助詞		
ね	ネ	ね	助詞-終助詞		
EOS

homebrewでインストールすると…

brew install mecab
brew install mecab-ipadic

なんかエラー出た…

wget https://mecab.googlecode.com/files/mecab-python-0.996.tar.gz
tar -xzvf mecab-python-0.996.tar.gz
cd mecab-python-0.996
python setup.py build
running install
running build
running build_py
running build_ext
building '_MeCab' extension
cc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch x86_64 -arch i386 -pipe -I/usr/local/Cellar/mecab/0.996/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c MeCab_wrap.cxx -o build/temp.macosx-10.9-intel-2.7/MeCab_wrap.o
clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
error: command 'cc' failed with exit status 1

!?

$ export CFLAGS=-Qunused-arguments
$ export CPPFLAGS=-Qunused-arguments