2011-10-26 3 views
3

私はウェブサイト上の肯定的なレビューの数を数えようとしています。次の文字列を考えてみましょう。アンダースコアで次の単語に文の否定をリンクします

これらは逆の意味です。自動分類では、$ str_2と$ 3はほとんどの分類器(文中の陽性語の数を単に数えます)によって陽性として数えられます。私は、文字列をトークン化することによって開始

$str_1 = "This is great"; 
$str_2 = "This is not_great after all"; 
$str_3 = "That isn't_good and I will not_return to this store."; 

:私は次のように、 『戻る』と「良い」ではないと「ない」、「素晴らしい」と「ない」リンクすることによって、このエラーを回避したい

$tokens = explode("", $str_3); 

しかし、私はどのように進むべきかわかりません。どのように私は後の単語に否定的な単語( "not"、 "not")をリンクしますか?正規表現はここではうまく使用できませんか?

+1

私は機械学習のケースである可能性が高いと思います。 – onatm

+0

正規表現はあなたが達成しようとしているものの1つの要素かもしれませんが、指摘されているように、十分ではない可能性があります。 – Peter

+1

例文として、私はこれを追加したい:これは結局悪くない。あなたは負の構造化された積極的な文章を考慮に入れるべきです。 – onatm

答えて

2

この回答が非常に役立つとは思っていませんが、恐れています...フォーラムでの投稿の感想を本当に分類しようとしているのなら、それは非常に難しい問題です。あなたが提案しているものはそこにいくらかの方法をもたらしますが、これが考慮していない英語(と他の言語)の複雑さがますます増しています。たとえば:

  • 私は冗談ではない:この製品は、私は
  • この製品は非常に十分にお勧めすることはできません
  • 私は他では、この製品

などをお勧めすることはできません吸います否定の前に肯定的な言葉を探している単語は、単純なケースではうまくいくが、他の多くのケースではうまくいかない。もっと洗練されたアプローチが必要だと思います。学習データが多い場合(手動で分類されたレビューなど)、ニューラルネットワークやSVMやナイーブなベイズ分類子などの分類子を使用できます。

正規表現のアプローチを続けると、例外や特殊ケースが永久に追加され、非常に複雑になり、ケースの50%でしか動作しなくなることがわかります。申し訳ありません、私はもっとポジティブなことはできません!

+0

ご返信ありがとうございます。私は同じ予約をしましたが、私が話しているすべてのレビューはTwitterメッセージから来ています。したがって、その長さは最大140文字です。これはあなたが話す問題の少なくとも一部を取り除くでしょう。また、これは最初の試みであり、完璧である必要はありません。 「私はこの製品を十分に推奨できません」という文はおそらくまれです。しかし、私は同意する必要があります...正規表現は、ここで2番目の考えで最善のアプローチではありません。あなたは私をつかまえるだけの他のアイデアはありますか? :) – Pr0no

+0

文字列をトークン化して(単語に分解して)、次に情報検索手法(tf idfを参照)を使用して、最も重要な単語を判別し、その感情(正、負、中立)を調べます。ルックアップテーブル。最後に、主要な感情の言葉の前に来る特定の否定的な言葉( "not"、 "can not"、 "not not"など)を探す必要があります。私はまだ少し懐疑的です、私は恐ろしいですが、短いメッセージでもうまくいきますが、試してみる価値があります!たくさんのサンプルメッセージがある場合は、それが正常になるまでトレーニングを続けてください(オーバーフィットに注意してください)。 – Ben

関連する問題