glove中文词向量_Summary系列glove模型解读

48fd02a0e183e978a8fc734fb2a184ad.png

一、Glove模型简介

语义文本向量表示可以应用在信息抽取,文档分类,问答系统,NER(Named Entity Recognition)和语义解析等领域中,大都需要计算单词或者文本之间的距离或者相似度,因此,能够表达语义的文本的向量表示非常重要。

单词的语义向量生成主要有两种方式:(1)LSA(term-document)、HAL(term-term)等矩阵分解方法利用全局统计信息生成词向量;(2)skip-gram、CBOW等词向量利用语言模型的局部信息生成词向量,在词类比( king -queen = man-woman)方面具有独特优势。

作者的想法是将以上两种方式的优点结合,提出了全局对数双线性回归模型。该模型采用LSA类似想法利用单词与单词的共现矩阵获取全局统计信息,但只使用非零数据;另一方面采用和skip和cbow一样的词向量方式进行训练

二、相关工作

1、矩阵分解方法(全局信息)

LSA(term-document)、HAL(term-term)。

HAL方法的主要缺点是最常出现的单词在相似性度量中占据了不合理的分量,比如与the、and协同出现的单词,其相似性通常会比较高。论文中提到的解决方法有 positive pointwise mu-tual information (PPMI)和 Hellinger PCA (HPCA) 。

2、词向量方法(局部信息)

Mikolov在2013年提出的skip-gram、CBOW方法采用语言模型,依据一个局部窗口中的单词都是相关的这个思想来训练词向量,在词类比任务上具有非常优秀的表现。这种方法没有使用全局统计信息,比如单词A和单词B经常在一起出现,那么就应该给予更大的权重,而该模型则是对所有的训练语料都给予相同的权重。

三、Glove建模过程

1、公式的推理过程。

定义好相关符号:

代表单词间协同出现次数(word-word co-occurrence counts )的矩阵。

表示单词
在单词
上下文环境中出现的次数。

表示所有在单词
上下文环境中出现单词的次数之和。

表示单词
在单词
上下文中出现的概率。

对于冰(ice)与水蒸汽(steam),作者希望训练得到的词向量具有如下特性:

(1)与冰具有相似属性单词,如固体(solid),要求

值很大

(2)与水蒸气具有相似属性单词,如固体(solid),要求

值很小;

(3)与冰、水蒸气不相关单词,如时尚(fashion),要求

值接近1;

给定单词

的词向量,
,有如下等式:

现在需要解决的问题是函数

怎么构造,作者做了一些合理的假设选择函数

首先要考虑单词

之间的关系,作者希望在线性空间中考察两个向量的相似性,不失线性地考察,因此选择

其次等式右边是个标量,那么式子左边也应该是个标量,现在输入为向量

,那內积应该是合理的选择,于是变量应该为

然后作者又往公式的外面套了一层指数运算exp,最终得到

,为什么是指数运算呢?套上之后,我们的目标是让以下公式尽可能地成立:

48cdcf2ff58ca5cba838074c9cde384a.png

b288906c4c5124167413112625062f3a.png

本来我们需要求

,现在通过分子分母相对应,我们只需要让
。只需要N∗N的复杂度上进行计算,而不是N∗N∗N,大大减少了复杂度。然后两边取log后,得到

c2c5eb8589c913a9a1382c1c33535064.png

在这里我们发现等式左边是可以交换位置的,可是右边的

并不等于
。为此,将等式6改写为:

添了一个偏差项b,并将log(Xi)吸收到偏差项bi中。到这里我们就可以写出损失函数,

作者进行了进一步的优化,考虑到语料库中经常协同出现的单词具有更为密切的联系,作者提出来加权损失函数。

权重函数要满足如下特性:

(1) 考虑连续性,

时,
趋近于0;

(2)

非递减,这样
很小时就不会有过大的权重;

(3) 当

很大时,f(x)不会过大,这样高频词不会占有过重的权值;

作者选择的满足以上要求的函数,如下:

80796e10f0f0944df1bd97cc8768bf42.png

是经验值,是从Mikolov(2013年)的论文中直接拿来用的。

2、与skip以及cbow的关系

我们知道这两个模型的损失函数如下,

是一个softmax函数:

9b64d3515e3f77c50f13eb1896743cd9.png

全局的目标函数可以写成:

c77f93426b52e41b31ee2391bf2f83bd.png

对于大量的预料计算求和非常消耗资源,为了提高计算效率,可以把提前把那些有相同值的词分组,目标函数改写为按照词典来统计。

4bc4924f7f01dbf39430b6d75800d042.png

由于之前定义

,代入方程(12)中得到:

cd803c4a7a02afa3665e32fbab7e0173.png

是交叉熵,
是之前定义的
。然而交叉熵对于长尾分布表现不好,并且分布
需要做归一化操作,求和操作会成为计算的瓶颈。因此,文章又提出了一种不需要归一化的衡量距离的方式,也就是最小二乘法。

049c9c36a2c6afccbdcb2d4ef6ed2709.png

其中

都不需要归一化操作。但是还存在一个问题,就是
往往取值较大,会加重优化过程的计算复杂性,解决方式是,使用log来代替。同时引入权重函数,得到:

e7a7bb88a5ad635430ed837b6535a7af.png

这里的公式与我们最开始推导出来的公式非常相似。从这里可以看出,skip-gram模型与这篇论文提出模型差异,本质上是度量概率分布采用的方法不一致。前者使用的是交叉熵损失,后者使用的是加权平方误差损失。

3、复杂度估算

模型的复杂度 为

,在词典V很大时,复杂度远远高于skip-gram的复杂度
, C 是语料库的大小。所以需要对矩阵X做一些限制,比如只取共现次数非0的词等。具体的实现方式是假设词i和词j共现的次数
用词频排名
的幂律函数来表示,

6b630ceb847a76bd5d380b226a6c2c70.png

语料库词的总数正比于次数共现次数矩阵元素的加和,

e4a33562836cd483f9087bbb6026f313.png

用调和级数来表示幂律求和部分,接下来就是如何确定k了,

是词频排序最大值,同时与非0词频矩阵X的个数相等,也就是等于方程(17)中r的最大值。因为矩阵X中的元素都是词频大于或等于1的,即
,根据方程(17)

因此,总是能够找到一个k使得

,所以
,代入方程(18)得到

6a2e29214b193c33eaf595ab5f614e40.png

根据调和基数展开式

efbad244004b79f01269b3748c97af75.png

把方程(19)展开得到

b9364f0d6a6966b945345927c85a8144.png

是黎曼
函数,在X非常大时,可以看出
的关系取决与
是否 > 1,来决定是
谁占比更大,O(1)常数项不用考虑。

38c336d1652fd826f9f40d903ed21d9f.png

因此,Glove模型的复杂度小于等于skip-gram模型的复杂度。如果

的复杂度=
,远远好于
的复杂度。

四、实验结果

4.1 word analogy任务

在词语类比任务中,我们看到Glove算法在大多数情况下取得了更好的指标。在semantic subset/语义子集、syntactic subset/句法子集上均表现更佳,具体如下(此任务可以测试向量空间的子结构):

10d8328416c932a9428c5b574c7c5057.png

4.2 word similarity任务

本文用多个模型在一系列word similarity任务上进行测试,结论是:Glove优于其他模型。详细数据如下:

7359ac67b3efe8226f45894f22dc3fd0.png

4.3 NER任务

在此任务中基于CoNLL-03数据集训练模型,并在多个数据集(CoNLL-03、ACE、MUC7)上进行测试,结果显示Glove表现最佳。

8cfe3e2055fb58c96a2e350e96298591.png

五、参考文献

1、官方代码:https://nlp.stanford.edu/projects/glove/。

2、paper原文:https://www.aclweb.org/anthology/D14-1162.pdf。

3、好文参考:理解GloVe模型(Global vectors for word representation)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lynx---CentOS终端访问IP

1、官网 http://lynx.isc.org 2、稳定版本 http://invisible-mirror.net/archives/lynx/tarballs/lynx2.8.8rel.2.tar.gz 3、下载 cd /usr/local/ wget http://invisible-mirror.net/archives/lynx/tarballs/lynx2.8.8rel.2.tar.gz 4、解压 tar xzf lynx2.8.8rel.2.tar.gz 5…

wordpress 添加小工具分类

register_sidebar( array(name > __( 默认侧边栏, Bing ),//侧边的名字id > sidebar-1,//侧边栏的 ID&#xff0c;注册多个侧边栏的时候不要重复description > __( 侧边栏的描述, Bing ),//侧边栏的描述&#xff0c;会在后台显示before_widget > <div class&quo…

OnLongClickListener长按事件设置墙纸

在AndroidApp应用中&#xff0c;OnLongClick事件表示长按2秒以上触发的事件&#xff0c;本章我们通过长按图像设置为墙纸来理解其具体用法。知识点&#xff1a;OnLongClickListener  OnLongClickListener接口与之前介绍的OnClickListener接口原理基本相同&#xff0c;只是该接…

foursquare nyc数据集_炫酷的python地理数据可视化

介绍在本文中&#xff0c;我依靠纽约市提供的这一数据集&#xff0c;详细列出了从2010年1月到2017年9月的所有大鼠目击事件。在此期间&#xff0c;已有101,914例报告的老鼠目击事件。虽然这已经是一个非常高的数字&#xff0c;但实际观察的鼠标数量可能要高得多。在纽约市独自一…

ThinkPHP中where()方法的使用

where方法的用法是ThinkPHP查询语言的精髓&#xff0c;也是ThinkPHP ORM的重要组成部分和亮点所在&#xff0c;可以完成包括普通查询、表达式查询、快捷查询、区间查询、组合查询在内的查询操作。where方法的参数支持字符串和数组&#xff0c;虽然也可以使用对象但并不建议。字…

layui内置loading等待加载

https://www.cnblogs.com/moutudou/p/9453321.html 点击功能按钮之后 var loading layer.load(0, {shade: false,time: 2*1000}); 参数:  icon:0,1,2   loading风格 shade:false  是否有遮罩&#xff0c;true表示有遮罩 time : 2*1000  设定最长等待时间,设置时间之…

crawler_微信采集方案

仅供参考 转载于:https://www.cnblogs.com/cphmvp/p/3729295.html

jsp文件通常用common_springboot还能这样用redis

点击蓝字 关注我们 作者&#xff1a;xfkhttps://www.cnblogs.com/xfk1999/p/11347793.html一直想在springboot上集成带缓存的redis&#xff0c;终于成功了。网上有1000种写法&#xff0c;想找到一篇合适的还真不容易?。走下流程&#xff0c;加深下印象。环境:springboot版本&a…

takePic and Videos

2019独角兽企业重金招聘Python工程师标准>>> //// ViewController.m// UIImagePickerController// Created by Kenshin Cui on 14/04/05.// Copyright (c) 2014年 cmjstudio. All rights reserved.//AVFoundation.framework//MediaPlayer.framework//MobileCore…

VMware共享文件夹遇到的问题

我现在Linux下程序的开发模式是&#xff1a; 用VS2010编写代码(IDE太好用了)&#xff0c;然后切换到VMware虚拟机下执行make命令编译 因为使用了VMware的文件夹共享功能&#xff0c;所以源文件只需要一份拷贝 现在有个问题&#xff0c;Linux下访问过某目录后&#xff0c;如果Wi…

[模板]LIS(最长上升子序列)

转载自&#xff1a;最长上升子序列(LIS)长度的O(nlogn)算法 最长上升子序列nlogn算法 在川大oj上遇到一道题无法用n^2过于是&#xff0c;各种纠结&#xff0c;最后习得nlogn的算法 最长递增子序列&#xff0c;Longest Increasing Subsequence 下面我们简记为 LIS。排序LCS算法 …

uap--studio设置文本字体

转载于:https://www.cnblogs.com/zzzzw/p/4920460.html

可变悬挂调节软硬_【5040地推合作品牌】荷兰高性能减震器及悬挂系统品牌—KONI...

GT Show“5040计划”&#xff0c;深入全国各地省市地区&#xff0c;全方位覆盖全国改装门店、一二类维修厂、五大车型(奥迪、宝马、奔驰、保时捷、雷克萨斯)原厂升级店、高端综合店&#xff0c;深挖长三角六大城市后市场门店。GT Show不仅关注传统改装门店&#xff0c;而且全方…

简单两步干掉WordPress里面的fonts.googleapis

诚然&#xff0c;谷歌的技术和做出来的产品还是很牛逼的&#xff0c;但是喜欢趴人家的内裤这点在哪里都是行不通的&#xff0c;这不土鳖开始和谐谷歌了&#xff0c;这就直接给使用WordPress的朋友带来了点小麻烦&#xff1a;访问WordPress站很慢&#xff0c;登陆WordPress后台很…

【Alpha 冲刺】 2/12

今日任务总结 人员今日原定任务完成情况遇到问题贡献值胡武成完成API文档编写由于外出比赛&#xff0c;故推迟无0孙浩楷1.完成VUE框架搭建 2.寻找在线编辑图片插件已完成WEB在线编辑图片插件加载速度慢&#xff0c;需要再想办法解决2 0.5胡冰完成MVP框架搭建已完成由于之前有做…

mysql的一些函数

mysql_affected_rows: 得到 MySQL 最后操作影响的列数目。 mysql_close: 关闭 MySQL 服务器连接。 mysql_connect: 打开 MySQL 服务器连接。 mysql_create_db: 建立一个 MySQL 新数据库。 mysql_data_seek: 移动内部返回指针。 mysql_db_query: 送查询字符串 (query) 到 MySQL …

钻井缸套排量_中国石化顺北特深层及川渝页岩气钻完井关键技术集成:碳酸盐岩酸压技术、优快钻井技术、页岩气强化体积改造技术、高温高压窄间隙固井技术...

点击蓝字关注“油媒方”近年来&#xff0c;中国石化围绕顺北、川渝等重点探区&#xff0c;通过技术攻关与现场实践&#xff0c;初步形成了顺北8000&#xff5e;9000m特深层钻井完井关键技术、川渝页岩气钻井完井关键技术&#xff0c;支撑了中国石化在特深层油气、非常规油气资源…

标准make变量 MAKE_VERSION, CURDIR

在 Makefile 中经常会用到一些内置的标准变量。下面说明&#xff1a;1. MAKE_VERSION make 命令的版本号&#xff0c;也就是执行 make -v 时看到的版本号。2. CURDIR 当前的工作目录&#xff0c;一般的就是 Makefile 所在的目录。确切的说&#xff0c;应该是 make 执行时此进程…

爬虫如何监听插件_Go 爬虫之 colly 从入门到不放弃指南

Go语言中文网&#xff0c;致力于每日分享编码、开源等知识&#xff0c;欢迎关注我&#xff0c;会有意想不到的收获&#xff01;最近发现知乎上感兴趣的问题越来越少&#xff0c;于是准备聚合下其他平台技术问答&#xff0c;比如 segmentfault、stackoverflow 等。要完成这个工作…

多款优秀的 JS MVC 框架对比

2019独角兽企业重金招聘Python工程师标准>>> 正如之前说的&#xff0c;产品生产有功能时代转入体验时代&#xff0c;产品为王&#xff0c;体验为王&#xff0c;已经是时代趋势。体验经济的到来&#xff0c;说明前端的技术要求越来越高&#xff0c;完成功能是不行的&…