Glove 词向量

1 目的和思想

Glove模型的目的:求出能表示出词与词之间的关系的词向量
Glove的整体思想:词 k 在词 i 和词 j 中的的出现概率 有着特殊规律
模型出自论文: Glove: Global Vectors for Word Representation

2 模型原理

模型实现:

  1. 共现矩阵(对称矩阵)
  2. SVD处理成三角矩阵
  3. 拟合计算词向量

2.1 共现矩阵

以窗口的大小,出现在同一个窗口中的词计数

例:

  1. I love you.
  2. you love me.
  3. you like me?
Iloveyoumelike.?
I0110010
love1021020
you1102121
me0120111
like0011001
.1221000
?0011100

2.2 SVD奇异值分解

将共现矩阵转换成三角矩阵 Σ Σ Σ,目的为了降维和减少计算量

A = U Σ V T A=UΣV^T A=UΣVT

2.3 拟合

通过设计的函数,将词向量和共现概率比值进行计算,使loss函数越小

  • 设计的函数如下,是通过共现词频率比值的规律来设计的:
    在这里插入图片描述
    f(x):权重,为了不让相关度太高,保持相对高就行
    f(x)

3 Glove 总结

Glove 模型主要是利用了共现频率比值,这个特殊的规律,以这个规律来设计 loss 函数进行训练,得到的效果比部分模型的效果好

3.1 Glove 优缺点

3.1.1 优点

  1. 和 word2vec 相比,word2vec 是周围范围内的词训练,glove 是以统计的词,更全面

4 Glove 函数使用

4.1 输入

sentense = [['I', 'love', 'you', '.'],
             ['you', 'love', 'me','.'],
             ['you', 'like', 'me','?']]

4.2 函数及参数

from glove import Glove
from glove import Corpus  # 语料库

# 生成共现矩阵,再SVD降维
corpus_model = Corpus()
corpus_model.fit(sentense, 
                 window=10)  # 窗口大小 (用于统计同一窗口的词,生成共现矩阵)

得到三角矩阵 Σ Σ Σ 作为 glove 输入 :
在这里插入图片描述

glove = Glove(no_components=10,   # 词向量维度
              learning_rate=0.05) # 学习率
glove.fit(corpus_model.matrix,
          epochs=10,              # 迭代次数
          no_threads=1,           # 计算线程数
          verbose=False)           # 打印epochs进度

4.3 输出及应用

# most_similar函数需要使用dictionary
glove.add_dictionary(corpus_model.dictionary)

print(glove.dictionary)
print(glove.word_vectors)
print(glove.most_similar('love', number=4))

词向量有 7 种词,每个词的维度为 10:
在这里插入图片描述在这里插入图片描述
和 love 相近的词 top3 :
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值