广州市执信中学 聂硕琳
智能聊天机器人的主要用于模拟人类对话或聊天,应用场景是客服坐席。它替代客服人员回答大量重复而且简单的问题,反映速度比人要快很多,而且不会感到疲惫和厌烦。它唯一的需求是有电源供应。
聊天机器人分为目标驱动型和无目标驱动型。目标驱动型机器人的语料库通常是固定的,因此针对用户的提问,回答也是固定的,开发起来相对也比较简单。微信群里的自动回复就属于这一类机器人的应用场景。无目标驱动型机器人如微软的小冰,贤二机器人等,它们可以回答用户千奇百怪的问题,可以代替真人客服与用户进行聊天。
一般来说,聊天机器人应该具备以下特点:
(1)正确回答问题。如果与人聊天时总是答非所问,那就不能称之为智能聊天机器人。
(2)回答问题时使用正确的语法。在内容完整,逻辑合理的基础上,要保证语句的通顺,符合语法规则,这样才不会引起歧义。
(3)答案应变化多端,丰富多彩。既然是聊天机器人,就不能给人无聊的感受,应该通过不同的用词和句法,使对话能够完成,并解答用户的疑问。这样才能吸引更多的用户使用聊天机器人。然而做到以上这几点需要多种技术的结合,包括自然语言处理、大数据分析、机器学习等等。Google的ALICE便使用了这些技术。
1960年外国的科学家就提出“计算机要能用自然语言与人沟通”的设想。随着科学技术的发展和移动互联网的日新月异,各大互联网公司推出了自己的智能聊天机器人,替代人工面对庞大的客服需求,使得聊天机器人成为人们关注的方向之一。国外聊天机器人的发展比较早,目前已经有很多成熟的产品,比如苹果的Siri, 用户可以给Siri发布定时、打开应用等指令。 微软的小冰可以与用户进行有趣的聊天。还有Google的Alice,IBM的Watson等。聊天机器人在中国也有广泛的应用,比如许多微信群,淘宝的客服,百度的度秘,科大讯飞的语音助手等都能提供智能聊天服务,极大地减少了人工成本。但是相较于国外,发展还是相对落后,主要原因是中文比较难处理,语料库的积累也比较少。
在机器人的主要设计技术方面,目前比较主流的是基于人工模板和人工智能的两种聊天机器人。
基于人工模板的聊天机器人制作最简单,主要是通过人工录入一些对话的模板,当有用户提问时,会从这些模板中找出匹配的答案返回给用户。这种技术的优点是开发简单,返回答案速度快,缺点是答案单一,人工成本高。
基于人工智能的聊天机器人是利用一些算法来生成答案,答案的准确度取决于算法的好坏。这种聊天机器人有自我学习的能力,随着聊天次数的增多,答案也会越来越准确。这种聊天机器人的优点是前期不需要人工输入大量模板,答案较灵活,缺点是开发难度大,模型训练复杂。这种聊天机器人制作的主要难点在于语料库的积累,规则的匹配。
行为主义理论又称为刺激-反应理论,这种理论认为通过对环境的“刺激”和对行为的“强化”,所有行为都可以被设计、创造乃至改变。另外,只要不断地强化正确的反应,消除错误的反应,学习的效果就会越好。本文中提到的ALICE的AIML(人工智能标记语言)采用的就是“刺激-反应”理论,通过对输入语句进行匹配和分析,也就是刺激,给出答案,即反应,从而使得答题内容能够正确地的表示并传输。
智能聊天机器人涉及多方面的技术,比如大数据分析、自然语言处理、机器学习等,这些都属于人工智能的范围。自然语言处理是智能聊天机器人的核心技术之一。机器人会根据用户输入的语句,进行分词,然后和语料库进行比对,然后返回预先设定的回答。机器人的语料库越大,返回的答案越精确,这就涉及到了大数据技术。另外,机器人从这么庞大的语料库中筛选获取准确数据的过程,就使用了机器学习的算法,并且机器人还有自学习的能力,能通过和不同的人聊天,积累经验,会变得越来越智能,并能够应付更多不同的提问。
自然语言处理是研究实现人与计算机之间用自然语言进行沟通的技术,涉及到语言学、数学、计算机科学等多种学科。自然语言处理的应用主要在聊天机器人、机器翻译、搜索引擎等领域。自然语言处理在智能聊天机器人的开发中起着重要的作用。自然语言处理主要包括词法分析、句法分析和语义分析三大部分。词法分析的核心即分词。句法分析就是对自然语言中句子的结构、语法进行分析,如辨别疑问句和感叹句等。而语义分析则注重情感分析和整个段落的上下文分析,辨别一些字词在不同的上下文中特定的语义和情感态度。
机器人的语料库也叫知识库,知识库的设计要通过大量的调研,作为前期的语料储备。在机器人与用户沟通积累到一定程度后,机器人可以将这些聊天内容储存并分析,从而丰富语料库。当机器人要回答问题时,要先对问题进行分词,这就涉及到了分词器。分词器也分多种语言。常用的分词技术有基于字符串的分词算法,基于统计以及基于理解的分词算法。分词完成后,拿这些词语与语料库中的数据进行相似度计算,选择相似度大的结果返回给用户。
IBM给出了大数据的5V特点,分别是Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。首先数据量要大,并且处理速度快,而数据格式、内容多种多样;通过对大数据的挖掘能得到少量数据得不到的有价值的信息;另外数据要真实可靠。
大数据分析是对大规模的数据进行分析的技术。大数据分析的流程一般分为数据收集、数据预处理、算法分析挖掘、产生结果、结果可视化这五步。其中数据收集是前提,数据预处理是将收集到的杂乱的数据,按照一定格式存储,并对无效数据进行过滤。算法分析挖掘时通过运用一些算法来处理这些数据,产生有价值的信息,并作出预测,最后可视化是将结果以合适的方式展现出来,可以是统计图,也可以是表格。
智能聊天机器人的语料库积累到一定规模后,对语料库的挖掘过程就可以称之为大数据分析。语料库的积累即是数据收集的过程。数据在存储的过程中,可以进行初步的筛选,去掉无意义或重复的语句,保证语料库的质量。聊天机器人在收到请求后,会利用一些机器学习的算法从语料库中搜集、挖掘可能的答案,最后将最适合的答案返回给用户。
机器学习是人工智能的核心,在人工智能的各个领域都有应用。机器学习是机器研究获取新知识的技术。机器学习分为监督学习和无监督学习,以及半监督学习。监督学习就是通过给定的有标签的训练集来训练模型。无监督学习是没有给定有标签的数据集,需要通过初始化,不断地优化模型。半监督学习介于两者之间,训练集的标签可能不是最终的标签,只是一个中间结果。常用的机器学习算法有决策树、关联规则、人工神经网络等等。
智能聊天机器人在检索答案的过程中往往会产生许多结果,并且会给这些结果打分,最后返回打分最高的结果。这个分值是在与人们聊天的过程中根据人们的反馈积累下来的,所以智能聊天机器人模型的训练是有监督的。
ALICE第一个版本是由Richard S.Wallac于1995年开发完成的,先后有300多人为其做出贡献,目前存储四万多条知识分类,可以支持英语、德语、法语等多种语言,现在ALICE在问答系统、智能导航、网站服务等系统中都有广泛的应用。
ALICE具有丰富的标签,算法也并不复杂,主要采用的是模式匹配的方法。
ALICE有两个核心的模块:AIML语料库和Chatterbean引擎。AIML即人工智能标记语言,是基于XML发展的,采用了简单的模式匹配和“刺激-反应”理论。Chatterbean使用JAVA语言开发,该引擎负责处理用户的输入,并对AIML进行解析。
AIML的标签主要有
ALICE运行过程中,所有AIML文件将以多叉树的形式组织成“Graphmastert”对象,加载到内存中。Graphmastert由一系列的Nodemapper节点组成。Graphmastert即根节点,每个子节点是一个单词或者一个通配符,顺序根据pattern中的位置排列。所有pattern的根节点相同,从而使得机器人拥有一个强大的知识库。每个叶子节点包含一个template,即对pattern的应答。当用户的问题经过规范化预处理后,与pattern匹配成功后将返回对应的叶子节点。
ALICE的工作流程分为四步:
(1)初始化。将AIML文件知识库载入内存。
(2)处理用户输入。接收到用户的输入请求后,通过提取关键词,替换,去除噪声等方式为下一步的问题查询推理做准备。
(3)问题查询推理。问题推理是ALICE工作的核心步骤。主要是通过与规则进行逐步匹配,对问题进行推理定位。
(4)模板处理。主要是对上一步的问题进行完善。得到最可能的答案。
ALICE的优点在于与自然语言的匹配及上下文语境的理解,以及语料库庞大,知识容易扩展。但在中文处理问题上,ALICE并不成熟,因为汉语不像英语等语言,用空格或其他标记分词,这就加大了ALICE对中文支持的难度。对汉语的分词采用一般匹配法、词频统计法等。另外对同义句的处理也是一大难点。
本程序旨在实现人与机器人的聊天对话,目的是可以随意聊天,好玩。比如机器人可以回答“你好”“现在几点了”等问题。
本程序在Windows操作系统下开发,使用JAVA语言,运用Eclipse IDE,JDK版本为1.8。
本程序的相关技术主要包括两个部分:
(1)AIML语料库的设计
AIML基于xml格式标签,AIML的基本单位是category,即类别。每一类别包括一个输入和一个输出。问题也叫作刺激,被称为template模式。AIML使用
(2)Chatterbean引擎的使用
Chatterbean是使用纯Java语言开发的,是一个免费的软件,适用于AIML1.0标准。JAVA程序中并不支持javascript,但AIML中可以支持javascript。Chartterbean使用了Rhino来使得Java可以操作javascript,从而支持了交互模式。
源码结构如图所示。主要包含三部分。
(1)Bitoflife包:机器人的核心包,其中包含了AIML及Chatterbean引擎源代码。
(2)Bots包:其中idiom.aiml是自定义的AIML。
Substitutions.xml存储了替换词,如输入what’s your name, 和输入what is your name, 都能得到正确的回答,是因为配置了:
“
context.xml用于配置系统的上下文,设置了应用的属性,如
Splitter.xml用于配置词汇的分隔符,如
(3) Src包:Chat.java中包含了main程序的入口。
在AIML文件中主要用到了如下标签:
:表示应答。
:支持Alice的学习功能,帮助Alic记住之前对方的聊天记录。
本程序的AIML文件如图所示。
5.效果展示
聊天机器人替代了一些简单,重复的工作,使人们从中解脱出来,去做更有价值的事情。但是就像硬币有两面,任何新事物的诞生也必然会有风险,智能聊天机器人的广泛推广,也会导致问题。首先是用户隐私的问题,机器人会记录下来与所有人聊天的信息,一旦这些信息被泄露就会造成用户隐私泄露。另外,聊天机器人功能越来越强大,可替代的劳动力也越来越多,有人会担心因此而造成大量劳动力失业。面对这些问题,人类应不断地优化聊天机器人,增加它的安全性,以防数据泄露。另外人们也在不断地提升自己,同时社会还应该创造更多就业机会,这样才不会在新生事物普及的同时引发新的社会矛盾。
本文通过对聊天机器人的发展现状以及研究背景进行分析,阐述聊天机器人的设计理论和技术原理,并对ALICE的制作原理进行解释,最后介绍了基于ALICE的聊天机器人的程序开发,实现了一个简单版的聊天机器人。虽然实现了智能聊天机器人的基本功能,但比较简单,没有实现对中文以及复杂问题的支持,语料库也不够复杂。下一步会在此程序的基础上引入中文分词技术,扩展AIML的知识库,强化机器人的人工智能技术。
[1]冯德虎.基于ALICE的研究生招生咨询智能聊天机器人研究与实现[D].西南交通大学,2013.
[2]刘超,马东宇.智能问答的聊天机器人系统的设计与实现[J].信息技术,2017(05).
[3]杨凯翔.聊天机器人知识挖掘方法研究[D].华南理工大学,2015.