chatbot学习汇总

目录

场景

方案

方案1、规则

方案2、问答库

方案3、自然语言架构

自然语言理解(Nature Language Understanding)

对话管理(Dialogue Management)

自然语言生成(Natrual Language Generation)

方案4、端到端的深度学习chatbot


场景

chatbot要代替的是类似这种场景:

垂直领域的客服系统,用户产生大量相似疑问和需求,目标明确或半明确且可能需要引导。

而客服(chatbot)具有领域专业知识(知识图谱)与丰富问答经验(问答历史数据),可以快速解决用户问题和需求。chatbot解决不了的,再转到人工客服。

很多场景可能最频繁的前十个问题已经可以解决大部分用户问题,而chatbot的优势在于可以自动获取用户画像、快速读取海量知识库、通过多轮对话快速给出个性化答案。

类似的场景,如医院科室咨询、商品售后服务、淘宝客服、证券投资咨询、银行业务办理等。这些场景真正落地和解决的感觉还不多,任重而道远。

方案

方案1、规则

方案2、问答库

维护一个庞大的问答数据库,通过计算句子之间的相似度,寻找数据库中与用户问题相似的问题,然后给出相应答案。由于用户会提很多重复问题,所以每一个新问题都会和已有问题做匹配,如skip-thought计算句向量方法。

方案3、自然语言架构

当前主流chatbot架构比较趋于统一,主要是三个模块:对用户问题做处理的自然语言理解模块,对当前对话状态和决定系统反应的对话管理模块,以及反馈给用户的自然语言生成模块。(对应于Rasa的Rasa NLU、Rasa core、自定义响应方法。)

推荐开源工具:Rasa(https://www.rasa.com/)

自然语言理解(Nature Language Understanding)

意图识别+实体识别

对话管理(Dialogue Management)

a、使用规则,实现和维护都比较繁琐。

b、在较新的研究中,有将对话管理的状态建模成一个序列标注的监督学习问题,甚至有用强化学习(Reinforcement Learning),加入一个User Simulator来将对话管理训练成一个深度学习模型。

自然语言生成(Natrual Language Generation)

自然语言生成(NLG)模块是机器与用户交互的最后一公里路。

对于闲聊机器人来讲,往往在大量语料上用一个seq2seq的生成模型,直接生成反馈给用户的自然语言。然而这个模型的结果在垂直领域的以任务为目标的客服chatbot中往往不适用;客户需要的是准确的解决问题的答案,而不是汪峰style的歌词或者包含诗意的俏皮话。

目前的自然语言生成,大部分使用的方法应该仍然是基于规则的模板填充,有点像实体槽提取的反向操作,将最终查询的结果嵌入到模板中生成回复。手动生成模板之余,也有用深度学习的生成模型通过数据自主学习生成带有实体槽的模板。

方案4、端到端的深度学习chatbot

1、将上面提到的传统的chatbot架构,NLU+DM+NLG,每一个模块都换成DL模型,甚至再加入User Simulator做强化学习,进行端到端的训练。例子如下,图片来自End-to-End Task-Completion Neural Dialogue Systems:
chatbot学习汇总_第1张图片

2、Memory Networks,偏向于seq2seq的方式,将整个知识库都encode在一个复杂的深度网络中,然后再和encode过的问题结合起来decode生成答案。这个工作最多还是应用在机器阅读理解上,最著名的是Stanford的SQuAD,而且有一些神乎其技的结果,而在垂直领域任务导向的chatbot上的成功应用还有待观察。

参考:https://zhuanlan.zhihu.com/p/29757034

你可能感兴趣的:(chatbot)