Edited at

CaboCha & Python3の環境構築(Windows版)


最終的にやりたいこと

定期的に送られてくる報告書の類(書かれていることは毎回似通っている)を、一定のフォーマット・一定の文体で要約したい、というのが最終的なゴールです。既存の要約アルゴリズムも使うかもしれませんが、元の文は数パターン(ただし色々修飾がついている)のため、情報の優先順位をルールベースで実装しながらきっちり目的の文型に収めたいと思っています。

 まずは修飾関係を解析するためのCaboChaをPythonから呼び出せる環境を作ります。


セットアップ後の主要要素 & バージョン


(1) MeCabのインストールとPythonからのバインディング



  • Mecab公式サイトからWindows用のexeをダウンロードし、UTF8を指定してインストールする。(場所は任意だが、デフォはC:\Program Files (x86)\MeCab)

  • Pythonからのバインディングは、先人の恩恵にあずかってpip install mecab-python-windowsを実行する

    参考)https://qiita.com/yukinoi/items/990b6933d9f21ba0fb43

    ※自分でコンパイルする方法は割愛。というかCaboChaが苦戦するので、MeCabは体力温存で。

  • Pythonの対話シェルまたは一度ファイルに保存して、以下のコードを実行して結果が返ればOK。


PythonからのMeCab実行(MeCab公式サイト例文よりPython3用に微修正)

import sys

import MeCab
m = MeCab.Tagger ("-Ochasen")
print(m.parse ("今日もしないとね"))

※以下のような結果が返る

今日 キョウ 今日 名詞-副詞可能

も モ も 助詞-係助詞

し シ する 動詞-自立 サ変・スル 未然形

ない ナイ ない 助動詞 特殊・ナイ 基本形

と ト と 助詞-接続助詞

ね ネ ね 助詞-終助詞

EOS


(2) CaboChaのダウンロードとインストール



  • CaboCha公式サイトから、Windows用のexeソースのtar.gzを両方ダウンロードする。

  • MeCab同様、exe形式のインストーラーを起動して、UTF8を指定してインストールする。 (場所は任意だが、デフォはC:\Program Files (x86)\CaboCha)

  • ソースのtar.gzを適当な場所に解凍しておく。

  • 最後に、環境変数のパスに”C:\Program Files (x86)\CaboCha\bin”を通してcabochaを実行できるようにしておく。
     これはpythonがdllにアクセスするためにも必要で、実施しておかないとPythonからCaboChaを実行したときにエラーになる。


(3) Visual C++コンパイル環境を整える

 Visual Studio 2017等の統合開発環境、またはBuild Toolsなどのコンパイラが入っていない場合、それらをインストールする必要があります。

 Python 3.5以降であれば、Build Tools for Visual Studio 2017でC++ Build ToolsをインストールすればOKです。その他のバージョンを使っている場合、必要なVisual C++のバージョンが異なるため、詳しくは、こちら「WindowsでCaboCha-Python3バインディング」を参考に、パッケージを選択してください。


(4) CaboChaをPython3から使えるようにする

 いよいよ環境構築の山場、CaboChaをPython3から扱えるようにバインドをコンパイルします。


  • まず、pip install --upgrade setuptoolsを実行して、setuptoolsを念のため最新化しておきます。

  • 次に、ダウンロードしておいたCaboChaソースコード.tar.gzを解凍したフォルダのpythonディレクトリに移動します。

  • pythonディレクトリの下にあるsetup.pyをWindows用に修正します。修正箇所と内容は後述しますが、他にWindowsにCabocha 0.68をいれてPythonで係り受けを解析してみるが参考になると思います。


  • python setup.py installを実行します。


無事に完了すればセットアップは終わりです。

コンパイルエラーが出た場合は、こちら「WindowsでCaboCha-Python3バインディング」を参考にしてください。


実行例

> pip install --upgrade setuptools

> cd cabocha-0.69\python
 # 解凍したcabochaのソースコード

> (ここでsetup.pyを修正する)

> python setup.py



(5) Python3からCaboChaを使ってみる

CaboChaのサンプルコードを参考に、以下のようなコードを書いて、実行できれば完了です。

※setup.pyと一緒に配布されているtest.pyを参考にPython2系のprint文をprint()に変更・簡易化したもの


サンプルコード

import CaboCha

c = CaboCha.Parser()

sentence = "太郎はこの本を二郎を見た女性に渡した。"

print(c.parseToString(sentence))



実行例

> python test.py

太郎は-----------D
この-D |
本を---D |
二郎を-D |
見た-D |
女性に-D
渡した。
EOS


参考)setup.pyの修正前・修正後

setup.pyは、下記3つのコメントアウト行で、Windows版にはないcabocha-configを実行して取得する値を直接ハードコードします。


修正内容

#!/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 cmd1(str).split()

setup(name = "cabocha-python",
# ↓下記のように直す version = cmd1("cabocha-config --version"),
version = "0.69",
py_modules=["CaboCha"],
ext_modules = [
Extension("_CaboCha",
["CaboCha_wrap.cxx",],
# ↓下記のように直す include_dirs=cmd2("cabocha-config --inc-dir"),
include_dirs=[r"C:\Program Files (x86)\CaboCha\sdk"],
# ↓下記のように直す library_dirs=cmd2("cabocha-config --libs-only-L"),
library_dirs=[r"C:\Program Files (x86)\CaboCha\sdk"],
libraries=cmd2("cabocha-config --libs-only-l"))
])



参考サイト


MeCab, CaboChaについて


要約という分野について