回顾·如何打造主动对话式AI

3,515 阅读7分钟

本文根据竹间智能 CTO、联合创始人翁嘉颀在DataFun Talk人工智能技术沙龙 ——“基于情感情绪识别的对话式AI及应用实践”中分享的《如何打造主动对话式AI》编辑整理而成,在未改变原意的基础上稍做整理。

前人工智能时代是基于关键词模板,只能接受固定命令,能力无法持续提升,不能识别用户情绪,没有用户记忆。如现在的智能音箱,你如果对音箱说“我现在吃很饱”关键词是“吃饭”,音箱就会为你推荐附近的菜馆。当然我们的期望不是这样,期望可以用比较好的方式来做。如“我不喜欢吃牛肉面”,看到句子是一个否定陈述句,这不是一个命令句和意图,所以可以避开定外卖这个意图。利用自然语言理解意图,自然语言目前分为三个层次,第一个是nlp,语句分词;第二层叫意图理解,“肚子好饿”和“我想吃东西”这两个意图相近;第三层就是结合场景、理解用户情绪,实现意图识别。

接下来讲一下情感计算的设计与应用,我们做了22种文字情绪,计算出你寂寞和无聊的情感要干嘛。但是仅仅做负、正、中情绪是不够的,图中红色代表愤怒,蓝色是讨厌、难过,紫色是害怕,都是负面情绪,但是这三种负面情绪是不一样的,因此机器反馈也是不一样的。除此之外还做了9种人脸表情、4种语音情绪,将“文字+表情+语音”形成多模态情感。这样的意义是什么呢,举个例子如“高考我考了500分”这个时候你是应该恭喜还是安慰呢,但是如果加入说话的语气就完全不一样,语音情绪表达更多信息。再加上人脸表情,如面带微笑说“你死定了”这个时候很难判断意图,结合上下文,如果都是微笑那就是开玩笑,如果两者在吵架,这个时候就是威胁。

上面是一个多模态情感例子,上面是人脸表情,中间是语音情绪,下面是文字情绪,图片的正上方是其总情绪。

有了情绪接下来是做一个好的机器人,那么一个好的机器人如何制作呢。目前市面上的聊天机器人智商在2-3岁,竹间科技的机器人在5-6岁,它可以查天气、查快递、查股票、成语接龙等40种原生功能与技能。

再者就是知识图谱,机器人很多用户是小朋友,针对同一个问题需要识别不同问法,识别什么是疑问句、感叹句。然后做一些推论,如“姚明的老婆有多高”先找到姚明的老婆,然后推出叶莉的身高190cm。“谢霆锋跟陈小春有什么关系”通过知识图谱可以推断谢霆锋的前妻的前男友是陈小春,还有“陆奇加入百度之后股价涨还是跌”,知识图谱需要找到“陆奇”是谁,百度是什么,陆奇是哪一天离开的,哪一天百度的股价是多少等等信息然后推断,这些是机器少数能替代人的地方。还有就是Bi-attention flow,利用深度学习模型,询问问题,由知识图谱深度模型寻找答案,这个存在缺点是不可控。

闲聊不是随便的聊,好的闲聊需要用主题控制,主题还有阶层关系,如“你喜欢英超哪支球队?”,该问句的主题是运动下面的足球底下的五大联赛的英超,如果回答“我喜欢巴萨”或者“我喜欢蛋炒饭”这些都是不对的。现在对话的主题是体育里面的足球,因此回答应该更强烈的选择与足球相关的,依据主题做对话的控制。那如何做话题的跳转呢,机器人主动引导话题跳转,依据你对话中的相关属性来主导话题,或者根据 memory,根据 user profile,根据前面的对话来主导话题。

接下来讲一下上下文理解,人不会每次都讲完整的句子,如“Q1:明天我们去看电影好不好? A1:明天有事不行,Q2:那后天呢?”,那后天就代表后天我们去看电影好不好,这种就是第一种主谓宾的补全。第二种就是指代消减,如“我喜欢大张伟,我也喜欢他”这个他就是指大张伟。第三种是话题式,如“Q1:你们有卖净水器吗?A1:有啊Q2:占不占地方啊? A2:不会,很小的Q3:怎么卖啊?”,根据目前的话题进行上下文的补全。

一个好的机器人还需要一些记忆能力,长时记忆,如“我不喜欢吃辣的”,那么下次推荐餐馆就避免推荐辣的餐馆。永久记忆,我今天肚子不舒服,那么就不能聊大姨妈的事情。短时记忆,一般是48小时到72小时,如“明天要去苏州间张先生”,晚上询问明天要去哪里,回答明天要去苏州。这种就是短时知识图谱,放在用户里面,在你问问句时回答你。

人机对话还有一些“Prediction & Generation”,根据上下文去预测下一句话,去预测其主题、意图、keywords、句型、情感变化等。有了句型、关键词,进行造句,根据上下文生成或者根据不同的用户说话习惯来生成。那么如何实现呢,通过外包请人聊天获取数据,通过数据清洗等操作然后做预测。

接下来讲一下NLP模型架构,其中最核心的是中文分词,分词不对语义理解肯定错误;然后是词性标注,名词、形容词、副词等标注;还有就是句式识别,如“人民广场怎么走?”,“你喜不喜欢吃苹果?”这些都是上下文对话的基础,有的是询问信息,有的是问你个人喜好等。“你在北京买衣服花了好多钱?”和“你上个月在北京买衣服花了好多钱”,一个是疑问句一个是感叹句,说的意思也是完全不同。

如“你好可爱”,如果分词为“你好”和“可爱”,会认为你是和名叫可爱的人打招呼。那我们怎么做呢,举例说明,如“我明天飞上海,住两天,要如家”,核心动词“飞上海”、“住两天”、“要如家”,核心是“飞、住、要”,“住两天”知道意图是要订酒店。第一种做法是将整个句子丢到一个黑盒子中模型训练得出意图,这种需要大量的基础数据。第二种将句子进行拆分,在丢到模型中训练,这样会简单很多。

如何利用 NLP 的基础信息呢,如“上周买衣服花了多少钱?”,首先知道是一个数量问句,核心动词“花钱买衣服”类别是衣服,时间是上周,通过拆解进行判断。

接下来看一下人机交互下一步的变化,目前情况67%的用户决定转人工,不是因为匹配错误,而是【答案看不懂】,25%的用户决定转人工,不是因为匹配错误,而是【新问题】,只有 8%的用户决定转人工,是因为算法匹配错误。因此应该采用交互的方式,才能解决主要问题。不是所有的问题都是多轮,只要在某一区域的前二十个问题做到多轮就有很大的提升。第二个机器人不再被动,主动和你聊天,根据你的 image,主动跟你交谈,根据你的 profile,主动跟你交谈。还有就是依据机器视觉实现人机对话交互。

结合用户画像和用户的多轮对话,作为条件制定策略,进行商品或服务的推荐。

还有一个目前比较潮流的就是多轮之间的切换-中控中心,如订酒店,找到订酒店机器人,然后询问上海是否下雨,还在订酒店场景,但是同时命中天气机器人,然后询问“那我后天入住,住两个晚上” (回到订酒店机器人,继续未完成的场景)。依据多轮对话实现不同机器人的切换。

——END——