10

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

数据按ThreadUsernamePost组织。每个线程或多或少都集中在讨论我有兴趣分析的类别的一个“产品”。最终,当这完成后,我希望每个用户对他们在某个时候讨论过的任何产品都有一个估计的意见(喜欢/不喜欢某种交易)。

所以,我想知道的是:

1)我怎样才能确定每个线程是关于什么产品的?我正在阅读有关关键字提取的信息……这是正确的方法吗?

2)如何根据帖子确定特定用户的情绪?根据我有限的理解,我必须首先“训练”NLTK 识别某些意见指标,然后我是否只是确定这些词出现在文本中时的上下文?

正如您现在可能已经猜到的那样,我之前没有使用 NLP 的经验。从我目前的阅读来看,我认为我可以应付学习它。如果有人能指出我正确的方向,即使现在只是一个基本而粗略的工作模型也会很棒。谷歌对我帮助不大。

PS我有权分析这些数据(以防万一)

4

2 回答 2

5

训练任何分类器都需要一组标记数据的训练集和一个特征提取器来获取每个文本的特征集。拥有经过训练的分类器后,您可以将其应用于以前未见过的文本(未标记),并根据所使用的机器学习算法获得分类。NLTK给出了一个很好的解释和一些可以玩的示例

如果您有兴趣使用自己的训练数据集为正面/负面情绪构建分类器,我会避免简单的关键字计数,因为它们由于多种原因并不准确(例如,否定正面词:“不开心” )。另一种方法是远程监督,您仍然可以使用大型训练集而无需手动标记任何内容。基本上,这种方法使用表情符号或其他特定文本元素作为嘈杂标签。您仍然必须选择哪些特征是相关的,但是许多研究通过简单地使用一元二元(分别是单个单词或成对的单词)取得了很好的结果。

所有这些都可以使用 Python 和 NLTK 相对容易地完成。您还可以选择使用NLTK-trainer 之类的工具,它是 NLTK 的包装器,需要的代码更少。

我认为Go 等人的这项研究。是最容易理解的一种。您还可以阅读有关远程监督远程监督情绪分析情绪分析的其他研究。

NLTK 中有一些内置分类器具有训练和分类方法(朴素贝叶斯MaxEnt等),但如果您对使用支持向量机 (SVM) 感兴趣,那么您应该寻找其他地方。从技术上讲,NLTK 为您提供了一个SVM 类,但它实际上只是PySVMLight的包装器,它本身是SVMLight的包装器,用 C 编写。虽然这种方法有很多问题,但我会推荐LIBSVM

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

于 2013-03-11T19:04:14.747 回答
3

您可以使用相似的数据集训练任何分类器,并查看将其应用于数据时的结果。例如,NLTK 包含包含 1000 条正面评论和 1000 条负面评论的电影评论语料库。这是一个关于如何用它训练朴素贝叶斯分类器的例子。其他一些评论数据集,如亚马逊产品评论数据可在此处获得。

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

于 2013-03-11T13:36:49.820 回答