【自然言語処理】Pythonで係り受け解析したい

Python係り受け解析を実行するために、各種設定を行いました。

当初は、有名な『CaboCha』のインストールを試みたのですが、エラーの修正が困難だったため、『KNP』をインストールしました。

CaboChaとKNP

簡易比較

様々なサイトで指摘されていることではありますが、以下のような特徴あるようです。 ただし、モデルの詳細等は確認しておりません。(いつか書くか?)

項目 CaboCha KNP
精度
速度

CaboChaとKNPの精度比較

「私は漫画が好きで、特にワンピースが好きです」を対象に係り受け解析をしました。 KNPでは、係り受けが精度良くできますが、CaboChaでは『ワンピースが好きです』の『好き』には掛かっていません。

CaboChaの場合

cabochaでは、『私』が『漫画が好き』の『好き』には掛かっていますが、『ワンピースが好きです』の『好き』には掛かっていません。

$ cabocha

f:id:guarana001:20191118000557p:plain
cabochaのテスト

KNPの場合

KNPでは、『私』が『漫画が好き』と『ワンピースが好きです 』のそれぞれの『好き』に掛かっています。

$ echo "私は漫画が好きで、特にワンピースが好きです" | jumanpp | knp

f:id:guarana001:20191118000500p:plain
KNPのテスト

www.ibot.co.jp

CaboChaをインストール

手順

下記のURLを参考にすると、以下のような手順だそうです。

① CaboChaのインストール

$ pip install cabocha

Pythonバインディング

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

qiita.com

Pythonバインディングができない

$ pip install python/を実行時に、以下のようなエラーメッセージが出ました。(下記のサイトより抜粋)

  Building wheel for cabocha-python (setup.py) ... error
  ERROR: Complete output from command /Users/naokitakekawa/anaconda3/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/private/var/folders/k1/6wd26qnd4p95tz0fjcf3m6g00000gn/T/pip-req-build-x3co7ade/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/k1/6wd26qnd4p95tz0fjcf3m6g00000gn/T/pip-wheel-3eu36t43 --python-tag cp36:
  ERROR: running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.macosx-10.7-x86_64-3.6
  copying CaboCha.py -> build/lib.macosx-10.7-x86_64-3.6
  running build_ext
  building '_CaboCha' extension
  creating build/temp.macosx-10.7-x86_64-3.6
  gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/naokitakekawa/anaconda3/include -arch x86_64 -I/Users/naokitakekawa/anaconda3/include -arch x86_64 -I/usr/local/Cellar/cabocha/0.69/include -I/Users/naokitakekawa/anaconda3/include/python3.6m -c CaboCha_wrap.cxx -o build/temp.macosx-10.7-x86_64-3.6/CaboCha_wrap.o
  warning: include path for stdlibc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead [-Wstdlibcxx-not-found]
  CaboCha_wrap.cxx:2981:10: fatal error: 'stdexcept' file not found
  #include <stdexcept>
           ^~~~~~~~~~~
  1 warning and 1 error generated.
  error: command 'gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for cabocha-python

teratail.com

解決策

下記のサイトによると、command Line Tools のバージョンを落とすと解決できるそうです。

ただ、大変そうなので、KNPをインストールすることにしました。

analytics-note.xyz

KNPをインストール

手順

以下の二つのサイトを参考に、手順をまとめました。

① JUMAN++をインストール

$ brew install jumanpp
$ jumanpp -v
JUMAN++ 1.02

② KNPをインストール

$ brew install knpでは、The 'brew link' step did not complete successfullyとなったため、$ brew link --overwrite knpを追加しました。

$ brew tap uetchy/nlp
$ brew install knp
$ brew link --overwrite knp

raimon49.github.io

③ JUMANとKNPのPythonバインディングPyKNPをインストール

pip install pyknp

snippets.cacher.io