前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >NLP 点滴 :文本相似度 (下)

NLP 点滴 :文本相似度 (下)

原创
作者头像
肖力涛
修改于 2017-08-24 01:57:02
修改于 2017-08-24 01:57:02
3.4K1
举报
文章被收录于专栏:肖力涛的专栏肖力涛的专栏

《NLP 点滴 :文本相似度 (中)》

神经网络语言模型

word2vec的思想最早起源于2003年Yoshua Bengio等人的论文A Neural Probabilistic Language Model

Traditional but very successful approaches based on n-grams obtain generalization by concatenating very short overlapping sequences seen in the training set. We propose to fight the curse of dimensionality by learning a distributed representation for words which allows each training sentence to inform the model about an exponential number of semantically neighboring sentences. [16]

从文中摘要中的这段话我们可以看出,神经网络语言模型提出的初衷便是为了解决传统的n-gram模型中维度灾难的问题,用distributed representation词向量的形式来表示每一个词语。 文中提出的模型利用了一个三层神经网络如下图(一般投影层算在输入层中,这里分开阐述):

其中,对于语料库C,词典D的长度为(|D|=N)为语料库C的词汇量

大小。对于任意一个词,表示其前n-1个词语,类似于n-gram模型,二元

对为一个训练样本。我们

为词向量,词向量的维度为m。图中W,U分别为投影层和隐藏层以及隐藏层和输出层之间的权值矩阵,p,q分别为隐藏层和输出层上的偏置向量。

论文中给出的神经网络模型如下图:

其中C(i)表示第i个词的特征向量(词向量),我们看到图中第一层为词

的上下文的每个词向量,在第二层我们将输入层的n-1个词向量按顺序首尾拼接在一起,形成一个长向量,其长度为(n-1)m,输入到激活函数tanh双曲正切函数中,计算方式如下:

经过上述两步计算得到的

只是一个长度为N的向量,我们看到图中第三层还做了一次softmax(Softmax function)归一化,归一化后

就可以表示为:

为词

在词典D中的索引。 在之前的背景知识n-gram模型

我们知道语言模型中很关键的便是F的确定,其中参数

如下:

  • 词向量:

,以及填充向量(上下文词汇不够n时)

  • 神经网络参数:

论文的主要贡献有一下两点:

1 . 词语之间的相似性可以通过词向量来表示 不同于之前我们讨论的One-hot Representation表示方式,论文中指出在进行训练时,向量空间表达的词语维度一般为30、60或100,远远小于词典长度17000,避免了维度灾难。同时语义相似句子的概率是相似的。比如:某个语料库中的两个句子S1=”A dog is running in the room”, S2=”A cat is running in the room”,两个句子从语义上看仅仅是在dog和cat处有一点区别,假设在语料库中S1=1000即出现1000次而S2=1即仅出现一次,按照之前我们讲述的n-gram模型,p(S1)>>p(S2),但是我们从语义上来看dog和cat在句子中无论从句法还是语义上都扮演了相似的角色,所以两者概率应该相似才对。

而神经网络语言模型可以做到这一点,原因是:1)在神经网络语言模型中假设了相似的词在词向量上也是相似的,即向量空间中的距离相近,2)模型中的概率函数关于词向量是光滑的,那么词向量的一个小变化对概率的影响也是一个小变化,这样下面的句子:

A dog is ruuning in the room A cat is running in the room The cat is running in the room A dog is walking in the bedroom The dog was walking in the bedroom

只要在语料库中出现一个,其他句子的概率也会相应增大。

2 .基于词向量的模型在概率计算上已经是平滑的,不需要像n-gram模型一样做额外的平滑处理,因为在softmax阶段我们已经做了归一化,有了平滑性。

我们最终训练得到的词向量,在整个神经网络模型中,似乎只是一个参数,但是这个副作用也正是word2vec中的核心产物。

CBOW和Skip-gram模型

word2vec中用到了两个重要模型:CBOW(Continuous Bag-of-Words Model)和Skip-gram(Continuous Skip-gram Model)模型,文中作者Tomas Mikolov[17]给出了模型图如下:

由图中我们看出word2vec是一个三层结构的神经网络:输入层、投影层和输出层(这里我们发现word2vec与上面我们阐述的神经网络模型的显著区别是去掉了隐藏层)。对于图中左边的CBOW模型,是已知当前词

的上下文

的前提下预测当前词

;而正好相反,Skip-gram模型是已知当前词

的前提下来预测其上下文

CBOW模型的目标函数,即其对数似然函数形式如下:

而Skip-gram模型的优化目标函数则形如:

Mikolov在word2vec中提出了两套框架,Hieraichical Softmax和Negative Sampling,这里由于博文篇幅太长了,就不错过多阐述,只对基于Hieraichical Softmax的CBOW模型进行简单总结。

CBOW模型中,与之前神经网络语言模型类似

表示一个样本,其中

表示词

的前后各c个词语(共2c个),其三层结构我们可以细化如下:

  1. 输入层:包含

中2c个词的词向量,每个词向量的维度都是m

  1. 投影层:将输入层的2c个词向量做求和累加,即
  1. 输出层:输出层对应一颗二叉树,它是以语料中出现过的词作为叶子节点,以各词在语料中出现的次数作为权重构造出来的一颗Huffman树(Huffman coding),其叶子节点共N(=|D|)个对应语料库D中的各个词,非叶子节点为N-1个。

对比我们之前讨论的最早的神经网络语言模型,CBOW模型的区别主要为以下三点:

  1. 从输入层到投影层的操作,前者通过拼接,而后者通过累加求和
  2. 前者有隐藏层,后者无隐藏层
  3. 输出层前者是线性结构(softmax),后者是树形结构(Hierarchical softmax)

word2vec对于词典D中的任意词

,Huffman树必存在一条从根结点到词

的路径

(且唯一)。路径

上存在个分支

(每条路径上的总结点数为

),将每个分支看做一次二次分类,每一次分类产生一个概率,将这些概率乘起来,便是所需的

。在二分类的过程中,可以利用Huffman编码值,即左树为1右树为0进行逻辑回归分类。

word2vec在求解的过程中主要利用了梯度下降的方法,调整学习率

,这里我们不再长篇大论的阐述,具体可以参考文献[14],对word2vec中的数学原理阐述的非常清晰。

应用

word2vec从被发布起就是各种大红大紫,在谷歌的翻译系统中,得到了很好的验证。围绕本篇博文的主题,即文本相似度的度量,word2vec产生的词向量可以非常方便的让我们做这件事情,利用欧氏距离或者cos都可以。

在之前Wetest舆情项目,做句法分析时,需要找寻某一个词的同类词语,我们用用户的游戏评论训练word2vec,效果还是不错的如下图:

对于游戏的人工想到的维度词进行同类扩展,得到扩展维度词。 之前在应用时是自己师兄使用的python版word2vec,而Java对于word2vec有一个较好的东东DL4J,但其性能我并没有经过大规模预料测试,这个大家用的时候需谨慎。

OK,长舒一口气~,好长的一篇整理,整个文章虽然涵盖了好多个模型、算法,但是围绕的一个主题便是如何度量两个文本之间的相似性,从字面和语义两个角度对自己平时用过接触过的模型算法进行整理归纳,如有任何纰漏还请留言指出,我会第一时间改正。

最后,本文大多是在平时开发时遇到的问题的总结,也非常感谢组里的同事和大神给予的交流和帮助,欢迎大家来Wetest舆情逛逛,关注游戏舆情信息。 Wetest舆情:http://wetest.qq.com/bee/

参考文献

  1. 莱文斯坦距离
  2. Commons Lang
  3. Jaro–Winkler distance
  4. 字符串相似算法-(1) Jaro-Winkler Distance
  5. Probabilistic Latent Semantic Indexing Thomas Hofmann
  6. [Algorithm & NLP] 文本深度表示模型——word2vec&doc2vec词向量模型
  7. 数学之美番外篇:平凡而又神奇的贝叶斯方法
  8. 概率语言模型及其变形系列(1)-PLSA及EM算法 概率语言模型及其变形系列(2)-LDA及Gibbs Sampling
  9. [Algorithm] 使用SimHash进行海量文本去重 海量数据相似度计算之simhash短文本查找
  10. word2vec 中的数学原理详解 DL4J 机器翻译领域的新突破
  11. word2vec 中的数学原理详解
  12. 《统计自然语言处理第2版》 宗成庆
  13. A Neural Probabilistic Language Model
  14. Exploiting Similarities among Languages for Machine Translation

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
肖老师,相似度度量包括基于字面的,基于背景知识库的,基于上下文结构的,还有基于实例的,您从基于字面和语义的角度来介绍我有些不太懂,可否拥有您的联系方式以便更好和您交流,我是一名搞相似度度量的研究生。
肖老师,相似度度量包括基于字面的,基于背景知识库的,基于上下文结构的,还有基于实例的,您从基于字面和语义的角度来介绍我有些不太懂,可否拥有您的联系方式以便更好和您交流,我是一名搞相似度度量的研究生。
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
关于 Nginx创建虚拟主机与地址重写
        server_name  www.linuxidc.com;                                  【设置域名】
星哥玩云
2022/07/13
1.1K0
编译Nginx服务部署静态网站
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件 (IMAP/POP3) 代理服务器,并在一个BSD-like协议下发行.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好.
王瑞MVP
2022/12/28
1.7K0
搭建Nginx服务器及深度优化
一、Nginx介绍 Nginx专为性能优化而开发,其最大的优点就是它的稳定性和低系统资源消耗,以及对http并发连接的高处理能力,单台物理服务器可支持20000~50000个并发请求,正是如此,大量提供社交网络、新闻资讯、电子商务及虚拟主机等服务的企业纷纷选择Nginx来提供web服务,目前中国大陆使用nginx网站用户有:新浪、网易、腾讯,另外知名的微网志Plurk也使用nginx。
小手冰凉
2020/02/11
8320
搭建Nginx服务器及深度优化
11 Nginx搭建(2)
张哥编程
2024/12/07
1110
nginx服务器
1.nginx软件安装 useradd nginx tar -zxvf nginx-1.7.10.tar.gz cd nginx-1.7.10 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module make && make install 2.nginx的配置文件及目录 /usr/local/nginx/ 安装目录 conf/nginx.conf 主配置文件 html 网页目录 logs 日志文件 sbin/nginx 启动脚本 3.nginx进程管理 启动nginx服务,sbin/nginx -c conf/nginx.conf 常用选项 -v:查看nginx版本 -V:查看编译参数 -t:测试默认配置文件 -c:指定配置文件 停止nginx:pkill -9 nginx 4.平滑升级nginx tar axf nginx-1.8.0.tar.gz cd nginx-1.8.0 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module make cd /usr/local/nginx/sbin mv nginx nginxold cd nginx-1.8.0/objs/ cp nginx /usr/local/nginx/sbin/ make upgrade nginx -v 5.nginx配置解析 配置文件结构
陪你听风
2021/03/31
8200
linux安装部署Tomcat服务器
unix和linux平台下做web服务器: -Apache,Nginx,Lighttpd(支持php,python) -Tomcat,IBM websphere,Jboss(支持Java) jdk和j
吴柯
2018/04/16
3K0
linux安装部署Tomcat服务器
手把手教你,嘴对嘴传达------Nginx网站服务(访问状态统计,基于域名,端口,IP的虚拟web主机访问)
nginx -V查看已安装的Nginx是否包含HTTP_ STUB _STATUS模块
不吃小白菜
2020/09/03
1K0
手把手教你,嘴对嘴传达------Nginx网站服务(访问状态统计,基于域名,端口,IP的虚拟web主机访问)
LNMP环境下Nginx配置
在早期的Linux服务器上,一个服务器只能运行一个网站,也就是只能跑一个域名。但随着技术的发展,一个服务器上可以跑多个域名了,这样可以帮我们节省了成本。其实这里的服务器就叫做主机,早期一个主机只能跑一个站点,而现在不同了,一个主机可以跑多个站点,多以就有了虚拟主机的概念。“虚拟主机”的概念说明白了,我想大家应该就知道默认虚拟主机的一次概念了。通俗的说就是:任何一个域名指向这台服务器,只要是没有对应的虚拟主机,就会由这个默认虚拟默认虚拟主机来处理。
刘銮奕
2019/07/30
1.4K0
Nginx安装、默认虚拟主机、用户认证、nginx中PHP解析
对于LNMP来说,最常见的就是502问题,LNMP环境搭建完成后,一访问网站直接提示“502 Bad Gateway”。主要原因大致分为两种:
阿dai学长
2019/04/03
2.3K0
Nginx 五大常见应用场景,Linux运维请收藏~
Nginx 是一个很强大的高性能 Web 和反向代理服务,它具有很多非常优越的特性,在连接高并发的情况下,Nginx 是 Apache 服务不错的替代品。其特点是占有内存少,并发能力强,事实上 nginx 的并发能力在同类型的网页服务器中表现较好,因此国内知名大厂例如:淘宝,京东,百度,新浪,网易,腾讯等等都在使用 Nginx 网站。
杰哥的IT之旅
2021/01/12
7090
Nginx 五大常见应用场景,Linux运维请收藏~
Nginx的搭建与核心配置(图文详解)
一款高新能、轻量级Web服务软件 系统资源消耗低 对HTTP并发连接的处理能力高 单台物理服务器可支持30 000~50 000个并发请求。 Nginx(发音同"engine x")是一个高性能的反向代理和 Web服务器软件,最初是由俄罗斯人 Igor Sysoev开发的。Nginx 的第一个版本发布于2004年,其源代码基于双条款 BSD许可证发布,因其系统资源消耗低、运行稳定且具有高性能的并发处理能力等特性,Nginx 在互联网企业中得到广泛应用。Nginx 是互联网上最受欢迎的开源 Web 服务器之一,它不仅提供了用于开发和交付的一整套应用技术,还是应用交付领域的开源领导者。
IT运维技术圈
2023/09/07
11.1K0
Nginx的搭建与核心配置(图文详解)
网站显示不是私密连接怎么加 https 进行加密?(在Nginx或Tengine服务器上安装证书)
前段时间我网站的加密证书到期了,刚好趁着这个时间教一下大家如何给自己的网站添加SSL 证书
海拥
2022/10/04
2.5K0
网站显示不是私密连接怎么加 https 进行加密?(在Nginx或Tengine服务器上安装证书)
另一个Web应用服务器——Tomcat
本文介绍了如何通过修改Tomcat配置文件来实现网站的权限配置,包括禁止访问、更改浏览器地址、使用SSL加密、配置虚拟主机、以及日志文件名不同的解决方案。
魏豪
2017/04/28
1.5K0
另一个Web应用服务器——Tomcat
【玩转服务器】CentOS安装nginx与部署网站
nginx 是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占用内存少,并发能力强,nginx 的并发能力在同类型的网页服务器中表现较好。
参谋带个长
2023/12/08
3.3K1
Nginx负载均衡服务搭建
Nginx ("engine x") 是一个高性能的 HTTP 和反向代理 服务器,主要代理 IMAP/POP3/SMTP 等。Nginx因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。可以运行在大多数版本的操作系统上,占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,能够支持高达 50,000 个并发连接数的响应,Nginx采用C进行编写,几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。
星哥玩云
2022/06/29
4860
Nginx负载均衡服务搭建
如何优化Nginx的处理性能
Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性,在连接高并发的情况下,Nginx是Apache服务不错的替代品。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,因此国内知名大厂例如:淘宝,京东,百度,新浪,网易,腾讯等等都在使用Nginx网站。
乔戈里
2020/07/31
1.2K0
如何优化Nginx的处理性能
编译Apache服务部署静态网站
Apache是世界使用排名第一的Web服务器软件,它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中.同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部.也是一个基金会的名称.
王瑞MVP
2022/12/28
1.5K0
Mac 全栈开发-NGinx服务器
然后在网页打开http://localhost:8080看到Nginx的欢迎信息说明启动成功。
用户1065635
2019/03/21
8770
【NGINX入门】15.史上最全Nginx面试题
打开浏览器 输入 server_name/image/1.jpg 就可以访问该静态图片了
辉哥
2021/02/05
2.3K0
【NGINX入门】15.史上最全Nginx面试题
Nginx服务器
Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔·西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。
乐心湖
2021/01/18
1.1K0
Nginx服务器
相关推荐
关于 Nginx创建虚拟主机与地址重写
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档