LoginSignup
2
4

More than 5 years have passed since last update.

【Macメモ】MacのJupyter NotebookでCabochaを動かす

Last updated at Posted at 2019-05-27

はじめに

自分のMacにCabochaを導入したのだが、一箇所トラップがあってハマったので、自分用メモ

事前準備

MacにJupyter Notebookとbrewコマンドは導入済みであることが前提です。
Jupyter Notebookはanacondaから入れてしまうのが簡単です。

anaconda サイト

  • brewコマンド
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Mecabの導入

最初のステップはMecabの導入です。以下の2つのbrewコマンドを実行します。

Mecab導入

$ brew install mecab
$ brew install mecab-ipadic

Mecabテスト

 導入が正常終了したら、簡単なテストを実施します。
 コンソールで、mecabを実行し、入力プロンプトが出たらこれは日本語の文章です。を入力して下さい。
うまくいくと、下記のような結果になるはずです。

$ mecab
これは日本語の文章です。
これ    名詞,代名詞,一般,*,*,*,これ,コレ,コレ
は    助詞,係助詞,*,*,*,*,は,ハ,ワ
日本語    名詞,一般,*,*,*,*,日本語,ニホンゴ,ニホンゴ
の    助詞,連体化,*,*,*,*,の,ノ,ノ
文章    名詞,一般,*,*,*,*,文章,ブンショウ,ブンショー
です    助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。    記号,句点,*,*,*,*,。,。,。
EOS

結果を確認したらctrl+cでコマンド入力状態に戻します。

mecab-python3の導入

 最後のステップは、導入されたmecabをpythonのAPIとして利用できるようにすることです。
この目的のため、pipコマンドを利用してmecab-python3を導入します。

$ pip install mecab-python3

mecab-python3のテスト

 mecab-python3の導入が正常終了したら、次のnotebookを実行して結果を確認します。

# MecabをPythonから呼び出す
import MeCab

# 解析対象文
text = 'これは日本語の文章です。'

# 利用パターン1 対象文書を分かち書きにする
tagger1 = MeCab.Tagger("-Owakati")
print('【利用パターン1】分かち書き')
print(tagger1.parse(text).split())
print()


# 利用パターン2 単語毎に分析結果を全部表示する
tagger2 = MeCab.Tagger()
print('【利用パターン2】品詞解析')
print(tagger2.parse(text))

次の結果が返ってきたら、OKです。


【利用パターン1】分かち書き
['これ', 'は', '日本語', 'の', '文章', 'です', '。']

【利用パターン2】品詞解析
これ  名詞,代名詞,一般,*,*,*,これ,コレ,コレ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
日本語   名詞,一般,*,*,*,*,日本語,ニホンゴ,ニホンゴ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
文章  名詞,一般,*,*,*,*,文章,ブンショウ,ブンショー
です  助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。 記号,句点,*,*,*,*,。,。,。
EOS

Cabochaの導入

次のステップがCabochaの導入です。

Command Line Toolsのバージョン確認(重要)

次のコマンドで、CLTの行を見てCommand Line Toolsのバージョンを確認します。

$ brew --config

結果例

HOMEBREW_VERSION: 2.1.3
ORIGIN: https://github.com/Homebrew/brew
HEAD: 099b047349d4ec67519206f15401d0e1cf90e953
Last commit: 7 days ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: fd1ef471a25cb83041e710018f9ad9686fc50d97
Core tap last commit: 30 hours ago
HOMEBREW_PREFIX: /usr/local
CPU: quad-core 64-bit broadwell
Homebrew Ruby: 2.3.7 => /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
Clang: 10.0 build 1001
Git: 2.21.0 => /usr/local/bin/git
Curl: 7.54.0 => /usr/bin/curl
Java: 12.0.1
macOS: 10.14.5-x86_64
CLT: 9.4.0.0.1.1526532315
Xcode: 10.2.1

これから行うビルド作業では、CLTのバージョンが9.4である必要があります。

もし、CLTのバージョンはこれより大きなものの場合、Appleダウンロードサイトから、Command Line Tools 9.4をダウンロード・導入するようにして下さい。

必要モジュールの導入

次に、下記のコマンドで、必要なモジュールを導入しておきます。

$ brew install git curl xz
$ brew install crf++

Cabochaの導入

いよいよCabochaの導入です。次のコマンドで導入します。

$ brew install cabocha

Cabochaのテスト

上記の導入が一通り終わったら、いったんコマンドラインでテストをします。

$ cabocha

コマンドが実行され、入力プロンプトが出たら今日はいい天気ですねと入力してenterキーを押してください。
下記の結果が出れば正常に動いているので、ctrl + cで抜けます。

今日はいい天気ですね
    今日は---D
        いい-D
    天気ですね
EOS

Python用ラッパーの導入

次に、CabochaをPythonから呼び出せるようにします。 少し長いのですが、以下の手順で導入してください。

# 作業用ディレクトリは適当に決めて下さい
WORK_DIR=(作業用ディレクトリ)
cd $WORK_DIR

curl -OL https://github.com/taku910/cabocha/archive/master.zip
unzip master.zip
pip install cabocha-master/python/

git clone https://github.com/kenkov/cabocha
pip install cabocha/

(備考)CLTのバージョンが古いと最後のpipコマンドでビルドに失敗します。

Python用ラッパーのテスト

次のコマンドでテストしてみて下さい。

# Cabochaの利用 (Tokenの取得)
from cabocha.analyzer import CaboChaAnalyzer
analyzer = CaboChaAnalyzer()
tree = analyzer.parse('今日はいい天気ですね')
for chunk in tree:
    for token in chunk:
        print(token

# Cabochaの利用 (チャンクを先頭からたどる)
chunks = tree.chunks
start_chunk = chunks[0]
print('開始チャンク: ', start_chunk)
next_chunk = start_chunk.next_link
print('次のチャンク: ', next_chunk)

次のような結果が返ってくれば成功です。

Token("今日")
Token("は")
Token("いい")
Token("天気")
Token("です")
Token("ね")
開始チャンク:  Chunk("今日は")
次のチャンク:  Chunk("天気ですね")
2
4
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
2
4