##課題
- Python から MeCab の形態素解析の機能を利用可能にする。
##手法
- MeCab の Python バインディングをビルド/インストールする。
##前提
- 対象: mecab-python-0.996.tar.gz
- 環境: Windows 8.1 64bit, Python 2.7, MeCab 0.996
##内容
1. ビルド環境の構築
- Visual Studio 2008 Express Edition with Service Pack 1 をインストールする。
- Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 をインストールする。
2. libmecab.lib と libmecab.dll の作成(MeCab のビルド)
- mecab-0.996.tar.gz(MeCabのソース)をダウンロードする。
- mecab-0.996\src\feature_index.cpp の 356 行目を修正する。
feature_index.cpp.patch
--- mecab-0.996.org/src/feature_index.cpp Sun Nov 25 14:35:33 2012
+++ mecab-0.996/src/feature_index.cpp Sat Mar 1 11:19:20 2014
@@ -353,7 +353,7 @@
if (!r) goto NEXT;
os_ << r;
} break;
- case 't': os_ << (size_t)path->rnode->char_type; break;
+ case 't': os_ << (unsigned int)path->rnode->char_type; break;
case 'u': os_ << ufeature; break;
case 'w':
if (path->rnode->stat == MECAB_NOR_NODE) {
- mecab-0.996\src\writer.cpp の 260 行目を修正する。
writer.cpp.patch
--- mecab-0.996.org/src/writer.cpp Sun Sep 30 01:44:27 2012
+++ mecab-0.996/src/writer.cpp Sat Mar 1 11:20:32 2014
@@ -257,7 +257,7 @@
// input sentence
case 'S': os->write(lattice->sentence(), lattice->size()); break;
// sentence length
- case 'L': *os << lattice->size(); break;
+ case 'L': *os << (unsigned int)lattice->size(); break;
// morph
case 'm': os->write(node->surface, node->length); break;
case 'M': os->write(reinterpret_cast<const char *>
- mecab-0.996\src\Makefile.msvc.in の 6 行目を修正する。
Makefile.msvc.in.patch
--- mecab-0.996.org/src/Makefile.msvc.in Sun Sep 30 01:44:27 2012
+++ mecab-0.996/src/Makefile.msvc.in Thu Mar 6 02:36:41 2014
@@ -3,7 +3,7 @@
LINK=link.exe
CFLAGS = /EHsc /O2 /GL /GA /Ob2 /nologo /W3 /MT /Zi /wd4800 /wd4305 /wd4244
-LDFLAGS = /nologo /OPT:REF /OPT:ICF /LTCG /NXCOMPAT /DYNAMICBASE /MACHINE:X86 ADVAPI32.LIB
+LDFLAGS = /nologo /OPT:REF /OPT:ICF /LTCG /NXCOMPAT /DYNAMICBASE /MACHINE:X86_amd64 ADVAPI32.LIB
DEFS = -D_CRT_SECURE_NO_DEPRECATE -DMECAB_USE_THREAD \
-DDLL_EXPORT -DHAVE_GETENV -DHAVE_WINDOWS_H -DDIC_VERSION=@DIC_VERSION@ \
-DVERSION="\"@VERSION@\"" -DPACKAGE="\"mecab\"" \
- mecab-0.996\src で以下を実行する。
> call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" X86_amd64
> nmake -f Makefile.msvc.in
- mecab-0.996\src に libmecab.lib と libmecab.dll が作成される。
3. インストーラの作成(Python バインディングのビルド)
- mecab-0.996\src に作成された libmecab.dll を C:\Program Files (x86)\MeCab\bin に格納する。
- mecab-0.996\src に作成された libmecab.lib を C:\Program Files (x86)\MeCab\sdk に格納する。
- mecab-python-0.996\setup.py を変更する。
setup.py
#!/usr/bin/env python
from distutils.core import setup,Extension
setup(name = "mecab-python",
version = "0.996",
py_modules=["MeCab"],
ext_modules = [
Extension("_MeCab",
["MeCab_wrap.cxx",],
include_dirs=['C:/Program Files (x86)/MeCab/sdk'],
library_dirs=['C:/Program Files (x86)/MeCab/sdk'],
libraries=["libmecab"])
])
- mecab-python-0.996 で以下を実行する。
> python setup.py bdist_wininst
- mecab-python-0.996\dist に mecab-python-0.996.win-amd64-py2.7.exe が作成される。
4. インストール(インストーラの実行)
- mecab-python-0.996\dist に作成された mecab-python-0.996.win-amd64-py2.7.exe を実行する。
5. 動作確認
- mecab-python-0.996 で以下を実行する。
> python test.py
- 実行結果
0.996
太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
この 連体詞,*,*,*,*,*,この,コノ,コノ
本 名詞,一般,*,*,*,*,本,ホン,ホン
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二 名詞,数,*,*,*,*,二,ニ,ニ
郎 名詞,一般,*,*,*,*,郎,ロウ,ロー
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見 動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性 名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し 動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
EOS
BOS/EOS,*,*,*,*,*,*,*,*
太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
この 連体詞,*,*,*,*,*,この,コノ,コノ
本 名詞,一般,*,*,*,*,本,ホン,ホン
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二 名詞,数,*,*,*,*,二,ニ,ニ
郎 名詞,一般,*,*,*,*,郎,ロウ,ロー
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見 動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性 名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し 動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
BOS/EOS,*,*,*,*,*,*,*,*
EOS
EOS
filename: C:\Program Files (x86)\MeCab\etc\..\dic\ipadic\sys.dic
charset: UTF-8
size: 392126
type: 0
lsize: 1316
rsize: 1316
version: 102