web-dev-qa-db-ja.com

スタンフォードNLP感情分析ツールをトレーニングする方法

みんな地獄!私はStanfordCore NLPパッケージを使用しており、私の目標はツイートのライブストリームで感情分析を実行することです。

感情分析ツールをそのまま使用すると、テキストの「態度」の分析が非常に不十分になります。多くのポジティブはニュートラルとラベル付けされ、多くのネガティブはポジティブと評価されます。私はテキストファイルで100万をはるかに超えるツイートを取得しましたが、実際にツールをトレーニングして作成する方法がわかりません。私自身のモデル。

スタンフォード感情分析ページへのリンク

「PTB形式のデータセットを使用して次のコマンドを使用すると、モデルを再トレーニングできます。」

Java -mx8g edu.stanford.nlp.sentiment.SentimentTraining -numHid 25 -trainPath train.txt -devPath     dev.txt -train -model model.ser.gz

Dev.txtからのサンプル(先頭の4は5からの極性を表します... 4/5正)

(4 (4 (2 A) (4 (3 (3 warm) (2 ,)) (3 funny))) (3 (2 ,) (3 (4 (4 engaging) (2 film)) (2 .))))

Test.txtからのサンプル

(3 (3 (2 If) (3 (2 you) (3 (2 sometimes) (2 (2 like) (3 (2 to) (3 (3 (2 go) (2 (2 to) (2 (2 the) (2 movies)))) (3 (2 to) (3 (2 have) (4 fun))))))))) (2 (2 ,) (2 (2 Wasabi) (3 (3 (2 is) (2 (2 a) (2 (3 good) (2 (2 place) (2 (2 to) (2 start)))))) (2 .)))))

Train.txtからのサンプル

(3 (2 (2 The) (2 Rock)) (4 (3 (2 is) (4 (2 destined) (2 (2 (2 (2 (2 to) (2 (2 be) (2 (2 the) (2 (2 21st) (2 (2 (2 Century) (2 's)) (2 (3 new) (2 (2 ``) (2 Conan)))))))) (2 '')) (2 and)) (3 (2 that) (3 (2 he) (3 (2 's) (3 (2 going) (3 (2 to) (4 (3 (2 make) (3 (3 (2 a) (3 splash)) (2 (2 even) (3 greater)))) (2 (2 than) (2 (2 (2 (2 (1 (2 Arnold) (2 Schwarzenegger)) (2 ,)) (2 (2 Jean-Claud) (2 (2 Van) (2 Damme)))) (2 or)) (2 (2 Steven) (2 Segal))))))))))))) (2 .)))

今後2つの質問があります。

各ファイルの重要性と違いは何ですか? Train.txt/Dev.txt/Test.txt?

ツイートでいっぱいの未加工の未解析のテキストファイルを使用して、自分のモデルをトレーニングするにはどうすればよいですか?

私はNLPを初めて使用するので、必要な情報や何かが不足している場合は、批評してください。ありがとうございました!

15
Jordan H

各ファイルの重要性と違いは何ですか? Train.txt/Dev.txt/Test.txt?

これは標準的な機械学習の用語です。トレインセットは、モデルのトレーニングに使用されます(サプライズサプライズ)。開発セットは、モデルが持つ可能性のあるパラメーターを調整するために使用されます。通常は、パラメーター値を選択し、トレーニングセットでモデルをトレーニングしてから、トレーニングされたモデルが開発セットでどの程度うまく機能するかを確認します。次に、別のパラメーター値を選択して繰り返します。この手順は、モデルの適切なパラメーター値を見つけるのに役立ちます。

これが完了したら、モデルがテストセットでどの程度うまく機能するかをテストします。これはunseenです-モデルはこれまでそのデータに遭遇したことがありません。テストセットがトレーニングおよび開発セットとは別であることが重要です。そうしないと、以前に見たデータでモデルを効果的に評価することになります。これは、モデルが実際にどれだけうまく機能しているかがわからないため、間違っています。

ツイートでいっぱいの未加工の未解析のテキストファイルを使用して、自分のモデルをトレーニングするにはどうすればよいですか?

解析されていないドキュメントのセットを使用してトレーニングすることはできません。再帰的ディープモデルの全体的なポイント(およびそれが非常にうまく機能する理由)は、解析ツリーのすべてのレベルで感情アノテーションから学習できることです。上で与えた文は次のようにフォーマットすることができます:

(4 
(4 
(2 A)
(4 
(3(3暖かい)(2、))(3面白い) 
)
)
(3 
(2、)
(3 
(4(4エンゲージメント)(2フィルム) )(2。)
)
)
)

通常、感情分析はドキュメントレベルの注釈でトレーニングされます。スコアは1つだけであり、このスコアはドキュメント全体に適用されます。ドキュメント内のフレーズが異なる感情を表す可能性があるという事実は無視されます。スタンフォードチームは、感情のためにドキュメント内のすべてのフレーズに注釈を付けることに多大な努力を払いました。たとえば、単語film自体は、感情的に中立です:(2 film)。ただし、フレーズengaging filmは非常にポジティブです:(4 (4 engaging) (2 film)) (2 .)

ツイートにラベルを付けた場合は、他のドキュメントレベルの感情分類子を使用できます。 stackoverflowの sentiment-analysis タグにはすでにいくつかの非常に良い答えがあります。ここでは、それらを繰り返すつもりはありません。

PSあなたが持っているツイートにラベルを付けましたか?それらのすべての100万?もしそうなら、私はあなたにそのファイルのためにたくさんのお金を払いたいです:)

10
mbatchkarov

Javaコード:

BuildBinarizedDataset-> [ http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/sentiment/BuildBinarizedDataset.html

SentimentTraining-> http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/sentiment/SentimentTraining.html

C#でコーディングする人のために、Javaソースを2つのコードファイルに変換しました。これにより、このプロセスの理解がはるかに簡単になります。

https://arachnode.net/blogs/arachnode_net/archive/2015/09/03/buildbinarizeddataset-and-sentimenttraining-stanford-nlp.aspx

1
arachnode.net

それが役に立ったら、ArachnodeからC#コードを非常に簡単に機能させました-モデルなどの正しいパスを取得するために1つか2つ調整しましたが、それでもうまく機能します。欠けていたのは、入力ファイルの正しい形式に関するものでした。これはJavadocにありますが、参考までに、BuildBinarizedDatasetの場合は次のようになります。

2 line of text here

0 another line of text 

1 yet another line of text

etc

何から始めているか(データベース、Excelファイルなど)に応じて、非常に簡単な構築です。

1
user1466472