8
8

More than 5 years have passed since last update.

CaboChaをPythonで使う Windows10-64bit

Last updated at Posted at 2019-01-28

はじめに

MeCabをPythonに導入したので、次はCaboChaを導入してみました。
Pythonからの呼び出し(UTF-8)とコマンドプロンプトからの呼び出し(SHIFT-JIS)両方出来るように設定しています。

環境

Anaconda3 2018.12 32-bit
Python 3.68 32-bit
***CaboChaを使用するためには現状32-bitのPythonからしか出来ないので、Anacondaは32-bitをインストールします。

ただ、Python 32-bitだとTensorFlowが動かない。

と言う事で、TensorFlow使いの方は
AnacondaでインストールするPythonは64-bit
Anacondaを使わず以下のPythonサイトのインストーラでPython 32-bitはCabocha用にインストールすれば
64bit、32-bitの使い分けが可能なので、環境を使い分けるのがよいかと思います。
https://www.python.org/

以下のCabochaの導入は32-bitのPython上で行います。

導入する物

MeCab 0.996 32-bit
CaboCha 0.69 32-bit
Build Tools for Visual Studio 2017

導入方法

1.MeCabのインストール

CaboChaは形態素解析にMeCabを利用します。
以下の記事のようにインストールを行いSHIFT-JIS、UTF-8両方の文字コードで利用できるようにします。
https://qiita.com/zincjp/items/55960801d99e55c9f2a6

2.CaboChaのインストール

2-1.CaboChaをUTF-8でインストール

CaboCha-0.69.exeファイルをダブルクリックしてインストールする際に文字コードはUTF-8を指定する。

2-2.CaboCha設定ファイルのファイル名変更

C:\Program Files (x86)\CaboCha\modelフォルダ内の以下4ファイルのファイル名を変更
charset-file.txt→charset-file-u.txt
ne.ipa.model→dep.ipa-u.model
chunk.ipa.model→chunk.ipa-u.model
dep.ipa.model→dep.ipa-u.model

C:\Program Files (x86)\CaboCha\etcフォルダ内の1ファイルのファイル名を変更
cabocharc→cabocharc-u

2-3.Cabocharc-uファイルを変更

2-2.でファイル名を変更したcabocharc-uを以下の通り記載を変更する。

6行目 
(変更前) charset-file = $(rcpath)..\model\charset-file.txt
(変更後) charset-file = $(rcpath)..\model\charset-file-u.txt
39行目
(変更前) parser-model = $(rcpath)..\model\dep.ipa.model
(変更後) parser-model = $(rcpath)..\model\dep.ipa-u.model
48行目
(変更前) chunker-model = $(rcpath)..\model\chunk.ipa.model
(変更後) chunker-model = $(rcpath)..\model\chunk.ipa-u.model
54行目
(変更前) ne-model = $(rcpath)..\model\ne.ipa.model
(変更後) ne-model = $(rcpath)..\model\ne.ipa-u.model
60行目
(変更前) # mecabrc = somewhere/mecabrc
(変更後) mecabrc = C:\Program Files (x86)\MeCab\etc\mecabrc-u

2-4.CaboChaをSHIFT-JISでインストール

再度CaboCha-0.69.exeファイルをダブルクリックしてインストールする。
その際の文字コードはSHIFT-JISを指定する。
SHIFT-JISではファイル名の変更、ファイルの編集は特になし。

2-5.MeCab、CaboChaフォルダをPATHを通す。

以下の記載を環境変数のPATHに追加し、MeCab,CaboChaにPATHを通す。
C:\Program Files (x86)\MeCab\bin
C:\Program Files (x86)\CaboCha\bin

3.Build Tools for Visual Studio 2017をインストール

3.1Visual Studioインストーラのダウンロード

以下サイトよりBuild Tools for Visual Studio 2017をダウンロード
https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2017

3-2.BuildTools for Visual Studio 2017のインストール

ダウンロードされたvs_buildtools__1004014058.1547432936.exeをダブルクリックしてインストール。

3-3.ワークロードを選択

Visual C++ Build Toolsをチェックしインストールボタンをクリックするといくつかのコンポーネントがインストールされる。

4.PythonからCaboChaを使えるようにする

4-1.caboChaのtar.bz2ファイルをダウンロード

caboCha-0.96.tar.bz2をダウンロード

4-2.caboChaのtar.bz2を展開

一度の展開でcabocha-0.69.tarまでしか展開されない場合は再度展開して
cabocha-0.69フォルダにする

4-3.展開されたcaboCha-0.69フォルダをC:\にコピー

4-4.setup.pyの変更

C:\cabocha-0.69\pythonフォルダ内の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 cmd1(str).split()

setup(name = "cabocha-python",
    version = "0.69",
    py_modules=["CaboCha"],
    ext_modules = [
        Extension("_CaboCha",
            ["CaboCha_wrap.cxx",],
            include_dirs=[r"C:\Program Files (x86)\CaboCha\sdk"],
            library_dirs=[r"C:\Program Files (x86)\CaboCha\sdk"],
            libraries=['libcabocha'])
])

元ファイルとの対比で書き換えた箇所は
13行目 バージョン
18-19行目 CaboChaのsdkフォルダの場所
20行目 ライブラリファイルの指定

4-5.PythonからCaboChaを使えるようにする

Anaconda NavigatorのOpen Terminalでコマンドプロンプトを起動。
以下のコマンドでC:\cabocha-0.69\pythonフォルダに移動

cd ../..\cabocha-0.69\python

引き続き以下のコマンドでコンパイル→インストールする。

python setup.py install

以下のように表示されPythonからCaboChaが使えるようになる。

(base) C:\cabocha-0.69\python>python setup.py install
running install
running build
running build_py
creating build
creating build\lib.win32-3.6
copying CaboCha.py -> build\lib.win32-3.6
running build_ext
building '_CaboCha' extension
creating build\temp.win32-3.6
creating build\temp.win32-3.6\Release
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX86\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD "-IC:\Program Files (x86)\CaboCha\sdk" -IC:\Users\(ユーザー名)\Anaconda3\include -IC:\Users\(ユーザー名)\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt" /EHsc /TpCaboCha_wrap.cxx /Fobuild\temp.win32-3.6\Release\CaboCha_wrap.obj
CaboCha_wrap.cxx
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX86\x86\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO "/LIBPATH:C:\Program Files (x86)\CaboCha\sdk" /LIBPATH:C:\Users\(ユーザー名)\Anaconda3\libs /LIBPATH:C:\Users\(ユーザー名)\Anaconda3\PCbuild\win32 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\lib\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\ucrt\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86" libcabocha.lib /EXPORT:PyInit__CaboCha build\temp.win32-3.6\Release\CaboCha_wrap.obj /OUT:build\lib.win32-3.6\_CaboCha.cp36-win32.pyd /IMPLIB:build\temp.win32-3.6\Release\_CaboCha.cp36-win32.lib
   ライブラリ build\temp.win32-3.6\Release\_CaboCha.cp36-win32.lib とオブジェクト build\temp.win32-3.6\Release\_CaboCha.cp36-win32.exp を作成中
コード生成しています。
コード生成が終了しました。
running install_lib
copying build\lib.win32-3.6\CaboCha.py -> C:\Users\(ユーザー名)\Anaconda3\Lib\site-packages
copying build\lib.win32-3.6\_CaboCha.cp36-win32.pyd -> C:\Users\(ユーザー名)\Anaconda3\Lib\site-packages
running install_egg_info
Writing C:\Users\(ユーザー名)\Anaconda3\Lib\site-packages\cabocha_python-0.69-py3.6.egg-info

以上で導入は終了です。

PythonでCaboChaを使う

Pythonで以下の様にCaboChaの動作を確認する。

import CaboCha

c = CaboCha.Parser("-r C:\PROGRA~2\cabocha\etc\cabocharc-u")

sentence = "私はハンバーグを食べた。"

print(c.parseToString(sentence))

tree =  c.parse(sentence)
print(tree.toString(CaboCha.FORMAT_TREE))
print(tree.toString(CaboCha.FORMAT_LATTICE))


        私は---D
  ハンバーグを-D
        食べた。
EOS
        私は---D
  ハンバーグを-D
        食べた。
EOS
* 0 2D 0/1 -2.127378
私       名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
は       助詞,係助詞,*,*,*,*,は,ハ,ワ
* 1 2D 0/1 -2.127378
ハンバーグ   名詞,一般,*,*,*,*,ハンバーグ,ハンバーグ,ハンバーグ
を       助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
* 2 -1D 0/1 0.000000
食べ      動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
た       助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。       記号,句点,*,*,*,*,。,。,。
EOS

コマンドプロンプトからCaboChaを使う

コマンドプロンプトを立ち上げ以下のように動作を確認する。

C:\Users\(ユーザー名)>cabocha
私はハンバーグを食べた。
        私は---D
  ハンバーグを-D
        食べた。
EOS

エラーの種類

ここに行き着くまでいろいろ検討してきましたが一番の山場は4-5のpython setup.py installの際にエラーが出ました。
詳細は時間があるときに記載しますが、以下の2つのエラーが良く出ました。
・vcvarsall.batが見つかりません。
Build Tools for Visual Studioで導入したCコンパイラのバージョンがPythonをコンパイルしたバージョンと異なる場合に出ます。
・link2001のエラー
link2001でio.h等のヘッダファイルがインクルードできないと言うエラーはPythonが64-bitの場合に起こります。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8