2018 未来数据研究所 问题相似度匹配竞赛技术总结

1 赛题描述

1.1 2018问题相似度竞赛总结

2018年主要有三个问题相似度匹配相关的比赛,分别是蚂蚁金服的金融大脑、拍拍贷AI的魔镜杯以及CHIP会议的平安云医疗问句匹配。DUT NLP实验室以未来数据研究所的队名参加了其中魔镜杯以及CHIP的两个比赛,分别在两个比赛中取得了33/376以及5/97的成绩。

1.2 赛题背景

这里以魔镜杯的赛题背景为例:

“拍拍贷此次提供智能客服聊天机器人真实数据,以自然语言处理和文本挖掘技术为主要探索对象。利用这些资源开发一种算法,提高智能客服的识别能力和服务质量。

智能客服聊天机器人场景中,待客户提出问题后,往往需要先计算客户提出问题与知识库问题的相似度,进而定位最相似问题,再对问题给出答案。本次比赛的题目便是问题相似度算法设计。”

总体来说,就是智能客服的一个场景,对于用户的提问,将提问语句与知识库中已经准备好解答的提问进行相似度比对,来将合适的回答反馈给用户。竞赛做的就是问句匹配这么一个环节。

1.3 数据集描述

我们参加的魔镜杯和CHIP的比赛中,数据文本本身都是经过了脱敏的操作,即“所有原始文本信息都被编码成单字ID序列和词语ID序列。

”单字包含单个汉字、英文字母、标点及空格等;词语包含切词后的中文词语、英文单词、标点及空格等。单字ID和词语ID存在于两个不同的命名空间,即词语中的单字词或者标点,和单字中的相同字符及相同标点不一定有同一个ID。并且提供了预训练好的词向量。

数据集一般主要有三个文件,分别是:“

  • question.csv 中包含了训练集和测试集中所出现的所有问题,以及他们对应的单字序列和词语序列;整个文件包含3列,分别是问题的唯一编号(qid,以Q开头),对应的词语序列(chars)和单字序列(words)。

  • 训练数据:train.csv文件包含3列,分别是标签(label,表示问题1和问题2是否表示相同的意思,1表示相同,0表示不同),问题1的编号(q1)和问题2的编号(q2)。本文件中出现的所有问题编号均在question.csv中出现过。

比赛要求参赛选手预测测试数据中的每一对问题是否是同一个意思。

  • 测试数据:test.csv用来打分并决定最后的比赛排名。文件包含2列,问题1编号(q1)和问题2编号(q2)。本文件中出现的所有问题编号均在question.txt中出现过。”

2 技术总结

魔镜杯是我们第一次参加NLP相关的竞赛,缺少经验,导致一开始带着很多做论文时的想当然的想法,也在比赛中慢慢的学到了很多东西,比如模型融合、相似矩阵的灵活应用等等。

而在CHIP中我们弥补了魔镜杯的一些遗憾,比如没有使用字符级信息、模型融合的手段较少、模型结构的调试以及公式的设计较少等。但是经过新的学习还是留下了一些新的遗憾,具体详见后面改进空间的小节。我们在CHIP比赛中的部分代码可以在github中看到,这次我认为我们底层封装至少做的还是不错的。github库地址:https://github.com/DUT-LiuYang/CHIP-Task2

2.1 框架综述

我们在两次比赛中,采用的均是单模型交叉验证再进行融合的策略。

对于每个模型我们均做了10折交叉验证,然后在每一折中选择最好的模型进行融合得到一个单模型的结果。

对于不同单模型的结果,我们进行融合得到最后的提交结果,在魔镜杯中我们采用的是几何平均的方法,在CHIP中我们用的是投票法。一般来说排名靠前的队伍都是采用是stacking的方法,我们也是因为经验不足,每次留给stacking的时间不多,导致两次都没能用上stacking。

2.2 模型详述

2.2.1 ESIM

首先介绍一下我们两次比赛的主力模型ESIM:

ESIM

ESIM 当中最主要的模块就是软对齐的操作,也就是上图中带阴影的矩阵。思想就是一个句子中的每个单词分别对于另一个句子进行对齐操作,然后每个单词都可以根据对其结果得到一个由另一个句子的每个单词的向量加权求和得到的新的向量表示,有些拗口,其实本质上就是句子A中的每个单词对句子B做了一次attention。在CHIP的比赛中,我对于相似矩阵的生成方式做了一些实验,尝试了很多公式,最终发现除了直接Dot之外,最好的是下面这种:

Q1, Q2 = inputs

Q1_ = K.expand_dims(Q1, axis=2)  # (B, L1, 1, dim)
Q2_ = K.expand_dims(Q2, axis=1)  # (B, 1, L2, dim)

Q12s = Q1_ - Q2_  # (B, L1, L2, dim)

matrix = K.dot(K.abs(Q12s), self.kernel1)
matrix = K.tanh(matrix)
matrix = K.dot(matrix, self.kernel2)
similarity_matrix = K.squeeze(matrix, axis=-</pre>

即单词两两相减的结果的绝对值向量,经过压缩作为相似矩阵,这套公式是我在CHIP的比赛中尝试过最好的。我也尝试了拼接、双线性、相加等公式,结果都不尽人意。

在魔镜杯中我们仅仅跑了ESIM的word级的单模型,网络结构以及批正则化等都没做修改,加入图特征之后线上loss大概在0.181左右。在CHIP中我针对网络的中间一些结构进行了修改尝试,只用char级输入F值可以达到86.023,而word和char同时使用,结果可以达到86.59.

2.2.2 Bi-GRU with 2 layers

在魔镜杯的比赛中,实际上我们的baseline模型可以达到和ESIM相当的结果,当然也有当时的ESIM没有调试的原因。baseline模型的结构采用的是孪生网络的结构,即使用同一个编码器编码两个句子,再对于编码过的两个句子进行一些向量操作进行分类。模型大概结构如下图:

baseline model

得到两个句子的向量之后,我们做的操作是拼接、相减、相乘。

这个模型在魔镜杯中的效果还可以,单模型可以达到线上0.179(当然是只用word的结果)不过在CHIP的比赛中这个模型结果一般。

2.3 尝试过的模型及比赛经验

2.3.1 魔镜杯的经验教训

在魔镜杯的比赛中,最终的衡量指标是logloss,在这次比赛中我们一开始根据之前做情感分析的经验自己设计模型,虽然说对于相似矩阵、BiDAF等模型有过涉猎,但是没想过要在这种任务中应用,因此一开始的结果很低。后面我们也是根据群里的交流以及kaggle比赛中的一些经验,沿着ESIM->SNLI这个路线学习,研究了句子相似度领域的论文。

在这次比赛中我们的最大问题就是没有使用字符级的输入,而字符级的信息和词级的信息可以带来差异性,对后续模型融合的帮助很大。在这次比赛中ESIM和baseline的模型结果相当,这可能也是因为对于ESIM的开源代码我们没有做调试。

另外,在kaggle quora比赛中很好用的magic feature在这个比赛中同样有效,开发集loss可以降低0.03左右,线上结果也同样优秀。魔镜杯前十的代码总结在网上可以搜到,有很多犀利的操作是值得学习的,比如数据增强、利用伪标签做半监督、根据tf-idf加权等等。特别是冠军队,模型非常简单,但是抽取了丰富的特征,初赛单模型的结果吊打了所有人。

2.3.2 CHIP Task 2 的经验教训

CHIP 2018会议举办了一个医疗问句匹配的评测,在这次评测中,我们吸取了上次的经验。在不同级别信息的基础上构建模型,即词级、字级、字-词级。模型方面这次也是拓宽了范围,研究了蚂蚁和魔镜杯中一些先进的模型。相比word级ESIM,这次的比赛中我们模型的loss显著下降。另外还根据蚂蚁比赛中的经验,尝试了DRCN、DIIN等一系列模型。

这次比赛中的一些经验:

  • batch normalization 慎用,用不好会严重影响性能。

  • 相似矩阵的生成方式,尝试了很多公式,相减绝对值在这个评测中最好。

  • 在模型融合时,不同的提交文件之间计算了皮尔逊系数,选择皮尔逊系数小的进行融合。

  • 我们在比赛后期尝试了利用相似关系的传递性扩充训练集,开发集结果有不错提升,但是融合了之后线上效果并不是都好。

  • 通过随机数种子和词向量是否微调制造的差异性很小,对于模型融合的结果提升帮助不大。

后面DIIN没能调出和ESIM相当的结果,比较遗憾,确实我对于CNN系列模型的掌握一般。另外缺乏RNN系列模型以外的编码器的掌握,在比赛后期灵活性不够,蚂蚁中有利用self-attention代替RNN的经验,但是没能快速的实验。

2.4 未来的改进空间

在比赛中限于时间我们仍有一些思路没有尝试,如:

  • 用测试集置信度较高的预测实例做伪标签半监督训练

  • 阈值不固定于0.5,而是交叉验证时通过开发集灵活的选择阈值

  • 采用stacking进行模型融合

  • 采用Bi-GRU以外的编码器,比如Transformer等

  • 利用给定语料预训练语言模型

3 团队介绍

DLUT NLP Lab,大连理工大学自然语言处理实验室。

本次参赛队 未来数据研究所。(非官方)

团队成员研究范围包括:信息抽取,情感分析,阅读理解等。

未来数据研究所的队名灵感来自于《命运石之门》里的未来道具研究所

下次比赛见

最后补一个CHIP最后的排名图吧,因为那个竞赛网站有点辣鸡,排行榜上的队名变成了我学妹的user id了。

比赛排名.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,932评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,554评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,894评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,442评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,347评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,899评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,325评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,980评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,196评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,163评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,085评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,826评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,389评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,501评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,753评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,171评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,616评论 2 339

推荐阅读更多精彩内容