python - 词嵌入维度值实际上代表什么?

标签 python tensorflow nlp word2vec word-embedding

我对 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)/有趣的相对位置

所有含义均在于相对距离相对方向,而不是专门与精确坐标轴对齐。

考虑一个经典的说明性示例:词向量能够解决类似“男人国王,就像女人” - 通过在坐标空间中某个预期点附近找到工作皇后

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

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

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

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

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

相关文章:

python - 导入使用原始文件,但不在 IDLE 中

python - 使用 re.sub 从文本中删除特定字符

python - 运行时错误 : module compiled against API version 0xc but this version of numpy is 0xb

machine-learning - 文档分类包括非字典词

python - 在 Azure 上运行 .exe

python - 如何使用 python(手动)反转字符串中的单词?

tensorflow - 验证准确性高于使用 Tensorflow 和 Keras 的训练准确性

python - 启动 Tensorboard - NameError : name 'tensorboard' is not defined

java - Java中命名实体识别的最大熵马尔可夫模型

python - 惰性记录器消息字符串评估