liuhuanyong / SiameseSentenceSimilarity

SiameseSentenceSimilarity,个人实现的基于Siamese bilstm模型的相似句子判定模型,提供训练数据集和测试数据集.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SiameseSentenceSimilarity

SiameseSentenceSimilarity,个人实现的基于Siamese bilstm模型的相似句子判定模型,提供训练数据集和测试数据集.

项目介绍

句子相似度计算是自然语言处理中的一个重要技术手段,主要有两种方法:
1, 基于传统的无监督方式,传统的用于计算句子相似度的方式有很多种,感兴趣的,可以参考我的基于传统方法的句子相似读计算项目:
https://github.com/liuhuanyong/SentenceSimilarity

2, 基于标注数据的句子相似度计算.这个**大体是将句子相似度计算问题转换成一个相似句子类型判定问题,目前经典的方法是Siamese网络,这是本项目的一个初衷.

数据

数据集主要来源于CCKS2018评测项目微众银行客户问句匹配大赛, 总数据集大小为十万条.数据集样式如下:

'''
	怎么我开不了微利貸	怎么开不了户  录制不了 提示上传失败	0
	亲为什么我的审批不通过的	为什么还款及时会提示综合评估未通过	1
	你好,我借款的验证码发到我以前用的那个手机号码了,我该怎么设置呢	手机号码换了	1
	“如何获得微粒贷资格”	为什么没微粒贷啊	1
	为什么没接到电话	两天了,怎么还没有给我打电话审核?	1
	我的电话已改为	绑定的手机号码能不能更改	1
	借贷下来时间	10月国庆期间能借钱不	0
	什么时候才邀请?	什么时候才能申请	1
	上边可借56000元为什么申请不成功	为什么可借一万五,却借不出来	1
	1万利息是多少	10个月利息多少	1
	没经过审批	如何能通过微众银行审批要求	1
	延期3天还款收取逾期利息是多少?	14号还款日,逾期两天手续费是多少?	1
	申请的额度能取现吗	取现一次性取完可以吗	0
	利息与罚息如何计算	咱这个利息多高啊	1
	如何申请货款	怎样开通我微粒贷	1
	多久才有贷款	凌晨以后的申请何时到账	1
	你好 我要换卡怎么换 我卡掉了	换卡失败	0

	'''

模型

模型**:采用典型的siamese网络,两个句子分成左右两个部分进行输入,使用了四层双向lstm(权重共享)进行网络编码,最后计算两个编码之间的距离,最后做预测分类: 一 , 编码层:使用两个双向LSTM进行编码,权重共享

'''搭建编码层网络,用于权重共享'''
def create_base_network(self, input_shape):
    input = Input(shape=input_shape)
    lstm1 = Bidirectional(LSTM(128, return_sequences=True))(input)
    lstm1 = Dropout(0.5)(lstm1)
    lstm2 = Bidirectional(LSTM(32))(lstm1)
    lstm2 = Dropout(0.5)(lstm2)
    return Model(input, lstm2)
 
二, 左右句子编码相似度计算
'''基于曼哈顿空间距离计算两个字符串语义空间表示相似度计算'''
def exponent_neg_manhattan_distance(self, sent_left, sent_right):
    return K.exp(-K.sum(K.abs(sent_left - sent_right), axis=1, keepdims=True))

训练

模型 训练集 测试集 训练集准确率 测试集准确率 备注
问句匹配 80000 20000 0.8125 0.7956 20个epcho

总结

1,句子相似度计算是自然语言处理中的一个重要技术手段,本文简单实现了simamese相似度计算网络.
2,通过LSTM编码,曼哈顿距离作为相似读衡量的网络,在训练集上达到了0.81,测试集达到0.7956的准确率.
3,目前关于相似度计算的网络有很多,本项目是一个基础,后期将逐步学习,尝试其他网络.
4,将传统的相似度计算方式和深度学习网络进行融合,或许是可以做的一个点.

contact

如有自然语言处理、知识图谱、事理图谱、社会计算、语言资源建设等问题或合作,请联系我:
邮箱:lhy_in_blcu@126.com
csdn:https://blog.csdn.net/lhy2014
我的自然语言处理项目: https://liuhuanyong.github.io/
刘焕勇,**科学院软件研究所

About

SiameseSentenceSimilarity,个人实现的基于Siamese bilstm模型的相似句子判定模型,提供训练数据集和测试数据集.


Languages

Language:Python 100.0%