Globe是一种无监督学习算法,用于获取单词的向量表示。训练是在来自语料库的聚合全局单词共现统计数据上进行的,结果表示显示了单词向量空间有趣的线性子结构。
- 下载最新的最新代码(根据Apache许可证,2.0版).
查找“克隆或下载”
- 解压缩文件:unzip master.zip
- 编译源代码:cd GloVe-master&&make
- 运行演示脚本:/演示.sh
- 有关进一步的用法详细信息,请参阅附带的自述文件,或询问问题
杰弗里·彭宁顿(Jeffrey Pennington)、理查德·索彻(Richard Socher)和克里斯托弗·曼宁(Christopher D.Manning)。2014GlobVe:用于单词表示的全局向量. [pdf格式] [围兜]
1.最近的邻居
两个词向量之间的欧氏距离(或余弦相似度)为度量对应词的语言或语义相似度提供了一种有效的方法。有时,根据这个度量标准,最近的邻居会发现一些罕见但相关的单词,这些单词位于普通人的词汇表之外。例如,以下是与目标单词最接近的单词青蛙以下为:
2.线性子结构
用于最近邻计算的相似性度量产生一个标量,用于量化两个单词的相关性。这种简单性可能会有问题,因为两个给定的单词几乎总是表现出比单个数字更复杂的关系。例如,男人可被视为类似于女人这两个词都描述了人类;另一方面,这两个词通常被认为是对立的,因为它们突出了人类彼此不同的主轴。
为了以定量的方式捕捉区分所需的细微差别男人从女人,模型必须将多个数字与单词对关联。两个词向量之间的向量差是扩大的一组区别数的一个自然而简单的候选者。GloVe的设计是为了让这种向量差异尽可能地捕捉到两个单词并置所指定的含义。
区别于男人从女人也就是说,sex或gender可以由其他各种词对等效地指定,例如国王和女王或兄弟和姐妹为了从数学上说明这一观察结果,我们可以预计矢量差男人-女人,国王-女王,以及兄弟-姐妹可能都大致相等。在上述可视化设置中可以观察到该属性和其他有趣的模式。
GloVe模型是根据全局单词共现矩阵中的非零项进行训练的,该矩阵列出了给定语料库中单词相互共现的频率。填充此矩阵需要对整个语料库进行一次遍历以收集统计信息。对于大型语料库,这一过程的计算成本可能很高,但这是一次性的前期成本。后续的训练迭代要快得多,因为非零矩阵条目的数量通常远小于语料库中的单词总数。
此包中提供的工具可自动收集和准备用于输入模型的共现统计信息。核心训练代码与这些预处理步骤分离,可以独立执行。
GloVe本质上是一个具有加权最小二乘目标的对数双线性模型。该模型的主要直觉是简单地观察到单词共现概率的比率有可能编码某种形式的意义。例如,考虑目标词的共现概率冰和蒸汽用词汇表中的各种探测词。以下是来自60亿单词语料库的一些实际概率:
正如人们所料,冰更频繁地与固体与之相比气体,而蒸汽与共同出现的频率更高气体与之相比固体.这两个词与他们的共有财产一致水经常出现,两者都与不相关的单词共现时尚很少。只有在概率比中,非歧视性词语如水和时尚抵消,使大值(远大于1)与冰的特性密切相关,小值(远小于1)与蒸汽的特性密切关联。通过这种方式,概率比编码了一些与热力学相的抽象概念相关联的粗糙形式的含义。
GloVe的训练目标是学习单词向量,使其点积等于单词共现概率的对数。由于比率的对数等于对数之差,这一目标将共现概率的比率(对数)与单词向量空间中的向量差联系起来。因为这些比率可以对某种形式的意义进行编码,所以这些信息也被编码为向量差异。因此,生成的单词向量在单词类比任务中表现得很好,例如在单词2vec包裹。
GloVe生成带有标记的带状结构的单词向量,在可视化时很明显:
水平带是由于模型中的乘法相互作用沿组件方向发生。虽然点积会产生加性相互作用,但一般来说,个体维度几乎没有空间进行异花授粉。
随着单词频率的增加,水平带变得更加明显。事实上,随着词频的变化,存在着明显的长期趋势,它们不太可能有语言渊源。这个特性并不是GloVe独有的——事实上,我不知道有什么模型可以避免这个问题。
垂直带,例如围绕单词230k-233k的垂直带,是由于相关单词(通常是数字)的局部密度造成的,而这些单词恰好具有相似的频率。
- Globe v.1.2:小错误修复代码(内存、脱机、错误)。现在还提供评估代码有Python和Octave两种版本。最大数据文件的UTF-8编码固定。由罗素·斯图尔特和克里斯托弗·曼宁编写。2015年10月。
- Globe v.1.0版:原件释放。由Jeffrey Pennington编写。2014年8月。
github:GloVe是在github。对于错误报告和修补程序,最好使用GitHub问题和Pull请求功能。
谷歌集团:谷歌集团球形分离器可用于Globe上的问题和一般讨论。