假设我训练了一个Skip模型(Word2Vec),用于我的词汇量为10,000。表示允许我将维数从10,000 (一次热编码)降到100 (神经网络隐层的大小)。
现在,假设我的测试集中有一个单词不在我的训练词汇表中。在100维空间中,单词的合理表示是什么?对我来说,我似乎不能用我训练出来的神经网络来产生嵌入这个词。
发布于 2019-07-18 10:25:48
为“OOV”(OOV)单词生成单词嵌入是许多标准嵌入的主要限制之一,如Glove和word2vec。然而,fastText在某种程度上回避了这个问题。
传统的方法对每个单词都有不同的向量,取而代之的是字符n克级表示。例如,带有n= 3的单词将由字符n表示:
<wh, whe, her, ere, re>
特别的顺序是:
< where >
在这里,<>are部分的n-克.
s(w,c) = \sum_{g\varepsilon G_{_{w}}} z_{g}^{T} v_{c} 这里,G表示n克字典的大小,并给出一个单词w,然后G_{w}\subset \left \{ 1, ..., G \right \}表示出现在
。它们将向量表示z_{g}与每一个n克g相关联,并用其n克的向量表示之和来表示一个单词。
这有助于他们通过了解子词的一些表示来处理OOV单词。例如,一个OOV单词:sechero
3克:
<se, sec, ech, che, her, ero, ro>
因为,这3克可能是在学习过程中遇到的,通过其他已知的词,如:
<se - section
che - cheer
ro> - hero
因此,它至少可以形成一些合理的嵌入,而不是返回无用的<UNK>
。
Fastext实际上是对word2vec的扩展,主要是上面解释的特性。
发布于 2019-07-01 03:58:36
在Word2Vec训练中,如果你还记得他们是一个超副配子"min_count",这意味着一个特定的单词应该存在于语料库中的最少时间。符合这个条件的单词(和其他词汇一样)被认为是词汇的一部分,否则就被丢弃了。
为了处理丢弃的单词,我们使用另一个单词表示,即"UNK“令牌。
同样,在你的例子中,这个词应该被视为"UNK“。
尽管您可以为某个特定的单词进行进一步的Word2Vec培训。
处理UNK字词上的另一篇相关文章
发布于 2019-07-01 07:54:36
https://datascience.stackexchange.com/questions/54806
复制相似问题