深度学习之《社交网络问答系统-问题重复检测任务》实现

来源:互联网 发布:电视剧源码 编辑:程序博客网 时间:2024/06/05 07:08
范涛
发表于2017-04-05
quora duplicate questions:Semantic Question Matching with Deep Learning 

本文参考了quora duplicate questions 技术文档:
https://engineering.quora.com/Semantic-Question-Matching-with-Deep-Learning
http://geek.csdn.net/news/detail/190307

Quora 提供了一个公开数据集(https://data.quora.com/First-Quora-Dataset-Release-Question-Pairs),用来检测两个候选问题是否重复。上面参考文献中,quora工程师也给了他们采用DNN模型的一些思路和效果。
重复问题检测是一个常见的文本挖掘任务,在很多实际问答社区如quora,stackflow应该都是必须的应用。重复问题检测可以方便进行问题的答案聚合,以及问题答案推荐,自动QA等。

其中文中提到的公开的quora数据格式如下:


这是典型"1 to 1"匹配问题。
自己根据文中思路,基于keras开源框架实现了整个“重复问题检测”任务,代码放在github上。
github 代码路径:https://github.com/dylan-fan/quora_duplicate_questions

备注:
其中包含了LSTM模型,BILSTM模型, LSTM+Attention模型。
附录模型网络结构图如下:

LSTM 模型




LSTM+Attention 模型


           其实值得说的是,真实场景中,如果我们需要进行问题重复检测,第一步其实先粗选找出重复问题的候选(candidate pairs),然后才是建立本文描述的“pair dnn 模型“。第一步粗选是十分重要的,需要考虑如何在海量样本中如何找出两两候选,这里不仅仅要考虑算法精度,还要考虑算法耗时和可扩展。这个问题不在本文讨论范畴,后面有机会专门讨论下这个问题。



0 0
原创粉丝点击