HYT MachineWorks

やったこととか思いついたことをメモしておくブログです。

Stanford NLPを使う (Windows7 64bit)

Stanford NLPとは、

Stanford大学の自然言語処理グループが開発した多言語(でも、日本語には対応してない)に対応した自然言語処理用パッケージです。他言語版MeCab+CaboChaみたいなものです。

インストールと、使用方法で手間取ったんでメモ

Stanford CoreNLPのセットアップ手順

1.Stanford Core NLPのダウンロード

Stanford CoreNLP – Natural language software | Stanford CoreNLP

上記リンクから、Stanford CoreNLPをダウンロード。真ん中くらいにダウンロードボタンがある。ついでに、その下くらいにある、言語毎のモデルもダウンロード。

そしてダウンロードしたファイルを適当なフォルダに解凍する。

2. 環境変数CLASSPATHの追加

コントロールパネルから、環境変数を開き、新規にCLASSPATHを作成。

これは、Javavmからjarファイルを認識させるのに必要らしい。

1でダウンロードしたファイルを解凍し、その中に入っているすべてのjarファイルを登録するんだけど、手でやるのは面倒なので

PowerShellを立ち上げて、Stanford NLP保存したフォルダに移動したら以下のコマンドを実行

> (Get-ChildItem *.jar).FullName > class_path.txt
> (Get-Content class_path.txt -Raw).Replace("`r`n",";") | Set-Content class_path.txt

 すると、フォルダ内にclass_path.txtが作られてすべてのjarファイルを抽出できるので環境変数CLASSPATHに登録しよう!

3.解析を実行する

1~2で解析を実行するための準備は完了なので、実行させるのですがコマンドは、ここでは、test.txtがあるフォルダに移動している前提で、以下の通りです

java -mx3g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner,parse,dcoref -file test.txt -outputFormat "xml"

これは、 ちょっと解説すると

  • javaの後が使用可能なメモリの最大値、ここでは3Gを指定、
  • -annotatorsの以降は実行する解析の種類、上の例はほぼ全部なので減らしたい時は
    ここを参考に減らす
  • -file 実行したいファイルの名前
  • -outputFormat 出力データの形式、ここではxmlをしています。

実行すると、test.txt.xmlというファイルが出来るので結果を使用するという流れ。

あとは、BeautifulSoupを使うなりしてデータを加工すればOKです。

まとめ

形態素解析係り受け解析だけじゃなく、言い換えている言葉(2回め以降のheなど)もわかるしかなりいい感じです。英語の解析等をされる方は便利だと思います。