这可能是非常琐碎的问题。但是,我无法通过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/