ふゆみけ このページをアンテナに追加 RSSフィード

2012-01-13

[][]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

--------------------------------------------------------------

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証