【自然言語処理】Pythonで係り受け解析したい
Pythonで係り受け解析を実行するために、各種設定を行いました。
当初は、有名な『CaboCha』のインストールを試みたのですが、エラーの修正が困難だったため、『KNP』をインストールしました。
CaboChaとKNP
簡易比較
様々なサイトで指摘されていることではありますが、以下のような特徴あるようです。 ただし、モデルの詳細等は確認しておりません。(いつか書くか?)
項目 | CaboCha | KNP |
---|---|---|
精度 | △ | ◯ |
速度 | ◯ | △ |
CaboChaとKNPの精度比較
「私は漫画が好きで、特にワンピースが好きです」を対象に係り受け解析をしました。 KNPでは、係り受けが精度良くできますが、CaboChaでは『ワンピースが好きです』の『好き』には掛かっていません。
CaboChaの場合
cabochaでは、『私』が『漫画が好き』の『好き』には掛かっていますが、『ワンピースが好きです』の『好き』には掛かっていません。
$ cabocha
KNPの場合
KNPでは、『私』が『漫画が好き』と『ワンピースが好きです 』のそれぞれの『好き』に掛かっています。
$ echo "私は漫画が好きで、特にワンピースが好きです" | jumanpp | knp
CaboChaをインストール
手順
下記のURLを参考にすると、以下のような手順だそうです。
① CaboChaのインストール
$ pip install cabocha
$ curl -OL https://github.com/taku910/cabocha/archive/master.zip $ unzip master.zip $ cd cabocha-master $ pip install python/
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
解決策
下記のサイトによると、command Line Tools のバージョンを落とすと解決できるそうです。
ただ、大変そうなので、KNPをインストールすることにしました。
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
③ JUMANとKNPのPythonバインディングPyKNPをインストール
pip install pyknp