趣味なこと興味あることのメモ代わりです。

×
こちらのページがとても分かりやすくまとめられているので、これをベースにまとめてみます。

Windows7 32bit + Python 2.7.4 で MeCab 0.996 の Python バインディングをインストール

Python 2.7.4 のインストール

公式ページからインストーラをダウンロードして、インストールする。
インストール先は C:\Python27\ にする。
インストール後に C:\Python27Pathを通す。

MeCab 0.996 のインストール


MeCab公式サイトから、Windows版インストーラをダウンロードする。
http://mecab.googlecode.com/svn/trunk/mecab/doc/in...

インストールでは辞書の文字コードの選択を UTF-8 にする。

インストール後に C:\Program Files\MeCab\binPathを通す。

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

公式のページから辿って下記ダウンロードページから mecab-python-0.996.tar.gz をダウンロードして解凍する。
https://code.google.com/p/mecab/downloads/list

setup.py の書き換え
setup.py をテキストエディタで開き、下記のように書き換える。
#!/usr/bin/env python

from distutils.core import setup,Extension,os
import string

def cmd1(str):
    return os.popen(str).readlines()[0][:-1]

def cmd2(str):
    return string.split (cmd1(str))

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

vcvarsall.bat の入手

この時点では setup.py を実行しても下記のエラーが出る。
error: Unable to find vcvarsall.bat

vcvarsall.bat を入手するために、Virtual C++ 2008 Express Edition をインストールする。
(Silverlight Runtime と SQL Server 2008 Express Edition はいらない)

インストール後に、 C:\Program Files\Microsoft Visual Studio 9.0\VCPathを通す。

mecab.h に追記

この時点でも setup.py を実行してもまだ下記のエラーが出る。
MeCab_wrap.xcc(5583) : error C2039: 'set_result' : 'MeCab::Lattice' のメンバではありません。
        C:\Progam Files\MeCab\sdk\mecab.h(778) : 'MeCab::Lattice' の宣言を確認してください。

アドバイス通り C:\Progam Files\MeCab\sdk\mecab.h を確認する。

テキストエディタを管理者として実行で起動して、C:\Progam Files\MeCab\sdk\mecab.h を開く。

778行目にあるLatticeクラスにset_resultを追加して保存する。
/**
 * Lattice class
 */
class MECAB_DLL_CLASS_EXTERN Lattice {
public:

  virtual void set_result(const char *str)        = 0; //この1行を追加

  /**
   * Clear all internal lattice data.
   */
  virtual void clear()              = 0;


とりあえず、こうしたら動いた感じです。

バインディングのビルドとインストール

準備ができたので、python setup.py buildpython setup.py install をコマンドプロンプトで実行します。

C:\mecab-python-0.996>python setup.py build
running build
running build_py
running build_ext
building '_MeCab' extension
C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W
3 /GS- /DNDEBUG "-IC:\Program Files\MeCab\sdk" -IC:\Python27\include -IC:\Python
27\PC /TpMeCab_wrap.cxx /Fobuild\temp.win32-2.7\Release\MeCab_wrap.obj
MeCab_wrap.cxx
MeCab_wrap.cxx(3747) : warning C4530: C++ 例外処理を使っていますが、アンワインド
 セマンティクスは有効にはなりません。/EHsc を指定してください。
C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\link.exe /DLL /nologo /INCRE
MENTAL:NO "/LIBPATH:C:\Program Files\MeCab\sdk" /LIBPATH:C:\Python27\libs /LIBPA
TH:C:\Python27\PCbuild libmecab.lib /EXPORT:init_MeCab build\temp.win32-2.7\Rele
ase\MeCab_wrap.obj /OUT:build\lib.win32-2.7\_MeCab.pyd /IMPLIB:build\temp.win32-
2.7\Release\_MeCab.lib /MANIFESTFILE:build\temp.win32-2.7\Release\_MeCab.pyd.man
ifest
   ライブラリ build\temp.win32-2.7\Release\_MeCab.lib とオブジェクト build\temp.
win32-2.7\Release\_MeCab.exp を作成中

C:\mecab-python-0.996>python setup.py install
running install
running build
running build_py
running build_ext
running install_lib
copying build\lib.win32-2.7\MeCab.py -> C:\Python27\Lib\site-packages
copying build\lib.win32-2.7\_MeCab.pyd -> C:\Python27\Lib\site-packages
byte-compiling C:\Python27\Lib\site-packages\MeCab.py to MeCab.pyc
running install_egg_info
Writing C:\Python27\Lib\site-packages\mecab_python-0.996-py2.7.egg-info

C:\mecab-python-0.996>

動作テスト


インストールできたので python test.py で動作テストしてみる。
(コマンドプロンプト上でUTF-8を表示しようとしているため文字化けしています。)
C:\mecab-python-0.996>python test.py
0.996
螟ェ驛・蜷崎ゥ・蝗コ譛牙錐隧・莠コ蜷・蜷・*,*,螟ェ驛・繧ソ繝ュ繧ヲ,繧ソ繝ュ繝シ
縺ッ     蜉ゥ隧・菫ょ勧隧・*,*,*,*,縺ッ,繝・繝ッ
縺薙・  騾」菴楢ゥ・*,*,*,*,*,縺薙・,繧ウ繝・繧ウ繝・
譛ャ     蜷崎ゥ・荳?闊ャ,*,*,*,*,譛ャ,繝帙Φ,繝帙Φ
繧・蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,繧・繝イ,繝イ
莠・蜷崎ゥ・謨ー,*,*,*,*,莠・繝・繝・
驛・蜷崎ゥ・荳?闊ャ,*,*,*,*,驛・繝ュ繧ヲ,繝ュ繝シ
繧・蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,繧・繝イ,繝イ
隕・蜍戊ゥ・閾ェ遶・*,*,荳?谿オ,騾」逕ィ蠖「,隕九k,繝・繝・
縺・蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
螂ウ諤ァ  蜷崎ゥ・荳?闊ャ,*,*,*,*,螂ウ諤ァ,繧ク繝ァ繧サ繧、,繧ク繝ァ繧サ繧、
縺ォ     蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,縺ォ,繝・繝・
貂。縺・蜍戊ゥ・閾ェ遶・*,*,莠疲ョオ繝サ繧オ陦・騾」逕ィ蠖「,貂。縺・繝ッ繧ソ繧キ,繝ッ繧ソ繧キ
縺・蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
縲・險伜捷,蜿・轤ケ,*,*,*,*,縲・縲・縲・
EOS

        BOS/EOS,*,*,*,*,*,*,*,*
螟ェ驛・ 蜷崎ゥ・蝗コ譛牙錐隧・莠コ蜷・蜷・*,*,螟ェ驛・繧ソ繝ュ繧ヲ,繧ソ繝ュ繝シ
縺ッ     蜉ゥ隧・菫ょ勧隧・*,*,*,*,縺ッ,繝・繝ッ
縺薙・  騾」菴楢ゥ・*,*,*,*,*,縺薙・,繧ウ繝・繧ウ繝
譛ャ     蜷崎ゥ・荳?闊ャ,*,*,*,*,譛ャ,繝帙Φ,繝帙Φ
繧・    蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,繧・繝イ,繝イ
莠・    蜷崎ゥ・謨ー,*,*,*,*,莠・繝・繝
驛・    蜷崎ゥ・荳?闊ャ,*,*,*,*,驛・繝ュ繧ヲ,繝ュ繝シ
繧・    蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,繧・繝イ,繝イ
隕・    蜍戊ゥ・閾ェ遶・*,*,荳?谿オ,騾」逕ィ蠖「,隕九k,繝・繝
縺・    蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
螂ウ諤ァ  蜷崎ゥ・荳?闊ャ,*,*,*,*,螂ウ諤ァ,繧ク繝ァ繧サ繧、,繧ク繝ァ繧サ繧、
縺ォ     蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,縺ォ,繝・繝
貂。縺・ 蜍戊ゥ・閾ェ遶・*,*,莠疲ョオ繝サ繧オ陦・騾」逕ィ蠖「,貂。縺・繝ッ繧ソ繧キ,繝ッ繧ソ繧キ
縺・    蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
縲・    險伜捷,蜿・轤ケ,*,*,*,*,縲・縲・縲
        BOS/EOS,*,*,*,*,*,*,*,*
EOS
EOS
filename: C:\Program Files\MeCab\etc\..\dic\ipadic\sys.dic
charset: UTF-8
size: 392126
type: 0
lsize: 1316
rsize: 1316
version: 102

C:\mecab-python-0.996>

対話型だとこんな感じです。
(コマンドプロンプト上でUTF-8を表示しようとしているため文字化けしています。)
C:\Users\Syuichi\Desktop\mecab-python-0.996>python
Python 2.7.4 (default, Apr  6 2013, 19:54:46) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import MeCab
>>> m = MeCab.Tagger ("-Ochasen")
>>> print m.parse ("今日もしないとね")
今日もし・今日もし・今日もし・險伜捷-荳?闊ャ
ネ・ネ・ネ・蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・
「・「・「・險伜捷-荳?闊ャ
ニ・ニ・ニ・蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・
ヒ       ヒ       ヒ       險伜捷-荳?闊ャ
EOS

>>>














コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます