私の会社には、これを実行し、パフォーマンスも優れた製品があります。私はそれにほとんどの仕事をしました。私は簡単な考えを与えることができます:
段落を文に分割してから、各文を小さなサブ文に分割する必要があります。コンマ、ハイフン、セミコロン、コロン、「および」、「または」などに基づいて分割します。各サブ文は、完全に別個の感情を示します。ある場合には。
一部の文は分割されていても、結合する必要があります。
例:製品は素晴らしく、素晴らしく、素晴らしいです。
分割する必要があり、分割してはならない文のタイプに関する包括的なルールセットを開発しました(単語のPOSタグに基づく)
最初のレベルでは、単語の袋のアプローチを使用できます。つまり、肯定的および否定的な単語/フレーズのリストを用意し、すべてのサブセンテンスをチェックインします。これを行う際に、文の極性を変更する「not」、「no」などの否定語も確認してください。
それでも、感情が見つからない場合は、単純ベイズアプローチを選択できます。このアプローチはあまり正確ではありません(約60%)。ただし、これを最初のルールセットを通過できない文にのみ適用すると、80〜85%の精度を簡単に得ることができます。
重要なのは、ポジティブ/ネガティブな単語リストと、物事を分割する方法です。必要に応じて、 HMM(隠れマルコフモデル)またはCRF(条件付き確率場)を実装することで、さらにレベルを上げることができます。しかし、私はNLPのプロではないので、他の誰かがその部分を埋めてくれるかもしれません。
好奇心旺盛な人々のために、これらすべてをNLTKとReverendBayesモジュールを使用してPythonで実装しました。
非常にシンプルで、ほとんどの文を処理します。ただし、Webのコンテンツにタグを付けようとすると、問題が発生する可能性があります。ほとんどの人はウェブ上で適切な文章を書きません。また、皮肉の取り扱いは非常に困難です。