PythonからMeCabを使ってみる。

Pythonからオープンソース形態素解析エンジンMeCabを利用してみる。

1.mecab-pythonのインストール。

wget http://mecab.googlecode.com/files/mecab-python-0.996.tar.gz
tar xvzf mecab-python-0.996.tar.gz
cd mecab-python-0.996
python setup.py build
python setup.py install

なお、上記だけだとlibmecab.so.2が見つからないと言ってくるので

# python
Python 2.4.3 (#1, Jun 18 2012, 08:55:31) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MeCab
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/root/mecab-python-0.996/MeCab.py", line 29, in ?
    import _MeCab
ImportError: libmecab.so.2: cannot open shared object file: No such file or directory


/etc/ld.so.confに「/usr/local/lib」を追加し

vi /etc/ld.so.conf
nclude ld.so.conf.d/*.conf
/usr/local/lib ← この行を追加

ldconfigを実行する。

ldconfig


2.Yahoo!JAPANのトップページをPythonで読み込んで、テキストを語句解析してみる。

import urllib2
import lxml.html
import MeCab


opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; YTB720; GTB6.3; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)')]

mecab = MeCab.Tagger("mecabrc")

html = opener.open('http://www.yahoo.co.jp').read()
root = lxml.html.fromstring(html)
texts = root.xpath('//body')
for text in texts:
    print mecab.parse(text.text_content().encode('utf-8')) 




(出力結果)
Yahoo	名詞,固有名詞,組織,*,*,*,*
!	名詞,サ変接続,*,*,*,*,*
BB	名詞,一般,*,*,*,*,*
ヤフオク	名詞,一般,*,*,*,*,*
!	名詞,サ変接続,*,*,*,*,*
My	名詞,一般,*,*,*,*,*
Yahoo	名詞,一般,*,*,*,*,*
!	名詞,サ変接続,*,*,*,*,*
ツール	名詞,一般,*,*,*,*,ツール,ツール,ツール
バー	名詞,一般,*,*,*,*,バー,バー,バー
ショッピング	名詞,サ変接続,*,*,*,*,ショッピング,ショッピング,ショッピング
Yahoo	名詞,一般,*,*,*,*,*
!	名詞,サ変接続,*,*,*,*,*
きっ	動詞,非自立,*,*,五段・ラ行,連用タ接続,きる,キッ,キッ
ず	助動詞,*,*,*,特殊・ヌ,連用ニ接続,ぬ,ズ,ズ
カテゴリ	名詞,一般,*,*,*,*,カテゴリ,カテゴリ,カテゴリ
一覧	名詞,サ変接続,*,*,*,*,一覧,イチラン,イチラン
サイト	名詞,一般,*,*,*,*,サイト,サイト,サイト
の	助詞,連体化,*,*,*,*,の,ノ,ノ
登録	名詞,サ変接続,*,*,*,*,登録,トウロク,トーロク
無料	名詞,一般,*,*,*,*,無料,ムリョウ,ムリョー
ID	名詞,一般,*,*,*,*,*
活用	名詞,サ変接続,*,*,*,*,活用,カツヨウ,カツヨー
オフィス	名詞,一般,*,*,*,*,オフィス,オフィス,オフィス
:
: