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


11

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

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

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

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


2
我之前已经回答了类似的问题;虽然问题不是LSTM特有的,但我写的大部分内容似乎都适用:stats.stackexchange.com/questions/163005/…–
fnl

Answers:


12

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

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

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


嗨,亚伦,您能给我几个使用第三个选项的指针(文件或代码)吗?
预言



1
最近的一个一个(EMNLP 2017)arxiv.org/abs/1707.06961与代码github.com/yuvalpinter/Mimick
jayelm

-1

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


4
请在此答案中添加大量内容。例如,支持“添加未知单词标记是最佳选择”的说法。
吉姆(Jim)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.