最近因为公司leader的要求,简单研究了一下孪生网络(Siamese LSTM,一个用来计算句对相似度的模型)。
背景
- 孪生网络的思想比较简单,是分别利用LSTM对待比较的句对中句子进行建模,然后计算两个隐层向量的曼哈顿距离(Manhattan distance)来评价句子相似度。由于LSTM建模过程一致,因此可以用全部句子训练LSTM的参数,然后参数共享给左右两个LSTM网络。
要点
- 1.将句子建模网络从LSTM改造为Bi-LSTM+Attention
- 2.中文训练数据为蚂蚁金服句对数据,约4万组,正负样本比例1:3.6;英文训练数据来自Kaggle上的Quora句对数据,约40万组,比例1:1.7。翻译数据指使用Google Translator将Quora数据翻译成中文(机翻,质量一般)。
资料
- 参考文献
- 其它数据
- 工程参考
- likejazz/Siamese-LSTM Original author’s GitHub
- 做个聊天机器人/智能客服 一些网络设计思路
代码
结果
1 | $ 根据数据比例来看,中文训练集的基准准确率应为0.783,英文与翻译数据为0.630 |
总结
1.有无预训练词向量几乎不影响结果。
2.中文数据上训练几乎没有效果,和英文形成鲜明对比–这是因为蚂蚁金服数据间太相似了或者数据量太小,翻译数据集上的实验证明了这一点。
3.孪生网络的效果没有想象中的那么好,后续还会继续从调参、加停用词等角度进行研究。此外,之前在QA机器人中用CNN来做句子语义匹配时缺少数据,现在这里的数据可以用了!233