对于情绪分析,我使用的是sentiwordnet 3.0,它在大多数情况下运行良好,但对于某些功能,得分应完全相反。
例如:如果主题是“玩具”
1) Feature "Quality" - getting correct score
High quality (+ve score)
Less quality (-ve score)
2) Feature "Price" - getting wrong score
High price (+ve score but it should be -ve)
Less price (-ve score but it should be +ve)
有人可以建议我们如何根据功能改变单词的极性? 任何论文/概念都将受到赞赏。
答案 0 :(得分:0)
首先,我会重新解释您的问题,以确保我们在同一页面上。对于给定的示例,您的目标是根据其上下文为单词“high”和“less”分配极性分数。每当“高”指质量时,您希望为其赋予积极的内涵。但是,当“高”指价格时,您希望为其赋予负面含义。
让我们退一步,看看更大的图景。你可能会有一句话,“玩具的价格太高,不能为我的孩子购买。”,你想知道这是一个积极或消极的陈述。您对此问题进行建模的方法是考虑“价格”是“高”的属性。在这个框架下,有点难以推理。我建议改变你的看法:把“高”视为“价格”的一个属性,并根据它是“高”还是“低”来改变“价格”的分数。
无论您最终选择哪种视图,问题都会减少到确定a)实体和b)属性。在我看来,“价格”是一个实体,“高”是它的属性。在你的“高”是一个实体,“价格”是一个属性。无论哪种方式,您都必须确定(实体,属性)对,然后定义一个数学关系,该关系表明属性得分以何种方式影响最终得分。这很难,主要是因为确定实体和属性是NLP中众所周知的问题,并且没有一个简单的解决方案。
人们通常使用的是词袋技术。这意味着您可以获取句子中所有单词的所有分数,将它们相加,然后输出最终分数。这有点违反直觉,因为它会丢弃有关句子结构的所有信息,但对于足够长的文本来说,它的效果非常好。这是大数字的魔力 - 一个好的电影评论将有足够的积极条件来超过负面的。
另一种方法是使用机器学习。您只需将它们放到机器上,让统计学习者推断出最佳组合,而不是担心自己如何组合这些功能。据我所知,Stanfard使用深度递归网络实现了最先进的性能。
我很清楚这不是你期望的那种答案,但我想说明这并不像看起来那么容易。许多研究已经进入语言建模和情绪分析,结果发现你可以手动做很少的事情。手动我的意思是推理如何组合分数或执行某种if / then / else分析(例如,如果单词是“高”,那么如果它的属性是“价格”,那么如果......)