【NLP】GloVe原理详解

一、什么是GloVe

  • 模型目标:进行词的向量化表示,使得向量之间尽可能多地蕴含语义和语法的信息。
  • 输入:语料库
  • 输出:词向量
  • 方法概述:首先基于语料库构建词的共现矩阵,然后基于共现矩阵和GloVe模型学习词向量。

二、GloVe的实现步骤

在这里插入图片描述

1、构建共现矩阵

设共现矩阵为 X X X,其元素为 X i , j \displaystyle X_{i,j} Xi,j
X i , j \displaystyle X_{i,j} Xi,j的意义为:在整个语料库中,单词i和单词j共同出现在一个窗口中的次数。
举个栗子:
设有语料库:i love you but you love him i am sad
这个小小的语料库只有1个句子,涉及到7个单词:i、love、you、but、him、am、sad。
如果我们采用一个窗口宽度为5(左右长度都为2)的统计窗口,那么就有以下窗口内容:

窗口标号 中心词 窗口内容
0 i i love you
1 love i love you but
2 y i love you but you
3 but ove you but you love
4 you you but you love him
5 love but you love him i
6 him you love him i am
7 i love him i am sad
8 am him i am sad
9 sad i am sad

窗口0、1长度小于5是因为中心词左侧内容少于2个,同理窗口8、9长度也小于5。
以窗口5为例说明如何构造共现矩阵:
中心词为love,语境词为but、you、him、i;则执行:
X l o v e , b u t + = 1 \displaystyle X_{love,but} +=1 Xlove,but+=1
X l o v e , y o u + = 1 \displaystyle X_{love,you} +=1 Xlove,you+=1
X l o v e , h i m + = 1 \displaystyle X_{love,him} +=1 Xlove,him+=1
X l o v e , i + = 1 \displaystyle X_{love,i} +=1 Xlove,i+=1
使用窗口将整个语料库遍历一遍,即可得到共现矩阵X:
在这里插入图片描述

2、使用GloVe模型训练词向量

(1)模型怎么来的

  • 矩阵单词i那一行的和:
    X i = ∑ j N X i , j \displaystyle X_{i} =\sum ^{N}_{j} X_{i,j} Xi=jNXi,j
  • 条件概率,表示单词k出现在单词i语境中的概率:
    P i , k = X i , k X i \displaystyle P_{i,k} =\frac{X_{i,k}}{X_{i}} Pi,k=XiXi,k
  • 两个条件概率的比率:
    r a t i o i , j , k = P i , k P j , k \displaystyle ratio_{i,j,k} =\frac{P_{i,k}}{P_{j,k}} ratioi,j,k=Pj,kPi,k

作者发现,ratioi,j,k这个指标是有规律的,规律统计在下表:

r a t i o i , j , k \displaystyle ratio_{i,j,k} ratioi,j,k的值 单词 j , i j,i j,i 相关 单词 j , i j,i j,i 不相关
单词 i , j i,j i,j 相关 趋近1 很大
单词 i , j i,j i,j 不相关 很小 趋近1

思想:假设已经得到了词向量,如果用词向量 v i \displaystyle v_{i} vi v j \displaystyle v_{j} vj v k \displaystyle v_{k} vk通过某种函数计算 r a t i o i , j , k \displaystyle ratio_{i,j,k} ratioi,j,k,能够同样得到这样的规律的话,就意味着我们词向量与共现矩阵具有很好的一致性,也就说明词向量中蕴含了共现矩阵中所蕴含的信息。
设用词向量 v i \displaystyle v_{i} vi v j \displaystyle v_{j} vj v k \displaystyle v_{k} vk计算 r a t i o i , j , k \displaystyle ratio_{i,j,k} ratioi,j,k的函数为 g ( v i , v j , v k ) \displaystyle g( v_{i} ,v_{j} ,v_{k}) g(vi,vj,vk)(先不去管具体的函数形式),那么应该有:
P i , k P j , k = r a t i o i , j , k = g ( v i , v j , v k ) \displaystyle\frac{P_{i,k}}{P_{j,k}}=ratio_{i,j,k} =g( v_{i} ,v_{j} ,v_{k}) Pj,k

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值