nlp阅读理解比赛经验贴
(一)比赛类型
多篇章阅读理解
篇章长度长
问题有多跳类型
没有yes no类型
(一)数据预处理
1、blue、rouge、f1、tfidf、bm25进行相似度度量
2、采用前1000字、与问题最相似的几句话的策略,效果都不好,只能达到76%的覆盖率
3、用相似度进行排序,将1-3个句子的前一句后两句,4-6个句子前一句后一句,7-10个句子本身,覆盖率提升到95%,平均长度1600,后期优化到了95%和1300
4、没有做可以做的就是用模型度量句子对的相似性
(三)单篇张框架
直接将抽取出来的1300长度的段落material放入模型进行训练
1、我们的模型优点在于
(1)找到了较好的网络模型(BertQA-Attention-on-Steroids):后面有问题和content之间的attention机制,相当于在传统的基于bert的阅读理解模型基础上,加上了对问题和篇章之间关键词的重复的感知,很适合我们这个比赛的数据
(2)找到了很好的预训练模型:robota和robota-large
2、我们方法的缺点在于:
(1)没有做xlnet
(2)模型的结果处理,经典bert需要512长度的content,当content长度超过512,就用64长度的划窗切分,形成几个模型结果,在模型出现结果后,选择probability最大的结果作为最后的结果,但其实每个probability的结果不在同一个维度无法比较
(3)模型的后处理做的不好,模型融合做的不合适,没有出效果
3、结果
单篇章的覆盖率95%的基础上,单模型达到了81%
(四)多篇章框架
1、思路
(1)抽取内容,从每个篇章中抽取不大于450的文本
(2)问题二分类,将问题分为一个答案的和两个答案的:样本不平衡问题,进行样本扩充
(3)利用模型度量文本与问题之间的相似度,排序之后选择文本,从而选择与之一一对应的答案:这种方法loss降低的比较慢,
2、结果
单篇章覆盖率95%
rank的方法准确率93%
单篇章抽取+rank之后的覆盖率90%
模型用robota-large之后效果81%
3、还可以做的东西
1、模型后融合
2、投票
3、k折
4、将三个任务联合放在一起训练
(五)感悟
1、模型后处理没有找到方法,后来才知道有一组是70多个结果去进行模型的后融合
2、真正的大神都是从头到尾写代码实现自己的思路的。你合不合格的标准就是你有了一个想法是不是能够从头到尾自己写代码实现掉。