假设我为我的 10,000 个词汇量训练了一个 Skip-Gram 模型 (Word2Vec)。该表示允许我将维度从 10,000(单热编码)减少到 100(神经网络隐藏层的大小)。
现在假设我的测试集中有一个单词不在我的训练词汇中。什么是单词在 100 维空间中的合理表示?对我来说,我似乎无法使用我训练的神经网络来提出词嵌入。
假设我为我的 10,000 个词汇量训练了一个 Skip-Gram 模型 (Word2Vec)。该表示允许我将维度从 10,000(单热编码)减少到 100(神经网络隐藏层的大小)。
现在假设我的测试集中有一个单词不在我的训练词汇中。什么是单词在 100 维空间中的合理表示?对我来说,我似乎无法使用我训练的神经网络来提出词嵌入。
为“ OOV ”(词汇外)词生成词嵌入是许多标准嵌入(如 Glove 和 word2vec)的主要限制之一。不过fastText在一定程度上规避了这个问题。
与传统的方法不同,它们对每个单词都有不同的向量,而是采用字符 n-gram 级别的表示。例如,一个 n=3 的单词将由字符 n-grams 表示:
<wh, whe, her, ere, re>
和特殊序列:
< where >
这里,<> 是 n-gram 的一部分。
这有助于他们通过了解子词的某些表示来处理 OOV 词。例如,一个 OOV 词:
sechero
3克:
<se, sec, ech, che, her, ero, ro>
因为,这些 3-gram 可能是在学习过程中通过其他已知单词遇到的,例如:
<se - section
che - cheer
ro> - hero
因此,它至少可以形成一些合理的嵌入,而不是返回一个无用的<UNK>
Fastext 实际上是 word2vec 的扩展,主要具有上面解释的功能。
在 Word2Vec 训练期间,如果您记得它们是一个超参数“min_count”,它表示特定单词应该存在于语料库中的最少时间。满足这个条件的词(连同其他词),被认为是词汇的一部分,否则被丢弃。
为了处理丢弃的单词,我们使用另一种单词表示,即“UNK”标记。
同样,在您的情况下,该词应被视为"UNK"。
尽管您可以针对特定单词进行进一步的 Word2Vec 培训。
另一个关于处理 UNK 单词的相关帖子