ツイートを主観的または客観的にフィルタリングするには、信頼性が高く正確な方法が必要です。言い換えれば、トレーニングセットを使用してWekaのようなものでフィルターを構築する必要があります。
Twitterメッセージまたは転送可能な他のドメインの主観的/客観的分類子として使用できるトレーニングセットはありますか?
ツイートを主観的または客観的にフィルタリングするには、信頼性が高く正確な方法が必要です。言い換えれば、トレーニングセットを使用してWekaのようなものでフィルターを構築する必要があります。
Twitterメッセージまたは転送可能な他のドメインの主観的/客観的分類子として使用できるトレーニングセットはありますか?
CMUのどこかに感情トレーニングデータがあります。リンクを思い出せません。CMUはツイッターと感情分析で多くのことを行ってきました:
私はツイッター用に英語と英語ではない単純ベイズ分類器を作成し、〜example dev / test setを作成しましたが、98%正確でした。問題を理解しようとしているだけなら、この種のことは常にかなり良いと思いますが、SentiWordNetのようなパッケージはあなたに有利なスタートを与えるかもしれません。
問題は、ツイートを主観的または客観的にするものを定義することです。機械学習はアルゴリズムではなく、データの品質に関係していることを理解することが重要です。
必要なのは75%の精度だけだとおっしゃっていますが、リコールについてはどうでしょうか。適切なトレーニングデータを提供すれば、リコールを減らすことで、それを取得できる可能性があります。
研究および非営利の目的で、SentiWordNet はまさにあなたが望むものを提供します。商用ライセンスも利用できます。
SentiWordNet : http://sentiwordnet.isti.cnr.it/
サンプル Jave コード: http://sentiwordnet.isti.cnr.it/code/SWN3.java
関連論文: http://nmis.isti.cnr.it/sebastiani/Publications/LREC10.pdf
私が試す他のアプローチ:
例
ツイート 1: @xyz ダークナイトを見るべき。その素晴らしい。
1) 最初に for の意味を辞書で調べます。
「u」と「awesme」は何も返しません。
2) 次に、既知の略語/略語に逆らって、一致を拡張で置き換えます (一部のリソース: netlingo http://www.netlingo.com/acronyms.phpまたは smsdictionary http://www.smsdictionary.co.uk/abbreviations )
元のツイートは次のようになります。
ツイート 1: @xyzダーク ナイトが表示されます。その素晴らしい。
3) 次に、残りの単語をスペル チェッカーにフィードし、最も一致する単語に置き換えます (常に理想的であるとは限らず、小さな単語ではエラーが発生しやすくなります)。
関連リンク: Java スペル チェッカー ライブラリを探しています
元のツイートは次のようになります。
ツイート 1: @xyz ダーク ナイトが表示されます。その素晴らしい。
4) ツイートを分割して SWN3 にフィードし、結果を集計する
このアプローチの問題点は、
a) 否定は SWN3 の外部で処理する必要があります。
b) 顔文字や誇張された句読点の情報が失われるか、個別に処理する必要があります。
LingPipeDynamicLMClassifier
ではかなりうまく機能します。
http://alias-i.com/lingpipe/demos/tutorial/sentiment/read-me.html