中国开源软件网

当前位置: 首页 > 互联网 >

不会聊天的人能开发聊天机器人吗,在开发聊天机器人

时间:2020-04-06 19:27来源:互联网 作者:小狐

朋友:最近忙什么呢?

我:在聊天机器人。

朋友:像你这么不会聊天的人,也能聊天机器人啊?

我:…

不会聊天的人能聊天机器人吗?如果者自己就不会聊天,出来的机器人是不是也不会聊天呢?

ELIZA:聊天机器人的鼻祖

我们先来看看世界上第一款聊天机器人吧:1966 年,在 MIT 任职的德裔美国计算机科学家 Joseph Weizenbaum,出了一款名为 ELIZA 的聊天机器人程序。

通过运行名为 DOCTOR 的脚本,此程序可以用类似心理学家的方式和人类交谈。下面就是一段 ELIZA 和用户的经典对话:

User: Men are all alike.

ELIZA: IN WHAT WAY

User: Theyre always bugging us about something or other.

ELIZA: CAN YOU THINK OF A SPECIFIC EXAMPLE

User: Well, my boyfriend made me come here.

ELIZA: YOUR BOYFRIEND MADE YOU COME HERE

User: He says Im depressed much of the time.

ELIZA: I AM SORRY TO HEAR YOU ARE DEPRESSED

好暖心的 ELIZA(不是 ELSA)和“她”说话,是不是感觉很治愈?

那么ELIZA 背后的计算逻辑是什么样的呢?

简单得叫人想哭,其实就是一条条模式匹配和字符替换规则,下面是其中几条:

you are (depressedsad) * => I AM SORRY TO HEAR YOU ARE 1all * => IN WHAT WAYalways * => CAN YOU THINK OF A SPECIFIC EXAMPLE

用户说失望/伤心,ELIZA 就回答“我好抱歉啊”用户用了“所有”这个词,机器人就追问一句“以何种方式”如果用户说“总是”如何如何, 程序就引导“你能举个例子吗”…

ELIZA 项目取得了意外的成功,它的效果让当时的用户非常震惊。Joseph 教授原本希望 ELIZA 能够伪装,但没有寄予太高期望,让他没想到的是,这个伪装居然很多次都成功了,而且还不容易被拆穿。以致于后来产生一个词汇,叫 ELIZA 效应,即人类高估机器人能力的一种心理感觉。

对于这样的需求,ELIZA 恐怕做不到,不过,别的机器人可以。

问题解决型机器人

Task Completion Bot

基础三步

和 ELIZA 明显不同,问题解决型机器人需要给用户用户自己都不知道的信息。

有鉴于此,问题解决型机器人(TC Bot)需要有自己的知识储备—知识库(Knowledge Base),其中存储的信息用来给用户。

光有了知识还不够,还需要至少做到两件事:

理解用户问题,知道用户在问什么。

将用户的问题为对知识库的查询。

有了这三者,就可以做到最基本的问题解决了:

不会聊天的人能开发聊天机器人吗,在开发聊天机器人(图1)

多轮对话的上下文

如果用户的每个问题都是完整的,包含了该问题所需要的所有信息,当然上面三步就可以得出答案。

不过人类在聊天的时候有个习惯,经常会把部分信息隐含在上下文中,比如下面这段对话:

提问:今天北京多少度啊?

回答:35度。

提问:有雾霾吗?北京有雾霾吗?

回答:空气质量优。

提问:那上海呢?上海有雾霾吗?

回答:空气质量也是优。

人类理解起来很容易,但是如果要让机器人理解,我们就需要给它添加上一个专门的上下文模块,用来记录上下文。

如此一来,支持多轮对话的问题解决型聊天机器人,就需要经历下列四步来完成。

不会聊天的人能开发聊天机器人吗,在开发聊天机器人(图2)

分层结构

从程序的角度,TC Bot 分为三层:

不会聊天的人能开发聊天机器人吗,在开发聊天机器人(图3)

输入输出:

接受、理解用户问题

生成、返回答案给用户

中间控制:构建双向关系

用户问题=>知识库知识

知识库知识=>机器人答案

知识存储:存储用于回答用户问题的知识。

聊天机器人的实现技术

从学术研究的角度讲,聊天机器人所需技术涉及到自然语言处理、文本挖掘、知识图谱等众多领域。

当前的研究和实践中,大量机器学习、深度学习技术被引入。各种炫酷的算法模型跑在 Google、微软等IT寡头的高质量数据上,得到了颇多激动人心的研究成果。

此处,我们只是简单介绍几种当前实践中最常用,且相对简单的方法:

Solution 1:用户问题->标准问题->答案

知识库中存储的是一对对的“问题-答案”对QA Pair。这些Pair可以是人工构建的,源于专家或者旧有知识库的,也可以是从互联网上爬取下来的。

现在互联网资源这么丰富,各种网页上到处都是 FAQ,Q&A,直接爬下来就可以导入知识库。以很小的代价就能让机器人上知天文下晓地理。

当用户输入问题后,将其和知识库现有的标准问题进行一一比对,寻找与用户问题最相近的标准问题,将该问题组对的答案返回给用户。

其中,用户问题->标准问题的匹配方法可以是关键词匹配(包括正则表达式匹配)也可以是先将用户问题和标准问题都为向量,再计算两者之间的距离(余弦距离、欧氏距离、交叉熵、Jaccard 距离等)找到距离最近且距离值低于预设阈值的那个标准问题,作为查找结果。

但关键字匹配覆盖面太小。距离计算的话,在实践中比对出来的最近距离的两句话,可能在语义上毫无关联,甚至满拧(比如一个比另一个多了一个否定词)另外,确认相似度的阈值也很难有一个通用的有效方法,很多时候都是者自己拍脑袋定的。

因此,这种方案,很难达到高质高效。

Solution 2:用户问题->答案

知识库中存储的不是问题-答案对,而仅存储答案(文档)

当接收到用户问题后,直接拿问题去和知识库中的一篇篇文档比对,找到在内容上关联最紧密的那篇,作为答案返回给用户。

这种方法维护知识库的成本更小,但相对于 Solution 1,准确度更低。

Solution 3:用户问题->语义理解->知识库查询->查询结果生成答案

相应的,知识库内存储的知识,除了包含知识内容本身之外,还应该在结构上能够表示知识之间的关联关系。

Chatbot 在提取了意图和实体后,构造出对知识库的查询(Query)实施查询,得出结果后生成回答,回复给用户。

篇幅所限,后文我们所讲的“小白版问题解决型聊天机器人技术方案“就是基于本 Solution的。

本文相关词条概念解析:

机器人

机器人(Robot)是自动执行工作的机器装置。它既可以接受人类指挥,又可以运行预先编排的程序,也可以根据以人工智能技术制定的原则纲领行动。它的任务是协助或取代人类工作的工作,例如生产业、建筑业,或是危险的工作。机器人是高级整合控制论、机械电子、计算机、材料和仿生学的产物。目前在工业、医学、农业甚至军事等领域中均等有重要用途。

网友评论

相关文章