web-dev-qa-db-ja.com

テキストの構造に基づいてユーザーの気分を推測することは可能ですか?

テキスト自体を解析するには自然言語プロセッサを使用する必要があると思いますが、ユーザーが書いたテキストに基づいてユーザーの気分を検出するアルゴリズムについて、どのような提案がありますか?非常に正確だとは思いませんが、それでも興味があります。

編集:私は決して言語学や自然言語処理の専門家ではないので、この質問が一般的すぎるか愚かであるかどうかをお詫びします。

55
David Brown

これは、 感情分析 と呼ばれる自然言語処理の領域の基礎です。あなたの質問は一般的ですが、それは確かに愚かではありません-この種の調査は、たとえば製品レビューのテキストについてAmazonによって行われます。

あなたがこれについて真剣に考えているなら、簡単なバージョンは次の方法で達成できます-

  1. ポジティブ/ネガティブな感情のコーパスを取得します。これがプロのプロジェクトである場合は、時間をかけて手動でコーパスに注釈を付けることができますが、急いでいる場合や最初にこれを実験したい場合は、 感情極性コーパス を確認することをお勧めします= BoPangとLillianLeeの調査から。そのコーパスを使用する際の問題は、ドメインに合わせて調整されていないことです(具体的には、コーパスは映画レビューを使用します)が、それでも適用できるはずです。

  2. データセットをポジティブまたはネガティブのいずれかの文に分割します。感情極性コーパスの場合、各レビューをその複合文に分割してから、全体的な感情極性タグ(正または負)をそれらのすべての文に適用できます。このコーパスを2つの部分に分割します。90%はトレーニング用、10%はテスト用です。 Wekaを使用している場合は、コーパスの分割を処理できます。

  3. 機械学習アルゴリズム(SVM、Naive Bayes、Maximum Entropyなど)をWordレベルのトレーニングコーパスに適用します。このモデルは bag of words model と呼ばれ、文を構成する単語として表現しているだけです。これは、多くのスパムフィルターが実行されているのと同じモデルです。機械学習アルゴリズムの優れた入門書として、 Weka というアプリケーションがあります。このアプリケーションは、これらのアルゴリズムの範囲を実装し、それらを操作するためのGUIを提供します。次に、このモデルを使用してテストコーパスを分類しようとしたときに発生したエラーから、機械学習モデルのパフォーマンスをテストできます。

  4. この機械学習アルゴリズムをユーザーの投稿に適用します。ユーザーの投稿ごとに、投稿を文に分割し、機械学習モデルを使用して分類します。

そうです、あなたがこれについて真剣に考えているなら、それは達成可能です-計算言語学の過去の経験がなくても。かなりの作業量になりますが、Wordベースのモデルでも良好な結果を得ることができます。

さらにサポートが必要な場合は、お気軽にご連絡ください。NLPに関心のある他のユーザーをサポートさせていただきます=]


小さなメモ-

  1. テキストのセグメントを文に分割するだけで、NLPのフィールド 文の境界検出 と呼ばれます。これを行うために利用できるOSSまたは無料のツールは多数ありますが、タスクでは、空白と句読点を単純に分割することで問題ありません。
  2. SVMlight も考慮すべき別の機械学習者であり、実際、彼らの帰納的SVMは、私たちが見ているものと同様のタスクを実行します-どのロイターの記事が「企業買収」に関するものであり、 1000の否定的な例。
  3. 文を特徴に変えて分類するのは、多少の手間がかかる場合があります。このモデルでは、各単語が機能です。これには、文をトークン化する必要があります。つまり、単語と句読点を互いに分離する必要があります。もう1つのヒントは、「IHATEyou」と「IhateYOU」の両方が同じと見なされるように、すべての個別のWordトークンを小文字にすることです。より多くのデータを試してみて、大文字が誰かが怒っているかどうかを分類するのに役立つかどうかも含めることができますが、少なくとも最初の努力には言葉で十分だと思います。

編集

私が話していたBoPangとLillianLee Sentiment Polarityコーパスを使用して、実際には 感情分析に関するチュートリアル を持っているLingPipeを発見しました。 Javaを使用する場合、これは使用するのに優れたツールである可能性があり、そうでない場合でも、上記で説明したすべての手順を実行します。

65
Smerity

入力したテキストに基づいてユーザーの気分を判断することは間違いなく可能ですが、それは些細なことではありません。私が考えることができること:

  • 首都は興奮、苛立ち、欲求不満を意味する傾向があり、確かに感情的な反応ですが、それでも一部の初心者はその重要性を認識していないため、他に何を書いているのかを見ずにそれを推測することはできませんでした(すべてが大文字ではありません);
  • 大文字は、実際には強調の1つの形式にすぎません。その他は、特定の攻撃的な色(赤など)の使用、または太字またはより大きなフォントの使用です。
  • 一部の人々は、非常に感情的であるときに、より多くのスペルや文法の間違いやタイプミスをします。
  • 絵文字をスキャンすると、ユーザーが感じていることを非常に明確に把握できますが、:)のようなものは、「そう言った」とか、皮肉な意味を持っていると解釈できます。
  • Expletivesの使用は明確な意味を持つ傾向がありますが、やはり明確ではありません。多くの人による口語のスピーチには、日常的に特定の4文字の単語が含まれます。他の何人かの人々にとって、彼らは「地獄」とさえ言わないかもしれません、代わりに「ヘック」と言うので、どんな罵倒(「吸う」さえ)も重要です。
  • 句読点のグループ(@#$ @ $ @など)は、虚辞が必ずしも適切であるとは限らない状況で、虚辞に置き換えられる傾向があるため、口語的である可能性は低くなります。
  • 感嘆符は、驚き、ショック、または苛立ちを示している可能性があります。

テキスト分析の進歩 または 複数の証拠ソースを組み合わせてブログのムードを決定する を確認することをお勧めします。

最後に、書かれたテキストは通常​​、実際よりも否定的であると認識されていることに注意してください。これは、一例として、企業の電子メール通信に共通する問題です。

12
cletus

私はこれを真剣に受け止めているとは信じられません...一次元のムード空間を想定しています:

  • テキストに冒とく的な言葉が含まれている場合は、-10ムード。
  • 感嘆は傾向否定的だと思うので、-2気分。
  • イライラしたときは、Veryと入力します。ショート。文。 -5気分。

これについて考えれば考えるほど、これらの記号の多くが一般的に極端な気分を示していることは明らかですが、気分の種類が常に明確であるとは限りません。

3

フォントをサポートしている場合、太字の赤いテキストはおそらく怒っているユーザーです。蝶のクリップアートが付いた緑の通常サイズのテキストは幸せなものです。

3
Alex

私の記憶はこのテーマについては良くありませんが、テキストの文法構造と全体的なトーンについていくつかの研究を見たと思います。それはまた、短い単語や感情表現の単語と同じくらい単純かもしれません(まあ、罵倒語はかなり明白です)。

編集:最初に回答した人の投稿はほぼ同じでした。短い文については確かにいくつかの深刻な考えがあるかもしれません。

2
ilya n.

これは深刻な問題であるというojblassに同意します。

気分の分類は現在、音声認識領域でホットなトピックです。考えてみれば、対話型音声応答(IVR)アプリケーションは、怒っている顧客を落ち着いた顧客とはまったく異なる方法で処理する必要があります。怒っている人々は、適切な経験とトレーニングを受けた人間のオペレーターにすばやくルーティングする必要があります。ボーカルトーンは感情のかなり信頼できる指標であり、企業がこれを機能させることを熱望するほど実用的です。グーグルの「スピーチ感情認識」、またはこれを読んでください 記事 詳細をご覧ください。

WebベースのGUIでも状況は変わりません。 cletusのコメントを振り返ると、テキストと音声の感情検出の類似性は興味深いものです。人がCAPITALSと入力すると、音声インターフェイスを使用して声の音量とピッチが上がったかのように、「叫んでいる」と言われます。タイプされた冒とく的な表現の検出は、音声システムにおける冒とく的な表現の「キーワードスポッティング」に類似しています。人が動揺している場合は、GUIまたは音声ユーザーインターフェイス(VUI)のいずれかを使用してさらにエラーが発生し、人間にルーティングできます。

ここには「マルチモーダル」感情検出研究領域があります。 (IBM/Motorola/Opera XHTML + Voice Profile プロトタイプの実装に沿って)話すこともできるWebインターフェースを想像してみてください。感情の検出は、音声と視覚入力モダリティからの手がかりの組み合わせに基づくことができます。

1
Jim Ferrans

気分と行動の分析は非常に深刻な科学です。質問をあざける他の答えにもかかわらず、法執行機関は何年もの間気分の分類を調査してきました。私が聞いたコンピューターでの使用は、一般的に、より多くのコンテキスト(タイミング情報、音声パターン、チャネル変更の速度)がありました。怒っているグループと怒っていないグループの2つの既知のグループからのサンプルを使用してニューラルネットワークをトレーニングすることで、ユーザーが特定の気分にあるかどうかをある程度の成功で判断できると思います。あなたの努力で頑張ってください。

1
ojblass

私のアルゴリズムはかなり単純だと思いますが、テキストからスミリックを計算してみませんか:) vs :(

明らかに、テキスト「:) :) :) :)」は幸せなユーザーに解決されますが、「:( :( :(」は確かに悲しいユーザーに解決されます。お楽しみください!

1
SadSido

ファジー論理で十分だと思います。いずれにせよ、ユーザーの気分を決定するいくつかのルールから始めて、「エンジン」を拡張し、より正確で洗練されたものと組み合わせるのは非常に簡単です。

0
bv.

ユーザーが次の文字を入力した場合、彼は非常に怒っています。最初に落ち着かせてください...

`K` 

`k`
0
silentsudo

はい。

あなたがそれをすることができるかどうかは別の話です。問題は最初はAI完全であるように思われます。

さて、キーストロークのタイミングがあれば、それを理解できるはずです。

0
Joshua