23
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated 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について

要約という分野について

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
23
Help us understand the problem. What are the problem?