原创:Siamese LSTM解决句子相似度(理论篇)

  nlp中语义理解一直是业内的难题。汉语不同于英语,同样一个意思,可以有很多种说法,比如你是谁的问题,就可以有如下几种:①你是谁?②你叫什么名字?③您贵姓?④介绍一下你自己 等等。这些句子在语义上是十分接近的,如果做一个智能音响,对音响说出上述任何一句,其结果不应该因为句子形式的不同而不同,也就是说训练出的模型不能对同义语句太敏感。在神经概率语言模型产生之前,解决这个问题(或者nlp领域里比较流行的特征抽取),基本上都是依赖比较传统的TF-IDF算法来构造出一个句子的向量,然后计算向量的相似度。这种方法的能力是非常有限的,最大的问题首先是,不能表示出一个句子。在神经概率语言模型,也就是深度学习引入到nlp中之后,word2vector,lstm,cnn开始逐步占据主导。在最开始的由word2vector表达词向量,扩展到目前的用LSTM表达句子的向量,还有RCNN应用于NLP可以抽取出一个句子的高阶特征,这几年热度一直居高不下。

  word2vector严格来讲,有4层的神经网络构成。input层是one-hot表示,接下来是embedding层,这两层中间的连接参数就是词的embedding表示,有one-hot到embedding的矩阵操作,相当于one-hot在词典中查找出这个词的embedding表示。所以说,word embedding的本质是连接one-hot到embedding层的权重参数,整个训练过程是训练这些参数。后两层是projection layer和output layer,output layer是分类输出层。word2vector之所以能够用表示两个词的向量的差异来衡量两个词的差异,根本原因是在训练过程中,embedding参数和output layer的参数互相推导,两者相互影响,也就是说在训练的过程中,已经兼顾到了上下文。

  在word2vector产生后,情感分析便由word2vector和svm主导,先获取到用户评价句子的每个词的表示,对每个词打分,然后加权求和得出一句话的得分,来判断这句话是好评,中评还是差评。很显然,这种方法只是从词这个局部单元考虑出发,并没有考虑到整句话所表达的意思,很容易陷入局部最优解。lstm产生后,便摒弃了这个方案,先由lstm训练出这句话的向量,然后进入到回归层进行打分。这样就能从整句话出发来判断用户的评价了。

时间: 2024-11-05 04:52:18

原创:Siamese LSTM解决句子相似度(理论篇)的相关文章

LSTM 句子相似度分析

使用句子中出现单词的Vector加权平均进行文本相似度分析虽然简单,但也有比较明显的缺点:没有考虑词序且词向量区别不明确.如下面两个句子: "北京的首都是中国"与"中国的首都是北京"的相似度为1. "学习容易"和"学习困难"的相似度很容易也非常高. 为解决这类问题,需要用其他方法对句子进行表示,LSTM是常用的一种方式,本文简单使用单层LSTM对句子重新表示,并通过若干全连接层对句子相似度进行衡量. 数据准备 训练和测试数据包

中文句子相似度之計算與應用

原文:http://www.aclweb.org/anthology/O05-1008 中文句子相似度之计算与应用 郑守益 梁婷国立交通大学信息科学系 摘要 近年來受惠于国内外各项语料库资源的建置及网际网路上的大量中文语料,使计算机语文辅助教材的涵盖层面日趋广泛.因此如何产生大量且具高质量之辅助教材日益受到许多自然语言处理研究者的重视.有鉴于此,本論文提出以中文句子相似度为基础的研究与应用.相似度的计算乃考虑句子的组合及聚合性.我们实作此一应用,并提出解决未知词的语意计算问题的方法.实验结果显示

使用RNN解决句子对匹配问题的常见网络结构

/* 版权声明:能够随意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 除了序列标注问题外,句子对匹配(Sentence Pair Matching)问题也是NLP中非经常见的一类问题.所谓"句子对匹配",就是说给定两个句子S1和S2.任务目标是推断这两个句子是否具备某种类型的关系. 假设形式化地对这个问题定义,能够理解例如以下: 意思是给定两个句子,须要学习一个映射函数.输入是两个句子对,经过映射函数变换,输出是任务分类标签集合中的某类标签.既然我们要讨论深

使用 TF-IDF 加权的空间向量模型实现句子相似度计算

使用 TF-IDF 加权的空间向量模型实现句子相似度计算 字符匹配层次计算句子相似度 计算两个句子相似度的算法有很多种,但是对于从未了解过这方面算法的人来说,可能最容易想到的就是使用字符串匹配相关的算法,来检查两个句子所对应的字符串的字符相似程度.比如单纯的进行子串匹配,搜索 A 串中能与 B 串匹配的最大子串作为得分,亦或者用比较常见的最长公共子序列算法来衡量两个串的相似程度,使用编辑距离算法来衡量等. 上述基于字符匹配层次的算法一定程度上都可以计算出两个句子的相似度,不过他们只是单纯的从字符

汉语语义消歧之 -- 句子相似度

这里隆重推出介绍一种词义消歧的(简单)方法:句子相似度 虽然第一反应一定是介个,但是总不能说他们的相似度就是单词出现的重复次数吧= =||,怎么看都觉得不科学233 于是,我们想到了最简单却又好用的相似度判断方式,就是"余弦相似性"(cosine similiarity)了啦: 我们现在有两句话s1和s2,那么他们的余弦相似度怎么求呢? 现在令s1.s2词频向量为v1.v2(注意,是向量!),则我们"想象一下": 如果v1和v2方向相同,大致等价于s1.s2句子构成

nlp自然语言处理中句子相似度计算

在做自然语言处理的过程中,现在智能对话比较火,例如智能客服,智能家电,智能音箱等,我们需要获取用户说话的意图,方便做出正确的回答,这里面就涉及到句子相似度计算的问题,那么本节就来了解一下怎么样来用 Python 实现句子相似度的计算. 句子相似度常用的几种方法: 1.编辑距离 2.杰卡德系数计算 3.Word2Vec 计算 编辑距离,英文叫做 Edit Distance,又称 Levenshtein 距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数, 如果它们的距离越大,说明它们越

【机器学习】Logistic Regression 的前世今生(理论篇)

Logistic Regression 的前世今生(理论篇) 本博客仅为作者记录笔记之用,不免有非常多细节不正确之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需转载,请附上本文链接,不甚感激! http://blog.csdn.net/cyh_24/article/details/50359055 写这篇博客的动力是源于看到了以下这篇微博: 我在看到这篇微博的时候大为触动,由于,如果是rickjin来面试我.我想我会死的非常慘,由于他问的问题我基本都回答不上来.

Logistic Regression 的前世今生(理论篇)

[机器学习]Logistic Regression 的前世今生(理论篇) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需转载,请附上本文链接,不甚感激! http://blog.csdn.net/cyh_24/article/details/50359055 写这篇博客的动力是源于看到了下面这篇微博: 我在看到这篇微博的时候大为触动,因为,如果是rickjin来面试我,我想我会死的很惨,因为他问的问题我基本都回答不上

动态路由协议之OSPF理论篇(上)

OSPF路由协议基本原理 解决RIP的瓶颈--15跳数 OSPF路由协议总述(知识点纲要) 四种路由类型:DR.BDR.ABR.ASBR 五大区域:骨干区域.标准区域.末梢区域.纯末梢区域.非纯末梢区域 五大数据包类型:Hello.DBD.LSR.LSU(包含多个LSA).LSACK 六种LSA:Type1.Type2.Type3.Type4.Type5.Type7 七个状态:Down.Init.2-Way.Exstart.Exchange.Loading.Full 一.网关协议 1.内部网关协