67

文、段落、または記事のトーンが否定的か肯定的かを判断するアルゴリズムが必要です。

例えば:

Jason は私が今まで見た中で最悪の SO ユーザーです (-10)

Jason は SO ユーザーです (0)

Jason は私が今まで見た中で最高の SO ユーザーです (+10)

ジェイソンは SO (-10) を吸うのが得意です

一方、SO では大丈夫ですが、Jason は悪いことをするのが一番苦手です (+10)

簡単じゃないでしょ?:)

誰かがこのアルゴリズムを説明してくれるとは思っていませんが、どこかの学界でこのようなことについてすでに多くの研究が行われていると思います。いくつかの記事や調査を教えていただければ幸いです。

ありがとう。

4

14 に答える 14

53

この問題領域を具体的に扱う、感情分析と呼ばれる自然言語処理のサブフィールドがあります。消費者製品はオンライン ユーザー フォーラム (UGC またはユーザー生成コンテンツ) で非常に頻繁にレビューされているため、この分野ではかなりの量の商用作業が行われています。また、シェフィールド大学のGATEと呼ばれるテキスト分析用のプロトタイプ プラットフォームと、 nltkと呼ばれる Python プロジェクトもあります。どちらも柔軟性があると考えられていますが、パフォーマンスはそれほど高くありません。どちらかが自分のアイデアを練るのに適しているかもしれません。

于 2008-11-15T20:50:55.913 に答える
38

私の会社には、これを実行し、パフォーマンスも優れた製品があります。私はそれにほとんどの仕事をしました。私は簡単な考えを与えることができます:

段落を文に分割してから、各文を小さなサブ文に分割する必要があります。コンマ、ハイフン、セミコロン、コロン、「および」、「または」などに基づいて分割します。各サブ文は、完全に別個の感情を示します。ある場合には。

一部の文は分割されていても、結合する必要があります。

例:製品は素晴らしく、素晴らしく、素晴らしいです。

分割する必要があり、分割してはならない文のタイプに関する包括的なルールセットを開発しました(単語のPOSタグに基づく)

最初のレベルでは、単語の袋のアプローチを使用できます。つまり、肯定的および否定的な単語/フレーズのリストを用意し、すべてのサブセンテンスをチェックインします。これを行う際に、文の極性を変更する「not」、「no」などの否定語も確認してください。

それでも、感情が見つからない場合は、単純ベイズアプローチを選択できます。このアプローチはあまり正確ではありません(約60%)。ただし、これを最初のルールセットを通過できない文にのみ適用すると、80〜85%の精度を簡単に得ることができます。

重要なのは、ポジティブ/ネガティブな単語リストと、物事を分割する方法です。必要に応じて、 HMM(隠れマルコフモデル)またはCRF(条件付き確率場)を実装することで、さらにレベルを上げることができます。しかし、私はNLPのプロではないので、他の誰かがその部分を埋めてくれるかもしれません。

好奇心旺盛な人々のために、これらすべてをNLTKとReverendBayesモジュールを使用してPythonで実装しました。

非常にシンプルで、ほとんどの文を処理します。ただし、Webのコンテンツにタグを付けようとすると、問題が発生する可能性があります。ほとんどの人はウェブ上で適切な文章を書きません。また、皮肉の取り扱いは非常に困難です。

于 2008-12-24T13:41:12.250 に答える
9

これは自然言語処理の傘下にあるため、それについて読むことから始めるのがおそらく良いでしょう。

非常に複雑な問題に取り組みたくない場合は、「肯定的な」単語と「否定的な」単語のリストを作成し (必要に応じてそれらに重みを付けて)、テキストのセクションで単語数を数えることができます。明らかに、これは「スマートな」ソリューションではありませんが、本格的な NLP を実行すると非常に時間がかかる場合に、ほとんど作業を行わずに情報を得ることができます。

あなたの例の 1 つは、このアプローチを使用して実際には否定的である場合に肯定的にマークされる可能性があります (「ジェイソンは SO で吸うのが最も得意です」)。は小さなテキスト サンプルです。段落またはそれ以上のテキストを見ている場合、アルゴリズムを故意にだまそうとする誰かがいない限り、重み付けはより信頼性が高くなります。

于 2008-11-15T20:21:05.833 に答える
5

指摘したように、これは自然言語処理の下での感情分析の対象となります。
Afaik GATEには、感情分析を行うコンポーネントはありません。
私の経験では、テレサ・ウィルソン、ジャニス・ウィーブ、ポール・ホフマン(これ)による論文「フレーズレベルの感情分析における文脈極性の認識」のアルゴリズムをGATEプラグインとして実装しました。良い結果。実装をブートストラップしたい場合に役立ちます。

于 2008-11-15T21:26:11.693 に答える
5

アプリケーションによっては、ベイジアンフィルタリングアルゴリズム(スパムフィルターでよく使用されます)を介して実行できます。

これを行う1つの方法は、2つのフィルターを使用することです。1つはポジティブドキュメント用で、もう1つはネガティブドキュメント用です。ポジティブフィルターにポジティブドキュメント(使用する基準に関係なく)をシードし、ネガティブフィルターにネガティブドキュメントをシードします。秘訣は、これらのドキュメントを見つけることです。たぶん、ユーザーがドキュメントを効果的に評価するように設定することができます。

ポジティブフィルター(シードされた後)はポジティブな単語を探します。たぶんそれは愛平和などのような言葉で終わるでしょう。ネガティブフィルターも適切にシードされます。

フィルタを設定したら、テストテキストを実行して、正と負のスコアを算出します。これらのスコアといくつかの重み付けに基づいて、数値スコアを考え出すことができます。

ベイジアンフィルターは単純ですが、驚くほど効果的です。

于 2008-11-15T22:08:23.807 に答える
3

次のようにできます。

    Jason is the worst SO user I have ever witnessed (-10)

最悪 (-)、残りは (+) です。したがって、それは (-) + (+) = (-) になります。

    Jason is an SO user (0)

( ) + ( ) = ( )

    Jason is the best SO user I have ever seen (+10)

最高 (+) 、残りは ( ) です。したがって、それは (+) + ( ) = (+) になります。

    Jason is the best at sucking with SO (-10)

ベスト(+)、しゃぶり(-)。したがって、(+) + (-) = (-)

    While, okay at SO, Jason is the worst at doing bad (+10)

最悪 (-)、悪いこと (-)。したがって、 (-) + (-) = (+)

于 2012-02-21T12:33:10.043 に答える
1

これは古い質問ですが、記事のトーンを分析できるツールを探していて、たまたまIBM のWatson Tone Analyzerを見つけました。毎月 1000 回の API 呼び出しが無料で可能です。

于 2016-07-14T21:47:48.770 に答える
1

この種の感情分析には、多くの機械学習アプローチがあります。すでに実装されている機械学習アルゴリズムのほとんどを使用しました。使用した私のケース

weka分類アルゴリズム

  • SVM
  • 素朴なバシアン
  • J48

    これを行う必要があるのは、モデルをコンテキストに合わせてトレーニングし、特徴的なベクターを追加し、ルールに基づいて調整するだけです。私の場合、いくつか(61%の精度)を得ました。そのため、スタンフォード コア nlpに移動し(彼らは映画レビュー用にモデルをトレーニングしました)、トレーニング セットを使用してトレーニング セットを追加しました。80 ~ 90% の精度を達成できました。

于 2014-12-19T04:59:26.067 に答える
0

たぶん、エッセイグレーディングソフトウェアを使用してトーンを推定することができますか?WIREDの記事。
可能な参照。(私はそれを読むことができませんでした。)
このレポートは、それを読むのに必要なフレッシュ・キンケードの学年とライティングスキルを比較します!e-rator
の4ページ目は、スペルミスなどを見ていると言っています。(たぶん悪い投稿のつづりも間違っています!)スラッシュドットの記事。

スパム性の代わりに、否定性のためにある種の電子メールフィルターを使用することもできます。

于 2008-11-15T21:12:16.493 に答える
0

皮肉はどうですか:

  • ジェイソンは私が今まで見た中で最高のSOユーザーであり、
  • ジェイソンは私が今まで見た中で最高のSOユーザーです
于 2008-12-24T13:01:36.717 に答える
0

ああ、私たちが評価したLingPipe (商用ライセンス) という名前の Java ライブラリを覚えています。サイトで利用可能なコーパスの例では問題なく動作しますが、実際のデータではかなりうまくいきません。

于 2008-12-24T13:43:24.820 に答える
0

それはすべて文脈の問題だと思います。SOをしゃぶるのが得意な人を探しているなら。最善を尽くすことはポジティブなことです。何が悪いのか、何が良いのかを判断するために、Fuzzy Logic を調べることをお勧めします。

ちょっと背が高いみたいです。1.95mの人は背が高いと見なすことができます. その人を2.10m以上の人がいるグループに入れると、彼は背が低く見えます.

于 2008-11-15T20:29:06.677 に答える