单词嵌入的维度是什么?

时间:2017-07-29 23:24:20

标签: nlp terminology dimensionality-reduction word-embedding

我想了解"维度"的含义。在嵌入词中。

当我以NLP任务的矩阵形式嵌入一个单词时,维度扮演什么角色?有没有一个可以帮助我理解这个概念的视觉例子?

6 个答案:

答案 0 :(得分:6)

答案

Word嵌入只是从单词到向量的映射。单词中的维度 嵌入是指这些载体的长度。

其他信息

这些映射有不同的格式。大多数预先培训的嵌入都是 可用作空格分隔的文本文件,其中每行包含一个单词 第一个位置,以及它旁边的矢量表示。如果你要拆分 这些行,您会发现它们的长度为1 + dim,其中dim 是单词向量的维度1对应于正在表示的单词。有关真实示例,请参阅GloVe pre-trained vectors

例如,如果您下载glove.twitter.27B.zip,请将其解压缩,然后运行以下python代码:

#!/usr/bin/python3

with open('glove.twitter.27B.50d.txt') as f:
    lines = f.readlines()
lines = [line.rstrip().split() for line in lines]

print(len(lines))          # number of words (aka vocabulary size)
print(len(lines[0]))       # length of a line
print(lines[130][0])       # word 130
print(lines[130][1:])      # vector representation of word 130
print(len(lines[130][1:])) # dimensionality of word 130

你会得到输出

1193514
51
people
['1.4653', '0.4827', ..., '-0.10117', '0.077996']  # shortened for illustration purposes
50

有些无关,但同样重要的是,这些文件中的行根据在嵌入式训练的语料库中找到的词频(最常见的词首先)进行排序。

您还可以将这些嵌入表示为字典 键是单词,值是表示单词向量的列表。长度 这些列表中的单词向量的维度

更常见的做法是将它们表示为矩阵(也称为查找) 表格),维度(V x D),其中V是词汇量大小(即,如何) 你有很多单词),D是每个单词向量的维度。在 在这种情况下,您需要保留一个单独的字典,将每个单词映射到它 矩阵中对应的行。

背景

关于角色维度扮演的问题,您需要一些理论背景知识。但简而言之,嵌入单词的空间提供了很好的属性,使NLP系统能够更好地运行。这些属性之一是具有相似含义的单词在空间上彼此接近,即具有类似的向量表示,如通过诸如Euclidean distancecosine similarity的距离度量所测量的。

您可以可视化多个单词嵌入{3}}的3D投影,例如,看到“道路”最近的单词是“高速公路”,“道路”,以及Word2Vec 10K嵌入中的“路由”。

有关更详细的解释,我建议您阅读Christopher Olah撰写的here“Word Embeddings”部分。

有关使用单词嵌入(为分布式表示的实例)的原因的更多理论,比使用例如单热编码(本地表示)更好,我建议阅读Geoffrey Hinton等人的this post的第一部分。

答案 1 :(得分:4)

像word2vec或GloVe这样的单词嵌入不会在二维矩阵中嵌入单词,它们使用一维向量。 "维度"指这些载体的大小。它与词汇量的大小是分开的,词汇量是你实际保留向量而不仅仅是丢弃的词的数量。

理论上,较大的向量可以存储更多信息,因为它们具有更多可能的状态。在实践中,除了300-500之外没有太多的好处,并且在一些应用中甚至更小的载体工作正常。

这是GloVe homepage的图片。

word vector visualization

向量的维数显示在左轴上;例如,减少它会使图表更短。每列是一个单独的向量,每个像素的颜色由向量中该位置的数字确定。

答案 2 :(得分:1)

我不是专家,但我认为维度只代表已经分配给单词的变量(也就是属性或特征),尽管可能还有更多。每个维度的含义和维度的总数将特定于您的模型。

我最近在Tensor Flow库中看到了这个嵌入式可视化: https://www.tensorflow.org/get_started/embedding_viz

这特别有助于将高维模型降低到人类可感知的程度。如果您有三个以上的变量,那么可视化群集非常困难(除非您显然是Stephen Hawking)。

wikipedia article on dimensional reduction及相关网页讨论了如何在维度中表示要素以及过多的问题。

答案 3 :(得分:1)

词嵌入中的

“维数” 表示其编码的特征总数。实际上,这是对定义的过度简化,但是稍后会谈到。

功能选择通常不是手动的,它是通过培训过程中的隐藏层自动的。根据文献的语料库,选择最有用的维度(特征)。例如,如果文学是关于浪漫小说的,则与数学的文学相比,性别的维度更有可能被呈现。 / p>

(例如)您有神经网络为 100,000 个唯一单词生成的 100个维度的单词嵌入矢量(例如),通常,对目的的调查没有多大用处每个维度,并尝试通过“功能名称”标记每个维度。因为每个维度代表的特征可能不是简单且正交的,并且由于该过程是自动的,所以没有人确切知道每个维度代表什么。

要获得更多了解该主题的见识,您可能会发现此post有用。

答案 4 :(得分:0)

根据Neural Network Methods for Natural Language Processing之书Goldenbergdimensionality中的word embeddingsdemb)指的是第一权重矩阵中的列数(输入之间的权重) (word2vec之类的嵌入算法)。图像中的N的字词嵌入为dimensionalityskip-gram model

有关更多信息,请参考以下链接: https://blog.acolyer.org/2016/04/21/the-amazing-power-of-word-vectors/

答案 5 :(得分:0)

文本数据必须先转换为数字数据,然后才能输入任何机器学习算法。 单词嵌入是将每个单词映射到向量的一种方法。

在代数中,向量是空间中具有比例和方向的点。 用更简单的术语来说,向量是一维垂直数组(或者说是具有一列的矩阵),而维数是该一维垂直数组中的元素数。

像Glove,Word2vec这样的预训练单词嵌入模型为每个单词提供了多维选项,例如50、100、200、300。每个单词代表D维空间中的一个点,同义词单词彼此之间的距离更近。尺寸越高,精度越高,但计算需求也将更高。