1.背景介绍
1.1词向量表示:
计算机无法直接对文字或者单词进行处理,所以需要先把文字和单词转换成数字。把单词表示成向量,使得向量之间尽可能多地蕴含语义和语法信息。这些向量可用作各种应用中的特征,例如信息检索、文本分类、命名实体识别等。
1.2在作者提出GloVe模型以前,两种主要的词向量表示方法是:
1.全局矩阵分解方法,比如LSA(潜在语义分析),这种方法利用到了统计信息,但是在单词类比任务上表现较差,表明向量空间结构处于次优状态。
2.局部上下文窗口方法,比如skip-gram模型,这种方法能够较好地处理词间地关系,但是统计信息作为有用地先验知识,没有很好的利用到。
1.3GloVe模型:
GloVe全称是 Global Vectors for Word Representation,(论文地址)于2014年由斯坦福团队提出的一种无监督学习算法,用于学习单词的向量表示。该模型结合了全局矩阵分解和基于局部语境学习的优点,在单词类比任务上取得了75%的最优性能,并且作者证明,该模型在单词相似性任务和命名实体识别任务上优于其他当前方法,并公布了模型源代码和一系列预训练单词向量(地址)。
2.GloVe模型
GloVe模型思想大致是:首先构建一个共现矩阵,建立词向量和共现概率比的映射关系,建立损失函数,再利用一些优化算法,最小化损失函数,去学习模型参数,最终得到词向量。
下面介绍论文作者引入的概念和Glove模型的具体思想。
2.1共现矩阵
什么是共现?
单词j出现在单词i的环境中叫共现。论文中给的环境是以单词i为中心的左右十个单词区间。
什么是共现矩阵
共现矩阵是一个|v|*|v|大小的矩阵(|v|是语料库的词汇表),是单词对共现次数的统计表。矩阵元素Xi,j,表示的是单词j出现在单词i环境中的次数。举个例子:
有语料库如下,
I like deep learning.
I like NLP.
I enjoy flying.
指定窗半径为1,其共现矩阵如下:
X01就表示单词like出现在单词I环境中的次数为2。
如何构建共现矩阵?
- 首先构建一个|v|*|v|大小的矩阵,|v|为词汇表,置矩阵所有元素为0.
- 指定窗口半径大小,从第一个单词开始,逐个滑动窗口,对出现在当前中心词的背景词,在矩阵中对应元素+1,这样说比较抽象,以上面语料库为例子进行说明。
以斜体加粗表示中心词,加粗的单词表示背景词。首先,I like deep learning.I like NLP.I enjoy flying.则 X like,I+=1.
继续滑动窗口,I like deep learning.I like NLP.I enjoy flying. X deep,like+=1,X i,like+=1;
继续滑动窗口,I like deep learning.I like NLP.I enjoy flying.X learning,deep+=1, X like,deep+=1;
继续滑动窗口,I like deep learning. I like NLP.I enjoy flying.X .,learning+=1, X deep,learning+=1.
继续滑动窗口,直到最后。
共现矩阵的特点:
- 共现矩阵统计的是单词对共现在给定环境中的次数,从一定程度上可以反映单词间的关系。
- 单词对的共现频次是针对整个语料库而不是一句或者一段文档,具有全局统计特征。
- 矩阵是对称的。
2.2共现概率比
作者提出,于原始概率相比,概率的比值更能够区分相关的词和不相关的词,并且还能够更好地区分两个相关词。
假设已经得到了词向量,如果用词向量Vi,Vj,Vk通过某种函数计算ratioi,j,k,能够同样得到这样的规律的话,就意味着词向量与共现矩阵具有很好的一致性,也就说明词向量中蕴含了共现矩阵中所蕴含的信息。
2.3设计词向量函数
2.4模型评估
作者在单词类比、单词相似性和命名实体识别任务上进行实验对模型进行了评估。
单词类比任务结果:
单词相似性任务
命名实体识别任务