人机对话,是人工智能领域的一个子方向,通俗的讲就是让人可以通过人类的语言即自然语言与计算机进行交互。很多同学不清楚聊天、问答和任务驱动型对话有什么区别,相信读完这篇文章后会明白一些。
人机对话系统可以分为四个子问题:闲聊、任务驱动的多轮对话、问答和推荐。闲聊分别与问答和任务导向型对话都有交叉,所以实际应用基本上都包含多个子任务。其中,闲聊、问答和任务驱动的多轮对话都是用户先挑起话题,对话系统被动的进行响应。而推荐是对话系统主动向用户推送一些用户感兴趣的信息或服务。
闲聊
在用户的话语并无明确的信息或服务获取需求的情况下,系统需要做出回应。闲聊在现有的人机对话系统中,主要起到拉近距离,建立信任关系,情感陪伴,顺滑对话过程的作用。
数据集
中文闲聊语料:https://github.com/codemayq/chinese_chatbot_corpus
中英文闲聊语料:https://github.com/candlewill/Dialog_Corpus
中文多轮闲聊语料:https://github.com/MarkWuNLP/MultiTurnResponseSelection-
比赛
-
ConAI2(Conversational Intelligence Challenge)
发布了训练和评估闲聊对话系统的数据集,并提供了评测标准,是NIPS大会8个正式竞赛任务之一。
PearAI基线代码:https://github.com/facebookresearch/ParlAI/tree/master/projects/convai2
2017年冠军代码:https://github.com/sld/convai-bot-1337
2018年冠军代码:https://github.com/atselousov/transformer_chatbot -
Alex Prize
2017年冠军资料:https://sounding-board.github.io/
-
ConAI2(Conversational Intelligence Challenge)
代码
中文聊天:https://github.com/fate233/chatbot-zh-torch7
英文聊天:https://github.com/chenb67/neuralconvo
聊天机器人教程:https://github.com/warmheartli/ChatBotCourse
检索式聊天机器人:https://github.com/dennybritz/chatbot-retrieval
任务驱动的多轮对话
用户具有明确的目的,希望得到满足特定限制条件的信息或服务,例如:订餐,订票,寻找音乐、电影或某种商品等等。因为用户的需求可以比较复杂,可能需要分多轮进行陈述,用户也可能在对话过程中不断修改或完善自己的需求。此外,当用户的陈述的需求不够具体或明确的时候,机器也可以通过询问、澄清或确认来帮助用户找到满意的结果。
数据集
哈工大整理的一份非常全面的任务型数据集汇总:https://github.com/AtmaHou/Task-Oriented-Dialogue-Dataset-Survey-
比赛
-
JDDC(JD Dialog Challenge)大赛,全球首届任务导向型对话系列挑战赛
亚军代码:https://github.com/Dikea/Dialog-System-with-Task-Retrieval-and-Seq2seq:
季军代码:https://github.com/zengbin93/jddc_solution_4th
基线代码一:https://github.com/SimonJYang/JDDC-Baseline-TFIDF
基线代码二:https://github.com/SimonJYang/JDDC-Baseline-Seq2Seq - DST (Dialog System Technology Challenge) 对话系统技术挑战赛,包括6个challenge,它要求参赛的AI模型依据给定的多轮对话历史从上万个句子中选出正确的回复。
- SMP2018中文人机对话技术评测(The Evaluation of Chinese Human-Computer Dialogue Technology, SMP2018-ECDT),包括两个任务,分别是用户意图领域分类和特定域任务型人机对话在线评测
- SMP2019中文人机对话技术评测现在正在进行中:http://conference.cipsc.org.cn/smp2019/evaluation.html
-
JDDC(JD Dialog Challenge)大赛,全球首届任务导向型对话系列挑战赛
问答
不同于信息检索根据用户的问题给出一个相关链接,问答系统直接给出精准的答案。问答系统和任务驱动的多轮对话最根本的区别在于系统是否需要维护一个用户目标状态的表示和是否需要一个决策过程来完成任务。目前,解决问答的方法可以划分为三种,基于信息检索的问答、基于知识图谱的问答和基于阅读理解的问答。
- 比赛
- Answer Sentence Selection : ACL举办的问答比赛
- 基于阅读理解的问答
SQuAD:单轮问答
CoQA:多轮问答
第三届“讯飞杯”中文机器阅读理解评测正在进行中:
https://hfl-rc.github.io/cmrc2019/
推荐
推荐系统根据历史聊天记录或者用户画像为用户主动推荐用户感兴趣的信息或者服务。
小结
商业应用的人机对话系统根据应用的场景不同既可以是同时综合问答、闲聊、任务导向的多轮对话和推荐全部或部分任务的复杂系统,也可以是单纯解决其中一类问题的系统。例如大家熟知的苹果Siri、微软Cortana、百度度秘等语音助手类产品就是集合上述四类问题综合系统,但是主要研究发展任务导向型对话,其中Siri和Cortana的聊天功能并不能算开放域,而是人工为高频的问题编辑了对应的回答,当用户的聊天不在预先配置的范围内时,系统则回复“我听不懂”之类的固定答案。而度秘的开放域聊天则是应用了更先进的基于海量数据的检索式聊天技术。目前的智能客服类系统则多以解决问答和推荐类问题为主;微软小冰主要发展EQ,研究开放域聊天;而许多订票,订酒店类的对话系统则是任务驱动的多轮对话的典型应用。
参考资料
[1] Li, F. L., Qiu, M., Chen, H., Wang, X., Gao, X., & Huang, J., et al. (2018). Alime assist: an intelligent assistant for creating an innovative e-commerce experience.
[2] Chen, H., Liu, X., Yin, D., & Tang, J. (2017). A survey on dialogue systems: recent advances and new frontiers. Acm Sigkdd Explorations Newsletter, 19(2).
[3] https://www.leiphone.com/news/201704/8ofqhd0UEJVjgWHv.html
[4] https://www.leiphone.com/news/201707/tNC1efxsThNirUvx.html
[5] https://www.xenonstack.com/blog/data-science/ai-nlp-big-deep-learning/
[6] https://www.jiqizhixin.com/articles/2018-10-22-14
[7] 第一张图片引自知乎用户悟忌(找不到链接了)
注:本文旨在分享交流,如有错误之处,请批评指正。后期将不断更新~