首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深度学习第45讲:GloVe词向量与相关应用

在前面几讲中笔者对 word2vec 词向量进行了相对详细的介绍,并在上一讲给出了 skip-gram 模型的训练示例。除了 word2vec 之外,常用的通过训练神经网络的方法得到词向量的方法还包括 Glove(Global Vectors for Word Representation)词向量、fasttext 词向量等等。本节笔者将对 GloVe 词向量进行简单的介绍,并在此基础上对基于 GloVe 模型训练好的词向量计算预先相似度和语义近似与类比等分析。

GloVe 词向量

GloVe 词向量直译为全局的词向量表示,跟 word2vec 词向量一样本质上是基于词共现矩阵来进行处理的。GloVe 词向量模型基本步骤如下:

基于词共现矩阵收集词共现信息。假设 Xij 表示词汇 i 出现在词汇 j 上下文的概率。首先对语料库进行扫描,对于每个词汇,我们定义一个 window_size ,即每个单词向两边能够联系到的距离,在一句话中如果一个词距离中心词越远,我们给予这个词的权重越低。

对于每一组词对,都有:

其中 wi 表示中心词向量,wj 表示上下文词向量,bi 和 bj 均表示上下文词的常数偏倚。

定义 GloVe 模型损失函数:

其中加权函数 f 可以帮助我们避免只学习到一个常见词的词向量模型,f 函数的选择原则在于既不给常见词(this/of/and)以过分的权重,也不会给一些不常见词(durion)太小的权重。参考形式如下:

GloVe 词向量在语义类别的准确率上与 word2vec 词向量的准确率对比:

计算余弦相似度

笔者基于 Andrew NG 在 deeplearningai 序列模型课程上给出的 Glove 词向量,示例如下:

导入相关的 package 并读入 Glove 词向量:

为了衡量两个单词在语义上的相近性,我们采用余弦相似度来进行度量。余弦相似度的计算公式如下:

基于余弦相似度的词汇语义相似性度量:

定义余弦相似度计算公式:

计算示例如下:

根据计算结果,我们可以看到,father 和 mother 之间有非常高的相似度,而 ball 和 crocodile 之间相似度较低。

语义类比

有了词汇之间的相似性度量之后,我们便可基于此做进一步分析,比如要解决 a is to b as c is to_这样的语义填空题。我们可以利用词汇之间的余弦相似性计算空格处到底填什么单词。

完整的函数定义如下:

计算示例如下:

通过计算我们可以看到:

italy is to italian as spain is to spanish.

small is to smaller as large is to larger.

基本上能较好的契合语义。

参考资料:

deeplearningai.com

https://cndocr.github.io/text2vec-doc-cn/glove.html

https://nlp.stanford.edu/pubs/glove.pdf

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181117B0LH5Z00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券