NLP 情绪检测 - 模型无法学会识别否定

数据挖掘 机器学习 分类 nlp
2022-02-22 14:37:29

我正在做一个 nlp 情绪检测项目。我试图预测的情绪是“快乐”、“恐惧”、“愤怒”、“悲伤”。我使用一些公开可用的标记数据集来训练我的模型,例如 ISEAR、WASSA 等。我尝试了以下方法:

  1. 传统的 ML使用二元组和三元组进行处理。
  2. 具有以下架构的CNN:(X)文本 -> 嵌入(W2V 在维基百科文章上预训练)-> 深度网络(CNN 1D)-> 全连接(密集)-> 输出层(Softmax)-> 情感类(Y)
  3. 具有以下架构的LSTM:(X)文本 -> 嵌入(W2V 在维基百科文章上预训练)-> 深度网络(LSTM/GRU)-> 全连接(密集)-> 输出层(Softmax)-> 情感类(Y)

NN 模型达到了 80% 以上的准确率,但是当我使用经过训练的模型来预测包含一些否定的文本上的情绪时,我得到了错误的结果。例如:

文本:“我对easy jet 很满意,这是一家很棒的公司!”

预测快乐

文字:我对易捷航空不满意 #unhappy_customer

预测快乐

关于如何克服这个问题的任何建议?

1个回答

总的来说,这是一个难题,它是关于自然语言理解的问题,远未解决。

高级选项需要对句子进行完整的句法解析,理想情况下是句子的某种语义表示,例如通过提取关系据我所知,这很少使用,因为这些步骤通常会导致尽可能多的错误。

可以考虑一些更合理的启发式方法,例如检测特定的否定词并将此信息作为特征包含或相应地修改原始特征(例如,当检测到否定时,将特征中的标记“快乐”替换为“不(快乐)” )。

请注意,由于通常的障碍,它无论如何都不太可能是完美的:对冲(“我认为它非常好”),讽刺(“当然,我对糟糕的服务非常满意”),隐喻(“我是感觉就像水中的鱼”)等。