我使用GloVe预训练的词向量( glove.6b.50d.txt, glove.6b.300d.txt) 作为词嵌入。
我有一个概念性问题:
- 这些文件有什么区别?
- 另一方面,在 GloVe 预训练的词向量中,维度代表什么?
我使用GloVe预训练的词向量( glove.6b.50d.txt, glove.6b.300d.txt) 作为词嵌入。
我有一个概念性问题:
Glove 通过获取全局计数统计信息来创建能够在向量空间中捕捉含义的词向量。GloVe 的训练目标是学习词向量,使其点积等于词共现概率的对数。在优化这一点时,您可以为词向量使用任意数量的隐藏表示。
在原始论文中,他们使用 25、50、100、200、300 进行训练。这些维度无法解释。训练后,我们得到一个带有 'd' dim 的向量,它捕获了该词的许多属性。如果维度增加,向量可以捕获更多信息,但计算复杂度也会增加。
好问题!
这些文件有什么区别?
这些文件中的每一个都包含一组不同的预训练词嵌入。这两个文件都可以被视为将单词映射到长度为D的向量的字典,其中D在各自的文件中为 50/300。文件之间的唯一区别是它们包含不同长度的词向量。
所以你的两个文件基本上等同于这个:
word_embedding_50_dims = {<words>: <array of length 50>}
word_embedding_300_dims = {<words>: <array of length 300>}
我们可以将其概括为长度为D的词嵌入:
word_embedding_D_dims = {<words>: <array of length D>}
GloVe 预训练的词向量中的维度代表什么?
正如另一个答案指出的那样,维度没有特殊含义,它是一个超参数,由 GloVe 的创建者选择。
请注意,这并不是说这些值的选择不是有目的的,而是说将超参数认为是可解释的词的典型意义是没有意义的。