使用 LSTM 处理语言建模任务中的未知单词

机器算法验证 自然语言 word2vec lstm 词嵌入
2022-03-23 04:03:21

对于自然语言处理 (NLP) 任务,通常使用word2vec 向量作为词的嵌入。然而,可能有许多未知词没有被 word2vec 向量捕获,仅仅是因为这些词在训练数据中出现的频率不够高(许多实现在将词添加到词汇表之前使用最小计数)。尤其是来自 Twitter 等文本的情况尤其如此,其中单词经常拼写错误。

在使用长短期 (LSTM) 网络对情绪预测等 NLP 任务进行建模时,应该如何处理这些未知词?我看到两个选项:

  1. 向 word2vec 字典添加“未知单词”标记。
  2. 删除这些未知词,使得 LSTM 甚至不知道该词在句子中。

处理这些词的首选方式是什么?

2个回答

选项 1(添加未知单词标记)是大多数人解决此问题的方法。

选项 2(删除未知词)是一个坏主意,因为它以与 LSTM 的训练方式不一致的方式转换句子。

最近开发的另一种选择是使用卷积神经网络或单独的 LSTM 为每个单词动态创建单词嵌入,该 LSTM 一次处理每个单词的字符。使用这种技术,您的模型将永远不会遇到无法为其创建嵌入的单词。

将稀有词映射到仅仅意味着我们删除这些词并用训练数据中的标记替换它们。因此,我们的模型不知道任何稀有词。这是一种粗略的平滑形式,因为该模型假设令牌永远不会真正出现在真实数据中,或者更好的是,它完全忽略了这些 n-gram。