一种闲聊机器人简易实现

行业资讯 2019-08-15 19:56www.robotxin.com人工智能机器人网

人工智能在客服领域的,可以节省大量人力成本,二十四小时不间断提供稳定服务,在节假日的高峰期也能够高效的服务客户。在客服售后和售前领域,智能聊天可以和客户直接对话,也可以作为辅助工具提供给客服人员使用。从功能上大概可以分为 task-bot、faq-bot 及闲聊的 chat-bot 型。本文主要详细讲解闲聊的 chat-bot 型机器人的实现,在此之前先大概介绍下前两种机器人。

在一般售后场景中,客户一般咨询的是常见的 FAQ 问题,可以基于端到端的深度学习训练,将训练集中标注好的问题和 FAQ 库里的标准问题编码成语义向量,最后计算用户的输入和库里的标准问题的向量相似度,将最相似的 FAQ 返回给用户。

在售前场景中,比如预定机票、酒店等,系统通过和用户交互,理解用户意图,进行命名实体识别,即自然语言理解(NLU,Natural Language Understanding )。通过对话状态来管理和用户的多轮交互,即 DST(Dialog State Tracking),最后触发用户的搜索或者预定等动作。这种 task 型机器人最困难的地方在场景切换后的连贯性,比如上一句话用户问“从北京到上海的机票”,下一句用户说“那火车票呢”,下一句又说“从天津出发的机票呢”。在不同场景中切换,需要清晰明确各种情况下用户状态及槽位继承的策略,否则就很容易被发现是个很傻的机器人。

闲聊场景中,机器人检测到用户是在闲聊,就可以进入闲聊逻辑进行回复。机器人还要能够感知到用户情绪,比如用户愤怒了能安慰用户;能够对一些敏感词进行过滤;还应该对一些开放领域知识进行回答,比如下一届奥运会在哪里举行。

敏感词和情绪识别部分,可以基于词典的关键词过滤方式,也可以分别训练一个分类器进行识别,开放领域知识问答部分,可以基于知识图谱的方式。纯闲聊部分主要基于检索方式和生成式方式,下边分别讨论这两种方法。

基于检索的方式就是在很庞大的闲聊库里匹配出最相似的问题,返回对应的答案。比如华为诺亚方舟实验室的方法,从各种不同的角度构造 matching 特征,作为 ranking 模型的特征输入。

生成式方法主要基于 seq2seq 方法进行回复的生成,将语料中的 Q 通过编码器编码成中间语义向量,再用一个解码器将这个语义向量解码成对应的 A 。为了提高结果回复的多样性,一般加入 attention 机制。各种生成式的方法都是基于 seq2seq 的各种改进和扩展,比如 chen xing 等的 TA-seq2seq 方法将主题模型引入 seq2seq 模型中,先预测 ic,再根据 ic 生成回复; Wu Yu 等的 DVS2S 方法将传统的 seq2seq 方法编码器的最后一个投影层的全连接改成了动态词表,为每个 input 动态生成一个两三千左右的词典,比传统方法要节省40%左右的训练时间。

检索式方法和生成式各有优缺点。检索方式优点主要是实现简单,回复流畅和具有回复多样性,缺点主要是严重依赖于数据集,回复上下文无感知;生成式优点主要是端到端的学习,无需人工规则干预,具有上下文感知,缺点是回复比较单一,可能生成的回复不太流畅或者生成无意义的句子。

本文尝试了两种结合的方法,先基于受限条件检索,没有结果再用生成式回复。受限条件即基于依存句法分析提取出关键词,将关键词直接作为 matching 的特征。用户输入时候也做同样条件的方式处理。

提取关键词部分,主要提取了某些句子关系成分,比如:“google 宣布将重返中国市场”提取出关键词为 “google” ;“我怎么还是一无所有”提取出关键词为“一无所有”。

我们基于传统的 seq2seq 模型,单层 LSTM ,无 attention 机制,抓取网上微博等简短的 QA 对,通过数据清洗最后过滤剩下75多对进行训练,迭代大概五十多次,下边是抽取比较好的回复结果:

从结果可以看出来,如果训练充分,可以回答出很智能且流畅的答案,如果训练的不太充分,就会回答比较单一的回复,比如“呵呵”、“哈哈”等。解决办法可以用上文提到的 seq2seq 的一些改进模型。

<

Copyright © 2016-2025 www.robotxin.com 人工智能机器人网 版权所有 Power by