[[NLP]基于Simaese LSTM的句子相似度计算

update 20181105

很多读者反应代码运行出现问题,总结起来基本上都集中在keras和gensim的版本问题。一个是本文keras版本是2.1.6,Merge层在2.2.0后被弃用,改用keras.layers.Add()和keras.layers.Concatennate()。二是gensim中word2vec模型加载有问题。
下文一并进行更改,感谢各位的邮件和评论。


句子相似度计算在问答系统以及客服机器人当中应用比较频繁,比对针对对话模型中比较频繁的问句可以先进行过滤,之后再进行对话理解。在文本检测方面也有所应用,比如作家写作风格的检测。

本文叙述的句子相似度计算方法来自论文Siamese Recurrent Architectures for Learning Sentence Similarity,论文是基于Simaese LSTM网络对成对相似句进行训练,通过encode得到句子的向量表示之后计算曼哈顿距离(0-1之间)。

模型结构如下:
这里写图片描述

从上图可以看到模型分为a、b两个LSTM网络,分别对待测的两个句子进行encode得到待测句子的表示向量,最后将得到的两个向量进行距离计算,这里采用的是曼哈顿距离。

可以看到其实模型很简单,下面本文就尝试着实现一个这样的模型。

语料预处理

本文使用的数据都是编造的,长下面这样:

你们这个卡的号码要咋看
这个号码是经常变动的么
那下次再用号码会变吗
手机会显示电话号码吗
我这个卡的号码在哪里看
我怎么查我的卡的号码
怎么才能知道电话号码是什么呢
怎么看卡的电话号码
卡的电话号码应该怎么看呢
卡的电话号码在哪里可以查到呢
在哪里可以看到电话号码
卡的电话号码如何查询
卡的电话号码怎么才能知道
我买的电话卡号码怎么知道
我
  • 12
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 87
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 87
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值