読者です 読者をやめる 読者になる 読者になる

Stanford CoreNLP の Python ラッパーを作った

corenlp-python に置いてある。

Stanford CoreNLP は Stanford で開発されている英語の自然言語処理に必要なツールを色々入れた Java のライブラリで、単語分割、文分割、品詞付与、原型の復元、固有表現抽出、構文解析、共参照解析など前処理の大抵のことができる。

CoreNLP の Python ラッパーはすでにあるが、このラッパーはかなりバグがある。例えばインプットに改行が入っていると改行の前までしか解析できなかったり、JSON-RPC が古いバージョンのプロトコルを使っていたり、処理を最長でも5秒でタイムアウトしてしまったり、30~50文以上あるテキストはそれ以降の文を全て破棄してしまうなどなどだ。

最後のバグは、おそらく最初に別のツール(nltkなど)で文分割をしてから使うことを想定しているのだろうが、CoreNLP はせっかく文分割のツールが入っているのでそれを使いたい。で、フォークしてそういったバグを直したり、パッケージ化して使いやすくして corenlp-python を作ったのでぜひ使ってほしい。フォークごときで作ったというのは少し語弊があるが、かなり書き直しているので中身はだいぶ違うものになっている。

使い方は

sudo pip install corenlp-python

そして Python から

from corenlp import StanfordCoreNLP, batch_parse
corenlp_dir = "stanford-corenlp-full-2013-04-04/"

# 逐次処理の場合
corenlp = StanfordCoreNLP(corenlp_dir)
corenlp.parse("Parse it")

# バッチ処理の場合
batch_parse("text_directory/", corenlp_path=corenlp_dir)

という感じで使える。