本项目是基于孪生LSTM网络+注意力机制+曼哈顿距离(Manhattan distance)实现的句对相似度计算。
中文训练数据为蚂蚁金服句对数据,约4万组,正负样本比例1:3.6;英文训练数据来自Kaggle上的Quora句对数据,约40万组,正负样本比例1:1.7。新增一组翻译数据:使用Google Translator将Quora数据翻译成中文。
- 参考文献
- Siamese Recurrent Architectures for Learning Sentence Similarity
- How to predict Quora Question Pairs using Siamese Manhattan LSTM
- 中国大陆可能无法访问《How to predict...Manhattan LSTM》一文,请直接查看本项目中附件之参考博客
- 其它数据
- 工程参考
- likejazz/Siamese-LSTM Original author's GitHub
- 做个聊天机器人/智能客服 一些网络设计思路
$ python3 train.py
$ type cn for Chinese Data or en for English Data
$ python3 predict.py
$ type cn for Chinese Data or en for English Data
$ python3 score.py
$ type cn for Chinese Data or en for English Data
$ 根据数据比例来看,中文训练集的基准准确率应为0.783,英文与翻译数据为0.630
$ =================================================================================================
$ 中文 数据实际训练 5 轮时的效果:使用随机词向量时,训练集十折交叉0.778;使用CN120G词向量时,训练集十折交叉0.789
$ 英文 数据实际训练 5 轮时的效果:使用随机词向量时,训练集十折交叉0.774;使用Google词向量时,训练集十折交叉0.771
$ 翻译 数据实际训练 5 轮时的效果:使用随机词向量时,训练集十折交叉0.755;使用CN120G词向量时,训练集十折交叉0.756
$ =================================================================================================
$ 中文 数据实际训练 8 轮时的效果:使用随机词向量时,训练集十折交叉0.777;使用CN120G词向量时,训练集十折交叉0.787
$ 英文 数据实际训练 8 轮时的效果:使用随机词向量时,训练集十折交叉0.774;使用Google词向量时,训练集十折交叉0.778
$ 翻译 数据实际训练 8 轮时的效果:使用随机词向量时,训练集十折交叉0.786;使用CN120G词向量时,训练集十折交叉0.786
$ =================================================================================================
$ 总结:1.有无预训练词向量几乎不影响结果;2.中文数据上训练几乎没有效果,和英文形成鲜明对比--这可能是因为蚂蚁金服数据间太相似了或者数据量太小,翻译数据集上的实验证明了这一点。