MeCab&mecab-pythonをインストール その1

年末にMeCabのVersion 0.99がリリースされてましたねー
よりによってリリース日がクリスマスイブってww

ほい,てなわけでMeCab本体&Pythonバインディングのインストールです.
環境はWin7 64bit

本体のインストール

http://mecab.sourceforge.net/#download
ここからどうぞ.
僕はWindowsユーザーなのでソースからビルドしようとか無謀なことは考えずにバイナリ落としました.仕方ないね

Pythonバインディングのインストール

こっちはバイナリ配布されてないんで自力でビルドしないといけません.
VisualC++ 2008 Express Edition
をインストールしていない方は入れておいてください.

http://code.google.com/p/mecab/downloads/list
ここから
mecab-python-0.99.tar.gz
を落としましょう.
解凍してディレクトリ移動して
python setup.py build すると...

Traceback (most recent call last):
  File "setup.py", line 13, in <module>
    version = cmd1("mecab-config --version"),
  File "setup.py", line 7, in cmd1
    return os.popen(str).readlines()[0][:-1]
IndexError: list index out of range

怒られます.Windows用のバイナリパッケージにはmecab-configが含まれてないのが原因です.
なのでsetup.pyを書き換えてMeCabのバージョンとインストールパスを直接教えてあげましょう.

setup.py

#!/usr/bin/env python

from distutils.core import setup,Extension

setup(name = "mecab-python",
	version = '0.99',
	py_modules=["MeCab"],
	ext_modules = [
		Extension("_MeCab",
			["MeCab_wrap.cxx",],
			include_dirs=[r"C:\Program Files (x86)\MeCab\sdk"],
			library_dirs=[r"C:\Program Files (x86)\MeCab\sdk"],
			libraries=['libmecab'])
			])

http://www.freia.jp/taka/blog/759/ を参考にしました)

C:\Program Files (x86)\MeCab の部分は各自のインストールパスに合わせて書き換えてください.

これで
python setup.py build
python setup.py install
すればインストール完了です.やったねたえちゃん!形態素解析ができるよ!!

ところが...

サンプルは解凍したフォルダのtest.pyにあります.
これが動けば正しくインストールできたことになりますね.

% python test.py
  File "test.py", line 7
SyntaxError: Non-ASCII character '\xe5' in file test.py on line 7, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

エラーが出ましたがこの程度で慌ててはいけません.エンコーディング関連のエラーはPythonにはよくあることです(よくあっちゃ困るんだが).
これはスクリプトファイルの先頭でエンコーディングの指定をしてないのが原因なので,
#!/usr/bin/python の下(2行目)に
# -*- coding: utf-8 -*-
を追加しましょう.これで問題ないはずです.

C:\Users\hisa\Desktop\mecab-python-0.99>python test.py
0.99

(中略)

Traceback (most recent call last):
  File "test.py", line 25, in <module>
    len = n.sentence_length;
  File "C:\Users\hisa\Desktop\mecab-python-0.99\MeCab.py", line 127, in <lambda>

    __getattr__ = lambda self, name: _swig_getattr(self, Node, name)
  File "C:\Users\hisa\Desktop\mecab-python-0.99\MeCab.py", line 54, in _swig_getattr
    raise AttributeError(name)
AttributeError: sentence_length

また怒られた...
でもご安心ください.これはmecab-pythonのバグじゃなくて単なるtest.pyのバグです.
バグっつーか,MeCabは0.99で一部仕様変更したのですがtest.pyがそれに対応して書き換えられていないだけです.
なので使用変更に合わせて書き換えたtest.pyをこちらに...ですが長くなってきたので別エントリに


http://d.hatena.ne.jp/fuyumi3/20120113/1326385607
追記:2012/01/18 ----------------------------------------------
最新版は↓です
http://d.hatena.ne.jp/fuyumi3/20120118/1326830586

                                                                                                                          • -