智能聊天机器人的技术综述_Chatopera 研发团队的博客-程序员秘密

技术标签: 聊天机器人  人工智能  自然语言处理  

本文转载,原文地址
在转载过程中,资源和开放数据有更新,不代表原作者观点。

摘要

智能聊天机器人作为自然语言处理的一个重要分支,是目前最火热也最具挑战的研究方向,它对于促进人机交互方式的发展有着重要的意义。本文首先简要介绍了智能聊天机器人的分类和研究背景,对国内外研究现状进行比较,对生成和检索两种主流的实现技术进行优缺点分析,并分别列举了几项使用该技术手段实现的聊天机器人。然后,介绍了目前较为常用的生成型聊天机器人的模型以及评估方法,其中,对作为很多模型基础的Encoder-decoder模型做了详细介绍和分析,以及在此基础上完成的几个优化模型系统。最后,给出了一些参考的开源框架以及可使用的数据以供读者使用。

研究背景

目前市面上主要的智能聊天机器人可以分为如下两类:目标驱动型聊天机器人和无目标驱动型聊天机器人。目标驱动机器人是指机器人的服务目标或服务对象是明确的,是可以提供特殊服务的问答系统,处理特定领域的问题,即定领域的聊天机器人,比如客服机器人,订票机器人等。无目标驱动机器人是指机器人的服务对象和聊天范围不明确,可以处理的问题多种多样,解决问题时需要依赖于宇宙中的各种信息和本体,即开放领域的聊天机器人,比如娱乐聊天机器人等。

智能聊天机器人实际上是为了应对信息爆炸的今天存在的信息过载问题。具体来说,其来源是因为人们对于简单的搜索引擎仅仅返回一个网页集合的不满,而通常用户更想获得的体验是在向智能对话系统用自然语言提出一个问题之后,且智能对话系统也能够自然又通顺地回答问题,且回答内容与问题紧凑相关又答案精准。为使用者们节约了更多的时间,无需逐个浏览和仔细阅读搜索引擎返回的每个链接网址中的信息,再剔除冗余信息后才能得到期望的答案。

有关于对话机器人的研究可以被追溯到20世纪50年代,当Alan M. Turing提出了“机器可以思考吗?”的图灵测试问题来衡量人工智能发展的程度,该领域接下来就变成了人工智能领域中一个十分有趣又具有挑战性的研究问题。

随着各种互联网公司的蓬勃发展以及各类移动终端和应用小软件的爆炸式普及,如Twitter和微博等,很多大互联网公司都在投入重金完成此领域技术的研究并陆续推出此类应用产品,比如苹果Siri,微软Cortana,脸书Messenger,谷歌Assistant等,这些产品都让用户们在移动终端更加方便地获得需要的信息和服务,从而获得更好的用户体验。因而,人们发现智能机器人可以应用的领域十分广泛,它可以被应用到很多人机交互的领域中,比如技术问答系统,洽谈协商,电子商务,家教辅导,娱乐闲聊等。

不得不说,由于人们对于智能聊天机器人不断增长的渴望和需求,人工智能在自然语言处理领域的应用变成了不论国内国外都非常热门的一个研究方向。在信息技术飞速发展,以及移动终端逐渐普及的今天,研究聊天机器人相关的技术,对于促进人工智能以及人机交互方式的发展有着十分重大的意义。

国内外研究现状对比

在人工智能领域,智能聊天机器人的研究已经有了很长的历史,它们都试图吸引用户不断继续聊天,通常表现为使用主导谈话的主题的手段,从而掌控谈话内容及谈话进度。但由于最初的研究受限于计算能力和知识库,导致了所有有关人工智能的实验规模都比较狭小,因此设计者们还会将谈话的内容局限在某一个特定的专家系统领域以此降低难度。

但随着1995信息检索技术的发展,Baidu,Google等搜索引擎公司计算能力的飞速提升,以及2005年互联网业的蓬勃发展和移动终端的迅速普及,在这三方面的共同作用下,智能聊天机器人,或者说智能问答系统一下子被推到风口浪尖,研究进展也非常值得关注。

由于国外在人工智能聊天机器人及问答系统方向的研究起步较早,因而也产生了一系列比较成熟的聊天系统以供用户使用,比如苹果Siri,微软Cortana,脸书Messenger,谷歌Assistant等。

这些跨平台型人工智能机器人,都借助着本公司在大数据、自然语义分析、机器学习和深度神经网络方面的技术积累,精炼形成自己的真实有趣的语料库,在不断训练的过程中通过理解对话数据中的语义和语境信息,从而实现超越一般简单人机问答的自然智能交互,为用户带来方便与乐趣。

相比国外,我国国内在智能聊天领域的投入规模和研究水平上都有着不小的差距,研究成果也并不显著。但是还是有一系列高校在此领域成绩显著,位于前列的主要有清华大学、中科院计算所、香港大学、香港中文大学和哈工大(benben)等。其中,高校在此领域的研究主要集中于对于自然语言处理的工具开发,比如哈尔滨工业大学的HIT工具(中文词法分析、句法分析和语法分析)以及台湾国防大学的CQAS中文问答系统(侧重于命名实体及其关系的处理)等。

工程要求及分类

实现需求

  1. 语境整合

系统需要在训练过程中不断整合物理语境和语言语境来生成较为明智的回复。结合语言环境最普遍的例子就是在长对话中,人们会记录已经说过的话以及以及和对方交换过的信息。其中最普遍的方法就是将对话嵌入一个向量中,此向量还可能需要整合其它类型的语境数据,例如日期/时间、位置或者用户信息等。

  1. 人格一致性与互信息

对于语义相同或者类似的输入,不论在何时输入,我们希望智能机器人会有相同的回答,比如“你叫什么名字?”和“你多大了?”等问题。这个目标看似十分容易达成,但是实际上要将固定的知识或者人格整合到模型中去是一个十分困难的研究难题。目前许多的智能聊天机器人系统可以做出语义较为合理的回答,但是却没有被进一步训练生成在语义上同样一致的回复。这一般是由于为了实验效果的增加,训练模型的数据可能来源于不同的用户而导致的。

  1. 意图以及多样性

目前普遍的智能问答系统经常会生成“我不知道”或者“太好了”这样的可以适用于大部分输入问题的答案。例如,Google的Smart Reply早期版本常常用“我爱你”回复一切不确定的问题。由于生成系统,特别在开放领域,没有被训练成特定意图,只是根据数据和实际训练目标或算法训练的结果,不具备一个令人满意的智能聊天机器人应该有的多样性。

目前该领域该方向的实现技术手段主要集中于基于规则或基于学习的方法。因此,相对应的,智能聊天机器人的实现技术手段目前也分为两种:基于检索的方式和基于生成的方式。

  1. 检索式

检索式聊天机器人是指使用了预定义回复库和某种启发方式来根据输入和语境做出合适的回复,这种启发方式既可以像基于规则的表达式匹配一样简单,也可以像机器学习分类器一样复杂。换一句话说,在这种模式下,机器人回复的内容都处于一个对话语料库中,当其收到用户输入的句子序列后,聊天系统会在对话语料库中进行搜索匹配并提取响应的回答内容,进行输出。

该系统不要求生成任何新的文本,只是从固定的集合中挑选一种回复而已,因而这种方式要求语料库的信息尽可能的大和丰富,这样才能够更加精准地匹配用户内容,并且输出也较为高质量,因为语料库中的既定语句序列相对于生成的序列而言更加自然和真实。

该模式下的机器人使用基于规则的方式进行模型的构造,因此我们只需要完成一个模式或者样板,这样当机器人从用户端获得的问题句子在已有的模板中时,该模型就可以向用户返回一个已有的模板。理论上,任何人都可以照此方法实现一个简单的聊天机器人,但是该机器人不可能回答比较复杂的问题,其模式匹配意识是十分薄弱的。除此之外,人工地完成这些规则和模式的制定是十分耗时和耗力的。

目前,在基于规则方面的一个非常流行的智能机器人是CleverBot,该网站提供了一个可以直接进行与机器人进行聊天的网页。

  1. 生成式

生成式聊天机器人在接受到用户输入后,会采用其它技术生成一句回复,作为聊天系统的输出。这种方式并不要求非常大和精准的语料库,因为它不依赖于预定义的回复库,但生成的回复可能会出现语法错误或语句不通顺等缺点。

该模式下的机器人使用基于学习的方法进行对于对话数据和规律的学习,很好地弥补基于规则模式下实现的智能机器人的缺点,因此我们可以建造一个机器人,并让它不断地从已经存在的人与人之间的对话数据中自主得学习对话规律,并在每次收到用户问题时,自主地组织词语回答问题,这是一种十分智能的实现方法,也是目前更为火热的研究方向。

使用生成式方式并且结合机器学习的方法的优点是十分明显的:得到相较于检索式而言更加有趣多样的回答,赋有多样性,避免沉闷和无聊;端到端End-to-end神经网络模型的参与可以减少对于人为制定规则的依赖,提升模型在长对话数据中的性能;深度学习的应用使得模型的可扩展性较强,模型本身可以和训练数据的语言互相剥离,不需要针对不同语言的数据进行数据预处理工作;可以通过扩大数据的方式持续提升模型的效果。

工程分类

常见技术模型

Encoder-decoder加解密模型

在以往的研究中,我们会发现实际上智能对话系统问题可以被很好地应用到的自然语言的机器翻译框架中,我们可以将用户提出的问题作文输入机器翻译模型的源序列,系统返回的答案则可以作为翻译模型的目标序列。因此,机器翻译领域相对成熟的技术与问答系统所需要的框架模型有了很好的可比性,Ritter等人借鉴了统计机器翻译的手段,使用Twitter上的未被结构化的对话数据集,提出了一个问答生成模型的框架。

Encoder-decoder框架目前发展较为成熟,在文本处理领域已经成为一种研究模式,可应用场景十分广泛。它除了在已有的文本摘要提取、机器翻译、词句法分析方面有很大的贡献之外,在本课题中,也可以被应用到人机对话和智能问答领域。

图1将Encoder-Decoder框架在自然语言处理领域的应用抽象为一个通用处理模型,即一个序列(或文章)转换为另外一个序列(或文章)。对于句子序列对 ,Encoder-Decoder框架在输入源序列X的情况下,生成目标序列Y,并不断改变模型参数提升这种可能性。在实际的应用中,序列X和序列Y分别由各自的单词序列构成,可以是一样或者不一样的语言:

在这里插入图片描述
图1. 加解密模块实现的端到端模型

X = < x 1 , x 2 , … , x m > X=<x_1, x_2, \dots, x_m> X=<x1,x2,,xm>
Y = < y 1 , y 2 , … , y n > Y=<y_1, y_2, \dots, y_n> Y=<y1,y2,,yn>

模型中神经网络(如RNN或LSTM)将按照如下步骤计算此条件概率:首先,输入序列 (1,2,⋯,) 通过加密模型中的层层LSTM神经单元,由最后的隐藏层状态获得一个固定维度的向量表示v;然后,根据标准的LSTM-LM公式,计算输出序列 (1,2,⋯,′) 的概率,该LSTM的最初的隐藏层状态为输入序列 (1,2,⋯,) 的向量表示v:

p ( y 1 , y 2 , … , y T ′ ) = ∏ t = 1 T ′ p ( y t ∣ v , y 1 , y 2 , … , y t − 1 ) p(y_1, y_2, \dots, y_{T^{'}}) = \prod^{T^{'}}_{t=1}p(y_t|v,y_1,y_2,\dots,y_{t-1}) p(y1,y2,,yT)=t=1Tp(ytv,y1,y2,,yt1)

在这个等式中,每个概率分布 p ( y t ∣ v , y 1 , y 2 , … , y t − 1 ) p(y_t|v,y_1,y_2,\dots,y_{t-1}) p(ytv,y1,y2,,yt1)都用对于词典中的所有单词的softmax函数模型来表示。并且,我们要求,所有的句子都以一个特殊的句子终结符“ ”来表示,这可以使得模型定义了一个关于输出序列的所有可能长度的概率分布。

Google利用该理念实现的神经翻译系统模型,结合LSTM神经网络结构,实现了端到端的语言模型 ,是现在十分主流的使用深度学习实现的智能对话系统,并提供了开源的参考架构。斯坦福大学使用该端到端模型,并在解密模型中添加注意力机制,实现了一个综合性的神经网络机器人。

Hierarchiacal Recurrent Encoder-Decoder分级卷积加解密模型

目前研究中经常使用Seq2seq端到端的方式实现问答系统,但模型常常会有可能产生与问题毫不相关,意义不明,表达不准确甚至是毫无意义的安全回复,例如“我不知道”,“好的”或“我爱你”这样的答案。

对于此类问题的出现,Bengio等人提出的一种更加复杂的模型结构——分级卷积加解密(Hierarchiacal Recurrent Encoder-Decoder)的端到端模型可以很好的解决问题。HRED模型通过使用第二个加密模块来从之前的问句中获得更加直观的信息,从而当前输出对于之前信息的依赖性可以得到保障。

在模拟对话时,我们认为HRED模型比标准的RNN模型更好是因为:上下文RNN会在用户之间使用一个分布式的向量来表达对话主题和内容,这对于建立一个有效的对话系统来说是非常重要的;由于在序列传递过程中的计算步骤被减少,这使得于模型参数有关的目标函数的计算会更加稳定,并且有助于传播优化方法的训练信号。

Bidirectional HRED双向分级卷积加解密模型

双向HRED模型的加密模块中使用一个双向的RNN模型,一条前向传递语句序列,另一条通过导致输入序列反向传递。前向传递时n位置处的隐藏层状态包含了n位置处之前的信息,而反向传递时的隐藏层状态总结了n位置处之后的信息。为了仍然得到一个固定维度表示的上下文向量,我们可以将前后向传递的最后隐藏层状态通过直接前后相连或通过L2池化后相连。此种双向结构可以有效地解决短时依赖的问题,并且在其他相似的结构中也被证明是有效的。

Word embedding词嵌入

词嵌入(Word embedding)又被称为词表示(Word representation),每个单词套用该模型后可以转换为一个实数,且每个实数对应词典中的一个特定单词。它是一种用于在低维的词向量空间中用来学习深层的单词表示的技术,通过对词汇量的扩大,可以很大地提升训练速度,因为会通过在词嵌入空间中非常相近的单词来共享一些信息。常用的词嵌入模型有Word2Vec,该模型是由包含了由一千多亿单词组成的Google新闻数据训练的,并且被证明该模型在一个非常广泛的数据集上展现出了强有力的信息。

Attention注意力机制

Attention结构的核心优点就是通过在模型“decoder”阶段对相关的源内容给予“关注”,从而可以在目标句子和源句子之间建立直接又简短的连接,解决机器人模型和用户之间的信息断层问题。注意力机制如今作为一种事实标准,已经被有效地应用到很多其他的领域中,比如图片捕获生成,语音识别以及文字摘要等。

在传统seq2seq模型的解码过程中,“encoder”加密器的源序列的最后状态会被作为输入,直接传递到“decoder”解码器。直接传递固定且单一维度的隐藏状态到解码器的方法,对于简短句或中句会有较为可观的效果,却会成为较长的序列的信息瓶颈。然而,不像在RNN模型中将计算出来的隐藏层状态全部丢弃,注意力机制为我们提供了一种方法,可以使解码器对于源序列中的信息选择重点后进行动态记忆。也就是说,通过注意力机制,长句子的翻译质量也可以得到大幅度的提升。

注意力在每一个解码的时间步时都会进行计算,隐藏最初的embedding词嵌入操作和最终的projection投影操作后,主要包含了如下四个步骤,如图2所示:

  1. attention weights注意力权重的计算

在这里插入图片描述
图2. 注意力机制的计算流程
注意力权重是通过当前的目标隐藏层状态和所有的源序列的状态互相比较得出的,公式(1)表示该计算过程。

在这里插入图片描述
在该公式中,score函数会逐一比较每一个源序列的隐藏层状态 ℎ⎯⎯s 和目标序列的隐藏层状态 ℎt ,得到的结果将被标准化,产生一个关于源位置的分布,即attention weights。关于score函数的选择有很多,它们主要的不同就在于。乘法和加法形式是目前比较流行的评分函数,如公式(2)所示:

在这里插入图片描述
2) context vector上下文向量的计算

根据公式(2)中计算得到的注意力权重,源序列状态的权重均值(即上下文向量)的计算过程可由公式(3)表示。

在这里插入图片描述

  1. attention vector最终注意力向量的生成

最终的注意力向量需要将上下文向量和当前目标序列的隐藏层状态互相结合生成,公式(4)可以表示该计算过程。

在这里插入图片描述

  1. 模型的输入

使用公式(4)中得到的注意力向量,作为下一个时间步时初始状态输入到模型中,并用于得到模型的归一化逻辑输出和损失值。该过程与原始的seq2seq模型中最后一层的隐藏层状态十分相似。

模型评估方法

通常情况下,用户评判一个智能聊天机器人或者问答系统的性能是否理想时,都会将该系统是否准确地完成了用户的任务作为首要的参考条件,例如,在给定的对话中是否解决客户支持问题,但是在智能问答领域并没有一个合适的标准来衡量模型的性能,一般被经常使用的用于反映对话质量的方式主要有如下几种。

  1. [email protected]

使用检索方式实现智能机器人,可以采用常用的检索型标准[email protected],表示让这个模型从10个候选响应中挑出k个最好的响应,候选的响应中包含1个真实响应和9个干扰项噪声响应。如果模型选择出的k项回答中包含对应的正确响应,则该测试样本的结果将被标记为正确。自然,k越大,那么这个任务就会更加简单。

尽管我们知道一个对于回答多分类任务的语言模型的优化并不一定能作为一个好的语言回复生成模型的好的参考标准,但是我们认为一个模型的分类能力的优化一定最终会带来生成任务的提升。

  1. perplexity

另一个常用于估测语言模型准确率的评估方法是perplexity困惑度,它被定义为每个单词的平均负对数概率的指数 ,如公式(1)所示。

在这里插入图片描述

公开资源

模型框架

Dialogflow

网址:https://dialogflow.cloud.google.com/
类型:聊天机器人平台
机构/作者:Google
流行程度:24,600,000
简介:Google收购的一家AI公司,和wit.ai类似。提供了一个AI的框架,可以自己定义模板,参数,多轮对话,很方便的就可以定义一个自己的特定任务的聊天机器人。

腾讯智能对话平台 TBP

网址:https://cloud.tencent.com/product/tbp
类型:聊天机器人平台
机构/作者:腾讯
流行程度: 1,000,000
简介:全面开放腾讯对话系统核心技术,为大型企业客户、开发者和生态合作伙伴提供开发平台和机器人中间件能力,实现便捷、低成本构建人机对话体验和高效、多样化赋能行业。

Chatopera

网址:https://bot.chatopera.com
类型:聊天机器人平台
机构/作者:Chatopera
流行程度:120,000
简介:Chatopera 机器人平台包括知识库、多轮对话、意图识别和语音识别等组件,标准化聊天机器人开发,支持企业OA智能问答、HR智能问答、智能客服和网络营销等场景。

Language Understanding Intelligent Service (LUIS)

网址:https://www.luis.ai/
类型:聊天机器人平台
机构/作者:Microsoft
流行程度:8,020,000
简介:和wit.ai,api.ai类似,是微软在这方面的一个产品。

Microsoft Bot Framework

网址:https://dev.botframework.com/
类型:聊天机器人平台
机构/作者:Microsoft
流行程度:532,000
简介:这是一个应用层的框架,里面用到的技术是luis.ai和微软的其他人工智能技术。

Artificial Intelligence Markup Language

网址:http://www.alicebot.org/
类型:开源
机构/作者:Dr. Richard S. Wallace
流行程度:283,000
简介:这是一个自定义的AI语言,是XML语言的扩展,支持语言规约,开源了解析器,支持主流的所有编程语言。

Clause

网址:https://gitee.com/chatopera/clause
类型:开源
机构/作者:Chatopera
流行程度:206,000
简介:Clause 是 Chatopera 团队自主研发及使用其他商业友好的开源软件的方式实现的,Clause 为实现企业聊天机器人提供强大的大脑,包括客服、智能问答和自动流程服务。Clause 利用深度学习,自然语言处理和搜索引擎技术,让机器更加理解人。

opendial

网址:https://github.com/plison/opendial
类型:开源
机构/作者:Lison, P.
流行程度:147,000
简介:有较好的澄清机制,基于规则的系统,没有太多的机器学习和深度学习技术,在参数调节部分用到了机器学习技术。

数据

Ubuntu对话语料库

Ubuntu对话语料库(Ubuntu Dialog Corpus),UDC是目前最大的公共对话数据库之一,它以一个公共IRC网络上的Ubuntu频道为基础,该频道允许大量参与者的实时交谈。该数据库可以作为训练对话系统神经网络的重要数据是由于它具备的一下四种特征:

  1. 双向对话,适用于多参与者聊天,并且是最好是人–人间对话。

  2. 具备大量的对话集:105~106在人工智能的其他领域的神经网络学习是一个比较合适和典型的数据量。

  3. 许多具备多个轮回的对话(大于3个轮回)。

  4. 数据具备特定领域的目标,而不是开放的聊天机器人系统。

UDC数据集可以在官方网址进行下载,进行NLTK预处理后的训练数据由1,000,000个多轮回对话样本构成,共由7,000,000句话语和100,000,000个单词组成,其中50%是积极地(标签为1,表示该话语是对这个语境的真实响应),50%是消极的(标签为0,表示该话语不是对这个语境的真实响应)。每个样本都由一个语境(context),一个话语(utterance)和一个语境的响应(response)构成的。

Cornell电影对话语料库

Cornell电影对话(Cornell Movie-Dialogs)数据集可以在Cornell大学CS专业的官网上进行下载,使用前需要对原始的文件进行预处理工作,通过快速搜索某些特定的模式来清理该数据集。

该语料库是从原始的电影脚本中提取出来的大量虚构的原数据对话集合,共包含了在10,292对电影角色之间进行的220,579次会话交流,涉及617部电影中的9,035个角色,合计总共304,713条话语。其中,每一个电影原数据都包含了:所属流派,发布年份,IMDB (Internet Movie Database互联网电影资料库)评级,IMDB票数以及IMDB评级。

心理咨询问答语料库

心理咨询问答语料库(以下也称为“数据集”,“语料库”)是为应用人工智能技术于心理咨询领域制作的语料。据我们所知,这是心理咨询领域首个开放的 QA 语料库,包括 20,000 条心理咨询数据,也是公开的最大的中文心理咨询对话语料。数据集内容丰富,不但具备多轮对话内容,也有分类等信息,制作过程耗费大量时间和精力,比如标注过程是面向多轮对话,平均每条标记耗时 1 分钟。

数据集由斯坦福大学,UCLA 和台湾辅仁大学临床心理学等心理学专业人士参与建设,并由 Chatopera 和诸多志愿者合作完成。

https://github.com/chatopera/efaqa-corpus-zh

小结

实现智能聊天机器人的方法背景介绍

本文对常用的检索型和生成性两种方式进行了详细介绍和对比,总结如表2和表3所示,并列举了一部分使用该方法生成的实例。在实际条件和资源允许的情况下,也常常会使用检索和生成互相结合的方式来实现,以追求更良好的表现性能。

本文主要研究总结

在这里插入图片描述
表1. ESL场景对话语料库

在这里插入图片描述
表2. 检索型与生成型聊天机器人优点对比

在这里插入图片描述
表3. 检索型与生成型聊天机器人优缺点对比

首先,关于主流的实现智能聊天机器人所采取的生成型技术框架,本文主要介绍了高度抽象的Sequence-to-sequence端到端的模型,它可以对中间的词法分析,句法分析可以省略,并减少了对于序列的过多假设和猜想,十分高效。实现时一般使用Encoder-decoder加解密模型,并结合RNN或LSTM等神经元网络实现,其余模型都在该模型的基础上进行变种修改,如添加Word embedding词嵌入模型和Attention注意力机制等,侧重于解决信息传递,人格一致和回答多样性等问题。

Encoder框架,即“加密”模块,就是使用几层神经元细胞构成的网络,按照特定的规则,对源序列X进行非线性编码,并转化为中间语义表示 C ( C = f ( x 1 , x 2 , … , x m ) ) C (C=f(x_1,x_2,\dots,x_m)) C(C=f(x1,x2,,xm)) ,由于该语义表示C包含了之前输入的问句中的基本信息,因而又可以被称为思考向量。Decoder框架,即“解密”模块,该模块基于中间语义表示C和已生成的历史单词信息,生成i时刻单词 y i y_i yi,依次产生每个 y i y_i yi,那么整个系统从宏观的输入和输出上而言,就是根据输入的句子序列X,产生了目标句子序列Y,即问与答。

其次,本文还对模型训练时使用的训练数据及评估方法进行介绍。智能问答领域不同于其他使用机器学习实现的自然语言处理问题,最为准确的评估方式应当是人的判断,但由于时间和经济条件的限制不被经常采纳。通常情况下可以用的自动模型评估方式较少,常用的为基于检索型的[email protected]和基于生成的Perplexity。

最后,本文介绍了可参考和利用的五个开源模型,分别使用了不同的检索和生成型方式,并提供了可链接的网址进行学习,读者可以使用本文中提供的数据库进行训练,或根据自己的要求定义和生成聊天机器人。

作者

戴怡琳, 刘功申. 智能聊天机器人的技术综述[J]. 计算机科学与应用, 2018, 8(6): 918-929.
https://doi.org/10.12677/CSA.2018.86102

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/watson243671/article/details/108689200

智能推荐

unity暂停游戏,退出游戏_我在玩的博客-程序员秘密_unity暂停游戏代码

1.暂停游戏。Time.timeScale = 0;2.继续游戏。Time.timeScale = 1;3.重新开始。using UnityEngine.SceneManagement;SceneManager.LoadScene (0);其中,0,为游戏场景的索引号,具体索引号在build的时候加入场景的时候后面写的有。4.退出游戏application.Quit();...

单元测试实践篇:Mock_阿里巴巴淘系技术团队官网博客的博客-程序员秘密

淘系的技术发展已经有相当一段历史了,在历史的长河中总能沉淀出很多复杂的巨型项目,包罗多个业务,而且往往服务依赖比较复杂;再加上一些特殊环境变量的设置,想要在本地运行、debug 自测这种...

Pyinstaller打包用spec添加资源文件,亲测可用_THMAIL的博客-程序员秘密_pyinstaller添加资源文件

最近写的翻译软件——transdocx,就是给普通用户而非Python程序员用的,所以它必须是一个开箱即用的软件,普通用户下载下来就能双击运行。而Python作为一个脚本语言,要运行是必须有解释器的,它不能像C/C++那样编译成二进制。同样,也不能要求普通用户首先安装Python解释器、再安装依赖的包、最后运行transdocx。所以,需要把Python写好的软件打包成一个exe程序,让用户双击既可以使用。打包Python程序的最好的工具可能就是pyinstaller了。下面我就结合transd

【ArcGIS操作】2 高级编辑篇_kaitexue的博客-程序员秘密

文章目录1、地形图配准(无地理坐标系的地形图)2、矢量数据的空间校正3、清除坐标系信息1、地形图配准(无地理坐标系的地形图)序号步骤工具位置功能备注1确定目标坐标信息比例尺、坐标范围、投影方法;1:1万(3度带投影),1:2。5万~50万(6度带)2确定四角点高斯投影坐标坐标转换工具四角点标注的坐标为该区域的地理坐标3设置配准连接...

cocos2dx 常见的22种特效 3D特效_天道殷勤的博客-程序员秘密_cocos2dx shaky3d

可以参考3D特效或https://blog.csdn.net/zmzsoftware/article/details/9750373//创建网格节点 auto  gridNodeTarget= NodeGrid::create(); this-&amp;gt;addChild(gridNodeTarget);//随便找个底图   auto sprite= Sprite::create(&quot;JS原型继承.pn...

微信小程序开发笔记_it筱竹的博客-程序员秘密_微信小程序开发

0、杂记0.1、在实际的开发中,图片资源不会存储在小程序的目录中,因为小程序的大小不能超过1MB(现在改为2M)。超过则无法真机运行和发布项目。我们应该将图片都存放在服务器上,让小程序通过网络来加载图片资源。0.2、在wxss中,本地资源是无法使用的,比如:background-image,如果使用本地的图片是无法显示的,可以使用网络图片来代替本地图片,同时要加上background-size...

随便推点

android mp4 画面裁剪,Android视频时长裁剪_weixin_39605706的博客-程序员秘密

大家好,我是程序员kenney,今天给大家介绍一下如何在Android里面实现视频时长的裁剪。首先我们要知道视频是由一帧一帧的数据构成的,每一帧都有一个时间戳,这个时间戳就是我们在做视频编码的时候,当要编码一帧的时候,会给这一帧设置一个时间戳。因此做视频裁剪的思路就是把要裁剪的视频的数据一帧一帧地拿出来,然后从想裁剪的开始位置,把视频帧原样地放回去,直到想裁剪的结束位置。这里值得注意的是,我们如果...

vim使用基础_人类观察所主任的博客-程序员秘密

vim就是vi improved。vi是原本是类Unix系统上的一款优秀的文本编辑器。现在最好用的我觉是gvim,已经可能在各种平台上使用。    vim的官网是:http://www.vim.org 里面的有gvim的程序免费下载,还有各种插件供选择使用,也有少量关于vim的免费书籍供下载。    vim不同于记事本(notepad)、写字板(write)和MS office word,

Self Attention和Multi-Head Attention的原理和实现_陈建驱的博客-程序员秘密_multihead self-attention

个人博客:http://www.chenjianqu.com/原文链接:http://www.chenjianqu.com/show-47.html引言使用深度学习做NLP的方法,一般是将单词转换为词向量序列,然后通过神经网络编码或者说提取这些词向量中的特征信息,继而根据不同任务进行不同的操作。提取特征的第一个方法是使用卷积神经网络,RNN结构简单,非常适合序列建模...

你还在增删改查吗?后端开发如何提高技术水平?_阿里巴巴淘系技术团队官网博客的博客-程序员秘密

作为后端开发,永远重复着「增删改查」,这些基础的操作占据了自己大部分工作时间,看到其他人成为技术大牛,而个人技术水平永远停在原地,也会很迷茫......需要学习的仅仅如此吗?当你工作久了...

Asp.Net请求处理过程_以梦为马的路人的博客-程序员秘密_asp.net 请求

一.浏览器发出访问某ASP.NET网页的HTTP请求 假设这个请求是针对此网页所属的ASP.NET应用程序的第一次请求。当此请求到达Web服务器时,由HTTP.SYS(windows操作系统上的一个进程)负责接收,根据此请求的URL,HTTP.SYS将其传递给此ASP.NET应用程序所对应的应用程序池(什么是应用程序池?(1)),由在此应用程序池中运行的工作者进程负责处理请求。 工作者进程接收到

CEO面试你时喜欢问的十六个问题_喜欢打酱油的老鸟的博客-程序员秘密

大多数精明的CEO或高管在面试时不会问老生常谈的问题,相反会问更有意义的问题。实际上,他们通常只需要问一个问题,就可以获知有关求职者的一切信息。有的CEO喜欢问严肃的问题,有的则喜欢问有关服装甚至僵尸末日的轻松问题,但这些问题同样能够体现出求职者的潜力。 在一到十级的怪异评级中,你认为自己位于第几级? 卖鞋网站Zappos首席执行官谢家华(Tony Hsieh)称,Zappos的核...