はじめに
筆者がWindows PCにCaboChaを入れる際に情報が古くて手こずったので、備忘録として導入方法を記しておきます。
確認済動作環境
- Windows 10, 11 (64bit)
- Python 3.10, 3.9, 3,7 (32bit)
【pip使用 (Anacondaは使用していません)】 - MeCab 0.996
- CaboCha 0.69
この記事は、色々な記事を調べて最終的に上手く行った手順を載せているだけなので予めご了承ください。
Pythonの導入
Pythonは32bit版のみ使用できます。(MeCabのみを使用したい場合は64bitでも可能です。こちらの記事等を参照して下さい。)
Python公式DLページやpython JapanのDLページなどから32bit版のPythonをダウンロードし、インストーラーの指示に従ってインストールします。
形態素解析器MeCabの導入
単に1度だけインストールすると、コマンドプロンプトとPythonどちらかが文字化けしてしまうのが避けられません。以下の方法で2度インストールすると、どちらでも文字化けせずに利用できます。
-
こちらからMeCabをダウンロードします。(Binary package for MS-Windows)
記事作成時点では、最新版はmecab-0.996.exe
です。 - まずは辞書の文字コード選択でUTF-8を選んでインストールします。
- インストールが終わったらMeCabのインストールフォルダに移動して、以下のフォルダ・ファイルの名前を変更します。インストールフォルダは変更していなければ
C:\Program Files (x86)\MeCab
にあります。- MeCab\dic\ipadic → MeCab\dic\ipadic-UTF8
- MeCab\etc\mecabrc → MeCab\etc\mecabrc-u
- もう一度MeCabのインストーラーを起動して、今度はShift-JISでインストールします。
すると、MeCab\dic
の中にはipadic
とipadic-UTF8
の2つのフォルダがあるはずです。
(MeCab\etc
も同様にmecabrc
とmecabrc-u
があるはず。) - 次に
MeCab\etc\mecabrc-u
ファイルを以下のように書き換えます。
;
; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $;
;
-dicdir = $(rcpath)\..\dic\ipadic
+dicdir = $(rcpath)\..\dic\ipadic-UTF8
; userdic = /home/foo/bar/user.dic
参考までに、私のmecabrc-uファイルを記しておきます。
mecabrc-u
;
; Configuration file of MeCab
;
; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $;
;
dicdir = $(rcpath)\..\dic\ipadic-UTF8
; userdic = /home/foo/bar/user.dic
; output-format-type = wakati
; input-buffer-size = 8192
; node-format = %m\n
; bos-format = %S\n
; eos-format = EOS\n
最後に、C:\Program Files (x86)\MeCab\bin
をPATHに追加してください。
ここまでで、MeCabのインストールは完了です。
コマンドプロンプトやPowerShellでmecab
と実行し、次の行で何か文章を入力してEnterを押すと、形態素解析されるのが確認できます。
PS C:\Users\User> mecab
犬も歩けば棒に当たる
犬 名詞,一般,*,*,*,*,犬,イヌ,イヌ
も 助詞,係助詞,*,*,*,*,も,モ,モ
歩け 動詞,自立,*,*,五段・カ行イ音便,仮定形,歩く,アルケ,アルケ
ば 助詞,接続助詞,*,*,*,*,ば,バ,バ
棒 名詞,一般,*,*,*,*,棒,ボウ,ボー
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
当たる 動詞,自立,*,*,五段・ラ行,基本形,当たる,アタル,アタル
EOS
次にPythonでMeCabを実行できるようにします。
インストールした32bitのPythonでpip install mecab
を実行して、Pythonバインディングをインストールします。
Windowsに複数のPythonをインストールしている人は py
コマンドを使うことができます。
py --list
を実行すると、インストールされているPythonの一覧が表示されます。
PS C:\Users\User> py --list
-V:3.11 * Python 3.11 (64-bit)
-V:3.10-32 Python 3.10 (32-bit)
上の例では、Python 3.10 (32-bit) を使用したいので、 pip install mecab
の代わりに以下を実行します。
PS C:\Users\User> py -3.10-32 -m pip install mecab
venvを使う人はこの限りではありません。
以下のスクリプトを実行すると、Pythonでも形態素解析できるはずです。
import MeCab
tagger = MeCab.Tagger(r"-r C:\PROGRA~2\mecab\etc\mecabrc-u")
print(tagger.parse("犬も歩けば棒に当たる"))
MeCabのインストールでmecabrc-u
ファイルを編集し、UTF-8版の辞書を使うように設定したはずです。MeCabを実行するときに -r <mecabrcファイルのパス>
のオプションを付けると、指定したmecabrcファイル内の設定でMeCabが起動します。PythonではUTF-8辞書を使いたいのでいつも -r <mecabrcファイルのパス>
を指定し、コマンドプロンプトなどではShift-JIS辞書を使いたいので -r
オプションは指定せずにデフォルトの mecabrc
ファイルの設定で実行します。
また、 PROGRA~2
は Program Files (x86)
のエイリアスで、 PROGRA~2
と指定することでフォルダー名からスペースが無くなる効果を持ちます。
係り受け解析器CaboChaの導入
-
このページのダウンロードの章、「こちらから最新版をダウンロードします。」のリンクからGoogle Driveに飛び、一番下までスクロールします。すると、CaboChaの最新バージョンのファイルが見つかるので、exeファイルをダウンロードします。
記事作成時点では、最新版はcabocha-0.69.exe
です。 - まずは辞書の文字コード選択でUTF-8を選んでインストールします。
- インストールが終わったらCaboChaのインストールフォルダに移動して、以下のフォルダ・ファイルの名前を変更します。インストールフォルダは変更していなければ
C:\Program Files (x86)\CaboCha
にあります。- CaboCha\model\charset-file.txt → CaboCha\model\charset-file-u.txt
- CaboCha\model\chunk.ipa.model → CaboCha\model\chunk.ipa-u.model
- CaboCha\model\dep.ipa.model → CaboCha\model\dep.ipa-u.model
- CaboCha\model\ne.ipa.model → CaboCha\model\ne.ipa-u.model
- CaboCha\etc\cabocharc → CaboCha\etc\cabocharc-u
- もう一度CaboChaのインストーラーを起動して、今度はShift-JISでインストールします。
- 次に
CaboCha\etc\cabocha-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
# parser-model = $(rcpath)\..\model\dep.ipa.model
# parser-model = $(rcpath)\..\model\dep-tournament.ipa.model
# parser-model = $(rcpath)\..\model\dep.juman.model
[48行目]
# Chunker model file name
-chunker-model = $(rcpath)\..\model\chunk.ipa.model
+chunker-model = $(rcpath)\..\model\chunk.ipa-u.model
# chunker-model = $(rcpath)\..\model\chunk.ipa.model
# chunker-model = $(rcpath)\..\model\chunk.juman.model
# chunker-model = $(rcpath)\..\model\chunk.unidic.model
[54行目]
# NE model file name
-ne-model = $(rcpath)\..\model\ne.ipa.model
+ne-model = $(rcpath)\..\model\ne.ipa-u.model
# ne-model = $(rcpath)\..\model\ne.ipa.model
# ne-model = $(rcpath)\..\model\ne.juman.model
# ne-model = $(rcpath)\..\model\ne.unidic.model
[59行目] (mecabrcのインストール先はデフォルトのものを示しています。適宜変えてください)
# mecabrc
-# mecabrc = somewhere/mecabrc
+mecabrc = C:\Program Files (x86)\MeCab\etc\mecabrc-u
参考までに、私のcabocharc-uファイルを記しておきます。
cabocharc-u
#
# default cabocharc file
#
charset = SHIFT-JIS
charset-file = $(rcpath)\..\model\charset-file-u.txt
posset = IPA
# posset = IPA
# posset = JUMAN
# posset = UNIDIC
# Output Format
# 0 - tree
# 1 - lattice
output-format = 0
# Input Layer
# 0 - RAW sentence layer (MeCab only)
# 1 - POS tagged layer (default)
# 2 - POS tagged and Chunked layer
# 3 - POS tagged, Chunked and Feature selected layer
input-layer = 0
# Output Layer
# 1 - POS tagged layer (MeCab only)
# 2 - Chunked layer
# 3 - Chunked and Feature selected layer
# 4 - Parsed layer (default)
output-layer = 4
# Output NE
# 0 - no output
# 1 - output NE with Chunk Constraint
# 2 - output NE without Chunk Constraint
ne = 0
# Parser model file name
parser-model = $(rcpath)\..\model\dep.ipa-u.model
# parser-model = $(rcpath)\..\model\dep.ipa.model
# parser-model = $(rcpath)\..\model\dep-tournament.ipa.model
# parser-model = $(rcpath)\..\model\dep.juman.model
# parser-model = $(rcpath)\..\model\dep-tournament.juman.model
# parser-model = $(rcpath)\..\model\dep.unidic.model
# parser-model = $(rcpath)\..\model\dep-tournament.unidic.model
# Chunker model file name
chunker-model = $(rcpath)\..\model\chunk.ipa-u.model
# chunker-model = $(rcpath)\..\model\chunk.ipa.model
# chunker-model = $(rcpath)\..\model\chunk.juman.model
# chunker-model = $(rcpath)\..\model\chunk.unidic.model
# NE model file name
ne-model = $(rcpath)\..\model\ne.ipa-u.model
# ne-model = $(rcpath)\..\model\ne.ipa.model
# ne-model = $(rcpath)\..\model\ne.juman.model
# ne-model = $(rcpath)\..\model\ne.unidic.model
# mecabrc
mecabrc = C:\Program Files (x86)\MeCab\etc\mecabrc-u
最後に、C:\Program Files (x86)\CaboCha\bin
をPATHに追加してください。
ここまでで、CaboChaのインストールは完了です。
コマンドプロンプトやPowerShellでcabocha
と実行し、次の行で何か文章を入力してEnterを押すと、係り受け解析されるのが確認できます。
PS C:\Users\User> cabocha
私は今日、近所の人と天気の話をしてから学校へ向かった。
私は---------------D
今日、-------------D
近所の-D |
人と---D |
天気の-D |
話を-D |
してから---D
学校へ-D
向かった。
EOS
次にPythonでMeCabを実行できるようにします。
インストールした32bitのPythonでpip install cabocha-python
を実行して、Pythonバインディングをインストールします。
以下のスクリプトを実行すると、Pythonでも同様に係り受け解析できるはずです。
import CaboCha
cabocha = CaboCha.Parser(r"-r C:\PROGRA~2\cabocha\etc\cabocharc-u")
result_tree = cabocha.parse("私は今日、近所の人と天気の話をしてから学校へ向かった。")
print(result_tree.toString(CaboCha.FORMAT_TREE))
これで、MeCabとCaboChaを利用できるようになりました。
お疲れ様でした!
2023/2/3 追記
@KoichiYasuoka さんよりご指摘頂いた内容を追記します。
cabocha-python
にはこのようなバグが残っており、使う際には注意が必要です。
UniDic2UDというライブラリはこのバグに対処されており、こちらのページにもあるようにCaboCha風にコードを書くことも可能なようです。
参考ページ