用于 Keras 的训练词嵌入 (Gensim) 中的未知词

问题描述

我正在使用 GENSIM (word2vec) 训练词嵌入,并在 KERAS 的神经网络中使用经过训练的模型。当我有一个未知(词汇外)单词时会出现问题,因此神经网络不再工作,因为它无法找到该特定单词的权重。我认为解决这个问题的一种方法是在预训练的词嵌入中添加一个新词 (<unk>),权重为零(或者可能是随机权重?哪个更好?)这种方法好吗?此外,对于这个词嵌入,权重在这个神经网络中是不可训练的。

解决方法

最典型的就是忽略生词。 (用插入词或原点向量替换它们会更扭曲。)

你也可以考虑训练一个 FastText 模式,它总是会从训练期间创建的字符-n-gram 向量中合成一些词汇外单词的猜测向量。 (这些合成向量通常总比没有好,尤其是当一个词与相关词有重叠词根时——但是获得更多包含所有相关词用法示例的训练数据会更好,并且简单地忽略罕见的未知词也不错。)