我对 word2vec 和词嵌入有疑问,我下载了 GloVe 预训练词嵌入(形状 40,000 x 50)并使用此函数从中提取信息:

import numpy as np
def loadGloveModel(gloveFile):
    print ("Loading Glove Model")
    f = open(gloveFile,'r')
    model = {}
    for line in f:
        splitLine = line.split()
        word = splitLine[0]
        embedding = np.array([float(val) for val in splitLine[1:]])
        model[word] = embedding
    print ("Done.",len(model)," words loaded!")
    return model

现在,如果我将这个函数称为“python”一词,如下所示:
print(loadGloveModel('glove.6B.100d.txt')['python'])

它给了我这样的 1x50 形状向量:
[ 0.24934    0.68318   -0.044711  -1.3842    -0.0073079  0.651
 -0.33958   -0.19785   -0.33925    0.26691   -0.033062   0.15915
  0.89547    0.53999   -0.55817    0.46245    0.36722    0.1889
  0.83189    0.81421   -0.11835   -0.53463    0.24158   -0.038864
  1.1907     0.79353   -0.12308    0.6642    -0.77619   -0.45713
 -1.054     -0.20557   -0.13296    0.12239    0.88458    1.024
  0.32288    0.82105   -0.069367   0.024211  -0.51418    0.8727
  0.25759    0.91526   -0.64221    0.041159  -0.60208    0.54631
  0.66076    0.19796   -1.1393     0.79514    0.45966   -0.18463
 -0.64131   -0.24929   -0.40194   -0.50786    0.80579    0.53365
  0.52732    0.39247   -0.29884    0.009585   0.99953   -0.061279
  0.71936    0.32901   -0.052772   0.67135   -0.80251   -0.25789
  0.49615    0.48081   -0.68403   -0.012239   0.048201   0.29461
  0.20614    0.33556   -0.64167   -0.64708    0.13377   -0.12574
 -0.46382    1.3878     0.95636   -0.067869  -0.0017411  0.52965
  0.45668    0.61041   -0.11514    0.42627    0.17342   -0.7995
 -0.24502   -0.60886   -0.38469   -0.4797   ]

我需要帮助来理解输出矩阵。这些值代表什么,对生成新词有什么意义

最佳答案

在通常的 word2vec/GLoVe 中,单独的每维坐标并没有特别的意义。相反,训练过程会迫使单词处于有值(value)/有趣的相对位置。

所有含义都在相对距离和相对方向上,而不是与精确坐标轴具体对齐。

考虑一个经典的说明性示例:词向量解决类比的能力,例如“男人之于国王,女人之于?” – 通过在坐标空间中的某个预期点附近找到工作皇后。

词向量空间的邻域将包含许多一种类型的相关词(男人、男人、男性、男孩等 - 或国王、王后、王子、皇室等)。此外,可能有一些方向与人类的类别和量级观念(更像女性、更君主制、更高级别等)非常匹配。但是这些邻域和方向通常与空间的确切轴尺寸不是 1:1 相关的。

此外,充满词向量的空间有许多可能的近旋转/反射/变换,对于典型应用来说,它们与彼此一样好,但每个词的确切坐标完全不同。也就是说,所有预期的相对距离都是相似的——单词有“正确”的邻居,按正确的排序顺序——并且有有用的方向模式。但是每个单词中的单个词没有全局“正确”或一致的位置——只是相对有用的位置。

即使在一组向量中似乎存在一些模糊的相关性——比如“第 21 维中的高值与‘男性化’的概念相关——也可能是该向量集的巧合,而不是可靠的关系。

(有一些替代技术试图强制将单个维度映射到更易解释的概念——例如 NNSE——但它们的使用似乎不太常见。)

关于python - 词嵌入维度值实际上代表什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49732976/

10-11 08:01