GloVe(Global Vectors)是通过基于整个语料构建的共现矩阵来表征词的模型。
1. 共现矩阵
共现矩阵顾明思议就是用来统计共同出现词的信息的矩阵,例如我们有语料如下:
I like deep learning. I like NLP. I enjoy flying.
对语料内容分词,去重之后,会得到不重复的:I like enjoy deep learning NLP flying .
等词。然后我们就两两词为一组,统计该组两个词在语料中共同出现的次数。
我们可以通过共现矩阵计算得到共现概率,比如:P(I|like) 表示 like 和 I 在所有与 like 共现词中的比重。
- like 和 I 出现 2 次
- like 和 deep 出现 1 次
- like 和 NLP 出现 1 次
所以部分贡献概率为:
- P(I|like) = 2 / (2 + 1 + 1) = 0.5
- P(deep|like) = 1 / (2 + 1 + 1) = 0.25
- P(NLP|like) = 1 / (2 + 1 + 1) = 0.25
在 like 环境下,发现 like 和 I 的概率大于其他的词的概率,说明在 like 与 I 相关程度比较高。
2. 共现概率比
上图中,P(k|ice)、P(k|steam) 表示共现概率,P(k|ice) / P(k|steam) 表示共现概率比。这个共现概率比的含义如下:
当 k = solid 时,共现概率比为 8.9,说明:在 ice 环境下出现 solid 的概率要比在 steam 环境下出现的 solid 的概率大得多。
当 k = gas 时,共现概率比为:0.085,说明:在 ice 环境下出现 gas 的概率要远远低于在 steam 环境下出现 gas 的概率。
从这里可以看到,共享概率比也能够很好的说明:k(solid、gas、water、fashion)、ice、steam 三个词之间的相关程度。那么,在构建 k、ice、steam 三个词向量时,也希望词向量也能够反映出这种关系。
上面公式中,共现概率比是能够通过语料计算获得,现在问题就变了寻找一种映射 F,使得输入 i j k 三个词向量,得到一个贡献概率比值,这似乎是一个回归模型。
Paper:https://aclanthology.org/D14-1162.pdf
Glove 实现源码:https://nlp.stanford.edu/projects/glove/