京东首届任务导向型多轮对话挑战赛【周冠军分享】JDDC大赛第二/三周周冠军大根根

分类: 小京资讯 发布时间:2018-09-01 07:24

京东首届任务导向型多轮对话挑战赛

初赛第二个周冠军

他们的名字叫“大根根”

自称赛前从未接触NLP

却一不小心霸榜,拿了双周冠军

成绩刷新56

最高得分0.37279

今天特邀他们来进行比赛心得分享~

从左至右队长周涵;队员秦飞、刘昊、李根

来自北京航空航天大学、天津大学、中国石油大学(北京)

专业涵盖信息与通信工程/软件工程/计算机/油气储运

大家好,我们是“大根根”团队!很高兴能参加京东多轮对话系统挑战赛,很荣幸能夺得JDDC初赛第十周和第十一周的周冠军,更加感谢大赛组委会给我们提供了一个和大家交流的机会。在初赛中,我们团队在技术方面并没有什么特别出彩之处,且比赛还有一段时间,更多好的模型、思路会被应用。故我们仅抛砖引玉,若有不当之处,还望各位不吝赐教。

在对话领域,目前常用的方法主要有两大类,基于IR(信息检索)的检索匹配方式以及基于Deep Learning的生成式方法。JDDC大赛初赛,官方提供了两种基线,也分别是采用了TF-IDF检索式方法以及seq2seq的生成式模型。大多数队伍最开始看到数据集,会直接考虑深度学习,然后开始优化调参,但是经过提交评测会发现效果不佳。在观察示例评测数据的时候可以发现,每一个问题对应着10个不同赋分的参考答案,而参考答案大多可以在数据集中找到与之相似度很高的句子。同时,客服领域对话场景相对固定,因此在这种情况下,采用问句文本及语义匹配的方法,较生成式方法更有优势。实际测试中,我们也尝试在匹配相似度偏低的问题中,用生成式方法替代,但结果也差强人意,故在技术篇中,主要与大家交流一些问句匹配中的方法。

在文本匹配算法中,我们仅尝试了TF-IDF、LSI、LDI模型,以及在匹配结果中在进行另一种模型的相似度排序方法,但还是TF-IDF的单一模型效果最佳。由于数据集缺少标注,很难利用深度学习进行文本匹配。在构建知识图谱,问句分类上,由于我们团队的水平有限,暂时还未尝试。


内存不足

基线程序中通过gensim实现TF-IDF,但是在数据集较大时,会出现内存不足的情况。原因在于我们使用了similarities.MatrixSimilarity类,所有的向量都存在内存中。对此,我们可以改用similarities.Similarity类,它会将索引切分为多个文件存储到硬盘上。经过实践,无需担心速度问题。

答案适当长一点

因为在做BLEU评测时,对于每个问题提供了10个候选答案,在我们无法完全通过文本及语义匹配到最高分答案句子的时候,适当增加句子所包含的信息量,经过实践证明,对提高BLEU的评测分数有所助益。通过TF-IDF模型将数据集中所有问句与问题进行相似度倒排索引,可以根据输出答案的字符长度或者匹配的相似度设定阈值,首选答案太短,就与相似度次高的答案拼接输出。虽然可能会造成两个句子之间的语义连贯性缺失的问题,但对于机器评测而言,可以有效的提高成绩。

jieba分词与京东词法分析API

JDDC交流群中,大家经常讨论分词的问题。我们团队当前使用的依旧是jieba分词的搜索引擎模式。Jieba的精确模式和全模式,在此场景下提供的分词效果不是很理想。官方提供的京东分词API调用起来相当准确且抗压,可靠性在我们的实践中达到100%。初次使用可能会看到Bad Request错误,原因可能是API对输入句子长度或者输出词数量有限制,拆分输入或直接舍弃过长对话均可,但由于分词速度较jiaba有所下降,所以目前还未考虑,在接下来的比赛中,可能会考虑加入。我们也尝试过利用京东API的词性标注或者jieba的词性标注,将特有词性提取出来作为关键词进行匹配,但是结果并不显著。

为什么一定要用QAQAQ的匹配呢?

由于客服与顾客的对话是存在一定顺序与递进关系的,整体看成一句话(Q1A1Q2A2Q3)匹配,往往会忽略对话的语境意义,将Q1A1Q2A2Q3进行合理的拆分,加权匹配,为相似度值引入对话顺序的条件,可以提高匹配的精确度。

我们可能会很自然地想到,和需要回答的answer最相关的肯定是上一个顾客提出的问题Q3,所以可以尝试提取出问题中的Q3,和数据集中的Q3做相似度匹配。更进一步,我们也可以把Q1、A1、Q2、A2分别求出相似度,然后进行加权,求出总体的相似度,在进行倒排输出。进而还可以有更多的组合匹配加权方法,如Q1A1Q2A2Q3、Q1Q2Q3、Q1A2Q3、Q2A2Q3、Q1A1、Q2A2等等,通过不同的组合,调整权值参数,以50组对话的测评数据进行bleu验证,获取最优参数。

数据集的处理永远在路上

数据的清洗会对结果产生一定的影响。初赛中为我们提供了user.txt、order.txt以及ware.txt文件,在处理中,可以尝试将对话中的商品编号替换成相应文件中的商品名称。基线中提供的数据划分方式,仔细观察还是存在一定问题的,如果一轮对话以客服开始,此对话无法正常输出,修改后可以多获得三万左右的数据集。或者考虑循环输出数据集,比如一轮对话中存在Q1A1Q2A2Q3A3Q4A4,可以输出Q1A1Q2A2Q3+A3、Q2A2Q3A3Q4+A4...数据集变大,如何筛除答案很短的无效对话?简单地通过字数,排除答案在几个字以下的可以吗?在机器评测的环境下,数据集越大越合适么?鉴于写这篇文章之时,距离初赛结束还有三周,我们只能曾经考虑过的一些数据集处理方式简单介绍一下。很多数据集的处理方式都需要在评测时才能验证是否有效,每天的评测次数有限,初赛中更好的数据处理方式还需要大家去挖掘。

五月底参加JDDC大赛源于一时兴起,在几乎没有接触过NLP的情况下报名参加了比赛。我们在NLP领域实属晚辈,在向前辈致敬和致谢的同时,也想鼓励一下与我们同龄且同样迷茫的同学:不要着急,让自己先忙碌起来,成长之路实苦,但请你足够相信,梦想还有,来日方长。

感谢主办方给予我们的支持,高效的容器环境、负责任的技术保障、开放的技术交流群。感谢JDDC项目组Will、大嘴、circle、王路、Liao,石思思和崔宇诗小姐姐提供的帮助。在此也要着重感谢“武大自然语言处理小组”、“思知”、“昂钛客AI”、“flower”等团队给予我们的帮助和启迪,同样感谢在交流群中分享自己技术路线的大佬们。

最后,祝JDDC大赛举办圆满成功,希望能有更多的专业精英参与其中,希望有更加有效的垂直领域多轮对话模型被应用,也祝愿京东的AI产业发展更加辉煌!

大 赛 预 告

8月29日将开启决赛。目前,JDDC专家组(来自美国硅谷、京东AI研究院)的专家们正在讨论决赛赛题与深度学习算法。相比初赛,题目难度会有所提升,各参赛队伍还需要多在Deep Learning上多下工夫,取得决赛佳绩,冲刺百万大奖哦~

  


AICAMP(全球AI技术训练营)是专注于AI领域的全球化社区。总部在西雅图硅谷和纽约,社区覆盖美国、加拿大、中国、欧洲、澳大利亚等多地区。社区有超过500多名来自于微软,亚马逊,Google , Facebook, Uber, Twitter, Airbnb, Intel, LinkedIn, Yahoo, Nvidia等团队的顶级技术大咖讲师,全球社区成员超过5万人(美国2万)。和全世界技术人员一起学习和练习AI技术,累计举办超过100多场线下技术沙龙,黑客马拉松,  在线技术讲座和培训,同时向全世界直播。


硅谷AI技术直播系列

硅谷技术文章推荐系列

 (下载全部课程笔记)


AICamp以往活动:

  全球AI技术开放日6 北京站 -走进京东 2018-8月25日

全球AI技术开放日5 上海站 -走进爱奇艺 2018-8月18日

全球AI技术开放日4 上海站 -走进携程 2018-7月14日

全球AI技术开放日3 北京站 -走进美团 2018-7月7日

 全球AI技术开放日-走进Google 硅谷 2018-5月25日


全球AI技术开放日-走进TalkingData 北京 2018-5月12日


硅谷人工智能技术峰会2018-4月10-13日


西雅图人工智能技术峰会2018-1月17-20日


西雅图机器学习和数据技术峰会-2017年9月15-16日


全球技术学习群

诚挚招聘

  • 运营经理:

    全职, 美国3位,中国2位。策划,组织和推广全球AI技术活动,学习,会议和课程, 配合硅谷西雅图纽约总部技术学习全球直播等。英语熟练,有技术运营经验优先考虑。可以远程工作(西雅图,硅谷,纽约,洛杉矶,北上广深或附近城市) 每年至少1次美国出差和学习。

  • AI课程教研:

    全职, 硅谷或西雅图 1位。设计和规划AI课程,和公司合作伙伴(Google, Microsoft, Amazon, Uber等)合作开发AI,机器学习,深度学习,数据科学课程。