这可能是非常琐碎的问题。但是,我无法通过Google或SO搜索找到所需的答案。

我想建立一个简单的情绪分析逻辑。

否定和肯定的单词/短语有两个列表,其中有些得分表示单词/短语的否定或肯定。

否定词组/单词:

really hate         -2
hate         -1
dislike      -1


正词组/单词:

like           1
very much like 2


以下为相应的情感分数

"I like to eat Apple"          => Sentiment Score = 1
"I really hate the college president"  => Sentiment Score = -2


适用于上述情况。但是,我想知道如何解决以下情况:

"Though I am an Android user, I hate to say I like iPhone 5s"


您会看到,“仇恨”和“喜欢”都将使情感得分= 0
但是,我希望它是+1,因为它对iPhone 5s有积极的看法。

最佳答案

由于您的情感单词可以用作短语,因此快速而肮脏的解决方案是在正面情感列表中添加“讨厌说我喜欢”:

hate to say I like   +1


那是一个极端的解决方案,它的问题在于它只能处理一种特殊情况,因此您需要添加成千上万个(如果不是上百万个)或此类条目。另一个极端是完全理解上下文和细微差别的超智能AI。目前的问题是它超出了我们的范围。在这两个极端之间的是NLP解决方案,该解决方案使用语法和模式来理解许多句子,而不必明确列出所有句子。



有关重量分配的附注

如果始终使用最大匹配项,请使用+1,并停止与这些单词匹配的其他单词/短语。否则请调整重量。在这种情况下,您无需执行任何操作,就好像“ hate”也匹配为-1,那么“ like”将匹配以给出另一个“ +1”一样。但是,对于“真的讨厌说我喜欢”,您需要将其基本值设为+2;那么“真正的仇恨”将在-2中添加,就像在+1中添加一样,您最终会获得所需的+1情感。

关于java - 如何评估“双重否定”句子的情感,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22773582/

10-12 21:09