LARGE在线会话文本集的情感分析

时间:2013-03-10 19:44:21

标签: python nlp nltk text-mining sentiment-analysis

标题说明了一切;我有一个SQL数据库突破接缝与在线对话文本。我已经用Python完成了这个项目的大部分工作,所以我想用Python的NLTK库来做这件事(除非有的理由不这样做。)

数据按主题用户名发布进行整理。每个线程或多或少都侧重于讨论我有兴趣分析的类别的一个“产品”。最终,当这个结束时,我希望每个用户对他们在某些时候讨论过的任何产品都有一个估计的意见(比如/不喜欢某种交易)。

所以,我想知道的是:

1)如何确定每个主题的产品?我正在阅读有关关键字提取的信息......这是正确的方法吗?

2)如何根据帖子确定具体的用户情绪?从我有限的理解,我必须首先“训练”NLTK以识别某些意见指标,然后我只需确定这些单词出现在文本中时的背景?

正如您现在可能已经猜到的那样,我之前没有使用过NLP的经验。从我到目前为止的阅读,我认为我可以处理它。如果有人可以指出我正确的方向,即使只是一个基本和粗糙的工作模型现在将是伟大的。谷歌对我没有多大帮助。

P.S。我有权分析这些数据(如果重要的话)

2 个答案:

答案 0 :(得分:5)

训练任何分类器需要标记数据的训练集 和功能提取器,以获取每个文本的功能集。拥有经过训练的分类器后,您可以将其应用于以前看不见的文本(未标记)并根据所使用的机器学习算法获得分类。 NLTK gives a good explanation and some samples to play around with

如果您有兴趣使用自己的训练数据集构建正面/负面情绪的分类器,我会避免简单的关键字计数,如they aren't accurate for a number of reasons(例如,否定正面词语:“不开心”)。另一种方法是远程监督,您仍然可以使用大型训练集而无需手动标记任何内容。基本上,此方法使用表情符号或其他特定文本元素作为嘈杂标签。你仍然需要选择哪些特征是相关的,但许多研究只使用 unigrams bigrams (分别是单个单词或单词对)就能取得好成绩。

使用Python和NLTK可以相对轻松地完成所有这些工作。您还可以选择使用像NLTK-trainer这样的工具,它是NLTK的包装器,需要的代码更少。

我认为Go等人this study。是最容易理解的之一。您还可以阅读distant supervisiondistant supervision sentiment analysissentiment analysis的其他研究。

NLTK中有一些内置分类器,包括训练和分类方法(Naive BayesMaxEnt等),但如果您对使用支持向量机(SVM)感兴趣,那么你应该看看别处。从技术上讲,NLTK为你提供了一个SVM class但它实际上只是PySVMLight的包装器,它本身就是SVMLight的包装器,用C语言编写。尽管如此,我遇到了很多问题,并且而是推荐LIBSVM

为了确定主题,许多人使用了简单的关键字,但有一些更复杂的方法可用。

答案 1 :(得分:3)

您可以使用类似的数据集训练任何分类器,并查看将其应用于数据时的结果。例如,NLTK包含电影评论语料库,其中包含1000条正面和1000条负面评论。 Here is an example on how to train a Naive Bayes Classifier with it。其他一些评论数据集(如Amazon Product Review数据)可用here

另一种可能性是获取像this one这样的正面和负面词汇列表,并在数据集中计算它们的频率。如果您需要完整列表,请使用SentiWordNet