10

The title says it all; I have an SQL database bursting at the seams with online conversation text. I've already done most of this project in Python, so I would like to do this using Python's NLTK library (unless there's a strong reason not to).

The data is organized by Thread, Username, and Post. Each thread more or less focuses on discussing one "product" of the Category that I am interested in analyzing. Ultimately, when this is finished, I would like to have an estimated opinion (like/dislike sort of deal) from each user for any of the products they had discussed at some point.

So, what I would like to know:

1) How can I go about determining what product each thread is about? I was reading about keyword extraction... is that the correct method?

2) How do I determine a specific users sentiment based on their posts? From my limited understanding, I must first "train" NLTK to recognize certain indicators of opinion, and then do I simply determine the context of those words when they appear in the text?

As you may have guessed by now, I have no prior experience with NLP. From my reading so far, I think I can handle learning it though. Even just a basic and crude working model for now would be great if someone can point me in the right direction. Google was not very helpful to me.

P.S. I have permission to analyze this data (in case it matters)

4

2 に答える 2

5

分類器をトレーニングするには、ラベル付けされたデータのトレーニングセット、各テキストの特徴セットを取得するための特徴抽出器が必要です。トレーニングされた分類子を取得したら、それを以前に表示されていない (ラベル付けされていない) テキストに適用し、使用された機械学習アルゴリズムに基づいて分類を取得できます。NLTKは、良い説明といくつかのサンプルを提供しています。

独自のトレーニング データセットを使用して、肯定的/否定的な感情の分類器を構築することに興味がある場合は、単純なキーワードのカウントは避けます。これは、多くの理由で正確ではないためです(例: 肯定的な単語の否定: 「幸せではない」) )。手動でラベルを付けなくても大規模なトレーニング セットを使用できる別の方法として、遠隔監視があります。基本的に、このアプローチでは顔文字やその他の特定のテキスト要素をノイズの多いラベルとして使用します。関連する機能を選択する必要がありますが、多くの研究では、ユニグラムまたはバイグラム(それぞれ個々の単語または単語のペア) を使用するだけで良い結果が得られています。

これらはすべて、Python と NLTK を使用して比較的簡単に実行できます。また、NLTK のラッパーであり、必要なコードが少ないNLTK-trainerなどのツールを使用することもできます。

ゴーらによるこの研究だと思います。最も理解しやすいものの1つです。また、遠隔監視遠隔監視感情分析、および感情分析に関する他の研究も読むことができます。

NLTK には、トレーニングと分類の両方の方法 ( Naive BayesMaxEntなど) を備えた組み込みの分類子がいくつかありますが、サポート ベクター マシン (SVM) の使用に興味がある場合は、他の場所を探す必要があります。技術的には NLTK はSVM クラスを提供しますが、実際にはPySVMLightの単なるラッパーであり、それ自体はC で記述されたSVMLightのラッパーです。ただし、このアプローチには多くの問題があり、代わりにLIBSVMをお勧めします。

トピックを決定するために、多くの場合単純なキーワードが使用されてきましたが、より複雑な方法がいくつか利用可能です。

于 2013-03-11T19:04:14.747 に答える
3

同様のデータセットを使用して任意の分類子をトレーニングし、それをデータに適用したときに結果がどうなるかを確認できます。たとえば、NLTK には、1000 件の肯定的なレビューと 1000 件の否定的なレビューを含む映画レビュー コーパスが含まれています。これを使用して Naive Bayes Classifier をトレーニングする方法の例を次に示します。Amazon Product Review データなどの他のレビュー データセットは、こちらから入手できます。

もう 1 つの可能性は、このような肯定的な単語と否定的な単語のリストを取得し、データセットでの頻度を数えることです。完全なリストが必要な場合は、SentiWordNetを使用してください。

于 2013-03-11T13:36:49.820 に答える