PythonからMeCabを使ってみる。
Pythonからオープンソースの形態素解析エンジンMeCabを利用してみる。
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 名詞,一般,*,*,*,*,* 活用 名詞,サ変接続,*,*,*,*,活用,カツヨウ,カツヨー オフィス 名詞,一般,*,*,*,*,オフィス,オフィス,オフィス : :