数据集
公开数据集
英文:
- GLUE数据集中的MNLI, QQP, QNLI, STS-B, MRPC, RTE ,[SWAG].
- STS基准收集了2012年至2017年国际语义评测SemEval中所有的英语数据。
- SICK数据集包含了10000对英语句子,其中的标签说明了它们之间的语义关联和逻辑关系
- [SEMEVAL-2012] (http://www.cs.york.ac.uk/semeval-2012/task6/index.php?id=data).语义文本相似度视频描述数据集,每个句子对按照含义的关系标注以及两者的蕴含(entailment)关系标注
中文:
- 蚂蚁金服NLP相似度计算数据集:https://dc.cloud.alipay.com/index#/topic/data?id=8
- 搜狗实验室数据集。http://www.sogou.com/labs/resource/list_pingce.php
自己构建数据
考虑本身数据集的一些特点,针对表达多样性,语言噪音,同义词,人工标注等,参考数据增强的一些做法。
评估
对于离线,根据构建的离线测试集来评测,指标AUC、F1。
模型
1. Simase_LSTM
2016年SOA方法,AAAI。 参考文献《Siamese Recurrent Architectures for Learning Sentence Similarity》
贡献
1.提出新的度量方式(基于曼哈顿距离,见细节2)。优于欧几里得距离(梯度消失)、余弦相似度。【回归】
2.以距离为目标,使用LSTM来对复杂的语义建模。
3.使用MaLSTM features输入给SVM来进行分类。【分类】
相似度计算公式
g ( h T a ( a ) , h T b ( b ) ) = e x p ( − ∣ ∣ h T a ( a ) − h T b ( b ) ∣ ∣ 1 ∈ [ 0 , 1 ] g(h_{T_a}^{(a)}, h_{T_b}^{(b)}) = exp( - ||h_{T_a}^{(a)} - h_{T_b}^{(b)} ||_1 in [0, 1] g(hTa(a),hTb(b))=exp(−∣∣hTa(a)−hTb(b)∣∣1∈[0,1]
2. Learning Text Similarity with Siamese Recurrent Networks
《Learning Text Similarity with Siamese Recurrent Networks》
本文和Siamese Recurrent Architectures for Learning Sentence Similarity类似,有以下改进
- 字符级别的char embedding。
- 使用双向的LSTM,融合双向的信息。
- 对所有lstm的输出做avg pooling,然后全连接映射到128,在做cos相似度计算。
3. CNN RNN ->RCNN
利用bi-rnn做底层特征提取,上层用cnn做提取局部特征。
- Recurrent Convolutional Neural Networks for Text Classification
- https://plushunter.github.io/2018/03/08/自然语言处理系列(8):RCNN/
4. Attention RNN
参考:https://blog.csdn.net/shine19930820/article/details/83052232
5. BIMPM
- Bilateral Multi-Perspective Matching for Natural Language Sentences
- http://octopuscoder.github.io/2017/08/06/论文简读-Bilateral-Multi-Perspective-Matching-for-Natural-Language-Sentences/
2017年文章,针对句子匹配的问题,在释义识别、自然语言推断和答案选择三个方面均取得了state-of-the-art水平。
匹配层是模型的核心层,包含四种匹配策略,分别为:Full-Matching、Maxpooling-Matching、Attentive-Matching和 Max-Attentive-Matching。
6. ESIM
- Enhanced LSTM for Natural Language Inference
- https://www.cnblogs.com/zle1992/p/9100780.html
7. Improve
加入以下attention和cosine相似度的特征来对模型的结构进行改进,提升模型精度
- 加入Attention。例如:A Decomposable Attention Model for Natural Language Inference
- 使用曼哈顿距离和cos相似度一起作为分类特征。
- 底层使用Bert尝试,或ELMo
- 加入Batch Normalization层、LN来提升收敛速度
8. BERT
《BERT》相似度
两个句子之间通过[SEP]分割,[CLS]的向量作为分类的输入,标签是两个句子是否相似。可以作为排序算法。
输入格式
参数:max_length,词汇id表:
word_ids:
- 两个句子分别加入按照字分割成token,对于数字和英文也按照每个数字或字母分割。
- 起始位置加入[CLS],然后两个句子token间通过[SEP]分割,并且根据max_length截断或填充。
word_mask:
- 根据句子实际长度以内的位置为1,padding的位置为0.
segment_ids:
- 长度max_length,第一句对应位置(包含[CLS],[SEP])全为0;第二句对应位置(包含结尾[SEP])全为1,padding为0.
[CLS] | 能 | 不 | 能 | 开 | 花 | 呗 | 老 | 兄 | [SEP] | 花 | 呗 | 逾 | 期 | 了 | 还 | 能 | 开 | 通 | [SEP] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
举例:
tokens: [CLS] 为 何 我 无 法 申 请 开 通 花 呗 信 用 卡 收 款 [SEP] 支 付 宝 开 通 信 用 卡 花 呗 收 款 不 符 合 条 件 怎 么 回 事 [SEP] input_ids: 101 711 862 2769 3187 3791 4509 6435 2458 6858 5709 1446 928 4500 1305 3119 3621 102 3118 802 2140 2458 6858 928 4500 1305 5709 1446 3119 3621 679 5016 1394 3340 816 2582 720 1726 752 102 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 input_mask: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 segment_ids: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
代码见bert git:https://github.com/google-research/bert
预训练:
- 基于task领域的语料上在继续pre-train bert,效果可能会有小提升。
Reference
- BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
- bert代码:https://github.com/google-research/bert
- Learning Text Similarity with Siamese Recurrent Networks
- Learning Sentence Similarity with Siamese Recurrent Architectures
- A Decomposable Attention Model for Natural Language Inference