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

Posted

技术标签:

【中文标题】LARGE在线对话文本集的情感分析【英文标题】:Sentiment Analysis on LARGE collection of online conversation text 【发布时间】:2013-02-25 22:15:47 【问题描述】:

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

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

那么,我想知道的:

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

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

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

P.S.我有权分析这些数据(以防万一)

【问题讨论】:

你有标签数据吗? 不,就是这样。我一直在尝试尽可能自动化地执行此操作……标记数据听起来像是一项非常耗时/令人麻木的任务。是否绝对需要衡量情绪?如果是这样,我会考虑把它放在 Mechanical Turk 或类似的东西上...... 我所知道的所有学习算法都要求您拥有用于构建模型的训练数据集。然后你可以在未标记的数据上释放它。 您可以尝试半监督学习,在这种情况下,您可以标记一小部分数据,然后它会从那里获取所有它认为很信任的数据并对其进行训练。 【参考方案1】:

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

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

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

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

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

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

【讨论】:

一个问题,您会得到最佳答案,关于您的频率计数示例。 “不开心”。难道我不能编写一个算法来独立解析每个句子,计算关键字,然后通过考虑上下文进行分析,然后从那里开始吗?例如,假设句子中包含“Not Happy about my Product-Name-Here”。难道我不能写一些会注意到“快乐”被“不”否定的东西,并且是关于“产品”的吗?我知道 NLTK 可以将句子分解为动词和名词等,不是吗?那么有没有可能从这个角度来攻克这个问题呢? @araibec 是的,但是尝试这样做有很多隐藏的复杂性。你可以使用否定词和情感词词典,但是,如果你认为句子中出现否定词意味着情感词是相反的,会发生什么,“我对我的 iPhone 很满意,但我的朋友是不是。”这说明大多数当前的研究选择使用机器学习等方法而不是关键字。设置它也真的不难。 有道理。另外,机器学习可以实现自我优化。感谢您的回答! 嘿@jared,Go 等人的研究链接。被打破。您能否更新您的答案以包含该研究?【参考方案2】:

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

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

【讨论】:

以上是关于LARGE在线对话文本集的情感分析的主要内容,如果未能解决你的问题,请参考以下文章

分类:推文情感分析 - 步骤顺序

什么都不会,如何完成毕设?在线课程评论情感分析-本科毕设实战案例

Keras深度学习实战——使用循环神经网络构建情感分析模型

中文对话情感分类调研

中文对话情感分类调研

论文泛读125使用基于进化分类的 LSTM 模型对 Covid-19 推文进行情感分析