我试图了解循环神经网络 (RNN)(例如 LSTM 或 GRU 模型或简单的 RNN)如何处理情感分析中的否定。具体来说,我很好奇这些模型如何正确解释否定改变情绪的句子,例如“这部电影不好。”
使用词嵌入+简单平均的简单模型无法正确处理否定。例如,如果“好”具有积极的情绪分数,而“坏”具有消极的情绪分数,则模型可能会通过简单地平均“不好”和“好”的分数来误解“不好”。
考虑以下带有情感词的句子:
假设我们有以下代表情感分数的词嵌入:
中性词(假设嵌入数约为 0):
对于这些句子,情绪分数的简单全局平均值效果很好:
现在,考虑带有否定的句子:
对于嵌入:
简单平均可能无法正确处理这些:
直观地说,RNN 应该能够处理这个问题,因为它旨在对单词序列进行建模,捕获它们之间随时间的依赖关系。
有人能用一个具体的例子解释一下像LSTM或GRU这样的RNN模型如何正确理解和建模句子中的否定吗?具体来说,我感兴趣的是:
RNN 考虑单词的整个序列,这是相对于词袋方法的一大优势。 嵌入是 RNN 的输入,情感分数是输出; RNN 将嵌入映射到情感。嵌入本身并不代表情感。
为了训练 RNN,您需要给它整个短语的整体情绪。
有了足够多的例子,网络将能够推断出以前从未见过的短语的情感,例如:
RNN 内部有一个内存,它是输入历史记录的(压缩)表示。 我们可以想象当我们输入输入序列时 RNN 如何产生输出。考虑当 RNN 看到序列“电影不是……”时可能的输出。 到目前为止,这种情绪或多或少是中性的。也许模型会给它一个非常轻微的负分。 然而,RNN 现在已经看到了“不”这个词,并且会记住接下来发生的任何事情都应该被否定。
因此,如果它接下来看到一个积极的词(“这部电影不好”),它就会知道要反转情绪,并将其整体评分为负面。 相反,如果它看到一个负面词(“这部电影还不错”),它就会知道要反转情绪,并总体上给予积极的评价。