基于LSTM的语句相似度计算

举报
技术火炬手 发表于 2019/10/10 17:30:45 2019/10/10
【摘要】 语句相似度的计算,在文本对比,内容推荐,重复内容判断等方面有比较多的应用,最近学习了一种基于LSTM的语句相似度计算方法,本文对学习的过程进行总结。本文基于Siamese网络,句子相似度计算方法论文:Siamese Recurrent Architectures for Learning Sentence SimilaritySiamese Network 是指⽹络中包含两个或以上完全相同的...

语句相似度的计算,在文本对比,内容推荐,重复内容判断等方面有比较多的应用,最近学习了一种基于LSTM的语句相似度计算方法,本文对学习的过程进行总结。

本文基于Siamese网络,句子相似度计算方法论文:Siamese Recurrent Architectures for Learning Sentence Similarity

Siamese Network 是指⽹络中包含两个或以上完全相同的⼦⽹络,多应 ⽤于语句相似度计算、⼈脸匹配、签名鉴别等任务上:

论文中指出的模型结构

以语句相似度计算为例,两边的⼦⽹络从 Embedding 层到 LSTM 层等 都是完全相同的,整个模型称作 MaLSTM(ManhaĴan LSTM)。

通过 LSTM 层的最后输出得到两句话的固定长度表⽰,再使⽤以下公式 计算两者的相似度,相似度在 0 ⾄ 1 之间。

训练用的数据来自kaggle上quora的问题对数据:数据地址

数据描述

其中,训练集与测试集分别有 404290 和 3563475 条数据。训练集包含以下所有字段,测试集不包含is_duplicate字段。

id:问题对的 id;

qid1:问题 1 的 id;

qid2:问题 2 的 id;

question1:问题 1 的⽂本;

question2:问题 2 的⽂本;

is_duplicate:两个问题是不是意思⼀样,0 或 1

首先加载停用词,用正则表达式对文本进行一些预处理,将测试数据与训练数据合并后,得到所有单词的词汇列表,⽂本替换成整数序列表⽰,获得词向量映射矩阵,采用曼哈顿距离来计算两个句子的差异。

下载的数据里,测试集由于缺少is_duplicate字段,因此它只参与了词汇向量映射矩阵的构建。

将包含is_duplicate字段的训练数据分割为训练集和验证集,参与模型训练迭代过程。

基于Keras定义LSTM网络,并进行训练,网络结构采用两个句子作为输入,对输入的句子进行预处理后,计算出句子相似度的概率。

下图是整个网络大致的过程,左右两个句子输入后,句子中的每个词对应一个数字,左右两句话分别映射成一个向量,各自经过一个LSTM网络抽取特征后,使用曼哈顿距离计算两边向量的差距,最终得出预测结果。

具体代码,可以参考:MaLSTM on Kaggle’s Quora Question Pairs

参考地址:

Siamese Recurrent Architectures for Learning Sentence Similarity

MaLSTM on Kaggle’s Quora Question Pairs

深度有趣-语句相似度计算 

分割线动图.gif

本文来自“机器在学习”

原文链接:http://www.siyuanblog.com/?p=115002

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。