第8章 检测Quora数据集中的重复问题
Quora是一个社区驱动的问答网站,可供用户公开或者匿名地提出和回答问题。2017年1月,Quora首次发布了一个包含问题对的公共数据集——Quora数据集,其中有的可能是重复的。重复问题对在语义上是类似的,或者说尽管两个问题使用不同的词汇,但是表达了完全相同的意思。为了给用户提供更好的答案库,以便他们尽快找出需要的信息,Quora需要为每个问题都准备一个页面,这个工程量是非常大的。版主机制对于避免网站上的重复内容是很有帮助的,但是一旦每天回答的问题越来越多,历史存储也会不断增长,这种机制就不易扩展了。这种情况下,基于自然语言处理和深度学习的自动化项目就成了合适的解决方案。
在本章中,我们会介绍如何构建一个基于TensorFlow的项目,用Quora数据集来解释句子之间的相似性。本章的内容基于Abhishek Thakur的工作Is That a Duplicate Quora Question。他基于Keras软件包开发了一套方案,所提出的技术也可以很容易地应用于其他有关语义相似性的问题。
本章主要包括如下内容:
- 文本数据的特征工程;
- TF-IDF和奇异值分解(Singular Value Decomposition,SVD);
- 基于特征的Word2vec和GloVe算法;
- 传统的机器学习模型,例如logistic回归和使用
xgboost
的梯度提升; - 深度学习模型,包括LSTM、GRU和1D-CNN。
学完本章,你将可以训练自己的深度学习模型,进而解决类似的问题。我们先来介绍Quora数据集。
8.1 展示数据集
Quora数据集仅面向非商业目的,可供用户在Kaggle竞赛和Quora官方网站上获取,其中包含404351个问题对,有255045个负样本(非重复的)和149306个正样本(重复的)。在这个数据集中,正样本的比例大约是37%。这说明存在轻度的数据不均衡,但是并不需要刻意修正。事实上,正如Quora官方网站所公布的,在初始的采样策略影响下,Quora数据集中的重复样本要比非重复样本多得多。为了构建更加均衡的数据集,负样本需要通过相关问题进行升采样。这些问题是关于相同主题的,但是事实上它们并不相似。 ...
Get TensorFlow深度学习项目实战 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.