はじめに
英語の文章を構文解析したかったので、Stanford CoreNLPを使用することに。
導入時に2つのエラーが発生して苦労したのでメモ。
環境
Ubuntu 18.04.2
Anaconda 3 5.3.1
Python 3.7
Jupyter Notebook
ダウンロード
まずは以下のコマンドでStanford CoreNLPをダウンロードし、Pythonで使用できるようにしました(参考記事)。
$ curl -L -O http://nlp.stanford.edu/software/stanford-corenlp-full-2013-06-20.zip
$ unzip ./stanford-corenlp-full-2013-06-20.zip -d /usr/local/lib/
$ pip install corenlp-python
発生したエラーと解決策
その1
ダウンロードが終わりさっそく使ってみようと以下のようなコードを実行。
import pprint
import json
import corenlp
corenlp_dir = "/usr/local/lib/stanford-corenlp-full-2013-06-20/"
parser = corenlp.StanfordCoreNLP(corenlp_path=corenlp_dir)
result_json = json.loads(parser.parse("This is test."))
pprint.pprint(result_json)
すると、以下のエラーが発生。
ExceptionPexpect: The command was not found or was not executable: java.
Javaが実行できていないというエラーですね。
Stanford CoreNLPを動かすためには、Javaが必要らしいです。UbuntuにJavaを入れることで解決しました(UbuntuにJavaをインストールする方法)。
その2
Javaをインストールし、使えるようになったはず...と思っていたら、また新しいエラーが発生。実行したコードはその1に記述したものと同じです。
OSError Traceback (most recent call last)
OSError: [Errno 5] Input/output error
EOF Traceback (most recent call last)
EOF: End Of File (EOF). Exception style platform.
こちらの記事にあるように、user.properties
ファイルを作成したら動くようになりました。user.properties
ファイルは機能を制限したい場合のみ作成すれば良いと思っていたのですが、どうやら必須のようですね。気が付くまでかなり時間がかかった...
Stanford CoreNLPは英文用のパッケージなので、日本語の文献は少ないですね。また何かあれば記そうと思います。
以上