快捷搜索:  汽车  科技

知识管理如何定义(一文详解启发式对话中的知识管理)

知识管理如何定义(一文详解启发式对话中的知识管理)根据这些补充好的信息,实际上它就是一个结构化的信息,根据它的时间、地点、天气现象,然后去后台的数据服务里做一个查找,把真正的天气,比如明天需要下雨或者是晴天这样一个信息取出来,然后经过一个答案生成,Response Generation 这样一个模块,然后生成一句比较自然的话,比如说明天可能是一个晴天,然后就说明天是一个晴天,如果再说得更自然一点,可能说是一个出游的好时间,类似这样的,整个流程大概是这样,实际上是一个比较简单的过程。 领域的判断一般情况下有各种方式,不管是写模板,还是一些分类的算法,比如这句话我们送到一个分类器里,它可能能判断出它是一个天气领域相关的。在这里边,通过 Slot Filling,它就可以得到天气领域的一个意图,这个意图领域是天气领域,有它的地点和时间。当然这句话没有提到地点,因为一般这样的系统会通过传感器或者是定位的信息,或者是 IP,或者各种设备相关的场景的

例如,用户问一句明天会下雨吗?系统会做一些预处理,即一些自然语言处理上的特征处理,比如分词、词性标注、命名实体识别这样的模块,在这里可以识别到一些实体,比如里边的时间是明天,关于天气现象是下雨,这是命名实体可以做到的。

经过特征的预处理以及命名实体的识别,然后进入正式的对于这句话的理解。首先是对于用户的每一个问句需要做一个领域的判断,一般做这个领域判断是因为在对话系统里会支持各种场景,首先把用户的这句话限定在一个固定的场景下,然后才能做相应的后续处理。

领域的判断一般情况下有各种方式,不管是写模板,还是一些分类的算法,比如这句话我们送到一个分类器里,它可能能判断出它是一个天气领域相关的。在这里边,通过 Slot Filling,它就可以得到天气领域的一个意图,这个意图领域是天气领域,有它的地点和时间。当然这句话没有提到地点,因为一般这样的系统会通过传感器或者是定位的信息,或者是 IP,或者各种设备相关的场景的信息获取到他一个默认的地点或者默认的城市,根据这些信息,然后我们得到一个结构化的意图。

这个结构化的意图,然后送给一个对话管理或者对话状态追踪的模块,这个对话状态的管理去做一个判断,说以当前这个领域,比如天气这个领域它的 Slot 是否是满足的。对于天气这个领域比较简单,发现这句话实际上它的领域意图、时间、地点都已经满足了,然后把这些槽位都补充上。

根据这些补充好的信息,实际上它就是一个结构化的信息,根据它的时间、地点、天气现象,然后去后台的数据服务里做一个查找,把真正的天气,比如明天需要下雨或者是晴天这样一个信息取出来,然后经过一个答案生成,Response Generation 这样一个模块,然后生成一句比较自然的话,比如说明天可能是一个晴天,然后就说明天是一个晴天,如果再说得更自然一点,可能说是一个出游的好时间,类似这样的,整个流程大概是这样,实际上是一个比较简单的过程。

通过这个流程我想跟大家分享一下对话系统的基本架构,首先它要处理一个用户的 Query,然后它要经过一个对话管理的模块,这个对话管理实际上就是维护上下文的信息。再下面是一个意图的理解,这个意图的理解可能有各种方式,包括知识库或者叫知识图谱,包括问答的形式,这种问句相似度匹配,还有一些通用的各种其他的意图的理解,包括意图分类的这些东西。

知识管理如何定义(一文详解启发式对话中的知识管理)(1)

在这个里边,对话管理在这个里边,一般情况下对话管理实际上是一个类似于流程图的东西,比如以刚才天气的里边,它实际上是一种叫 Slot Filling,有几个信息填满之后就可以了。然后在一些其他的对话过程中,比如说典型的客服,实际上一般在客服的具体场景下,比如金融领域的某一种金融业务或者是用户查询一种金融产品,比如保险这种产品,某一种保险产品,它有一些信息,它实际上是一个流程图的形式。

还有一种是我们后面会提到的启发式的对话,这几种形式的结合,其实是一个对话的管理。现在一般的系统可能都是处理某一种对话,要么就是 Slot Filling,要么就是一个设定好的流程,要么是一种启发式,能把它做到融合的可能还不是特别多。

继续在这个图里边,刚才提到对话管理就是 DM,对话的理解就是知识库,问答对,还有一些通用的,比如说抱怨,一种通用的状态,一般情况下可能是一种分类的方式来做的这种 NLU 的理解之后,各个模块做到这个 NLU 之后,它需要去做一个抉择,因为在各种系统里边,用户的一句话可能都会找到一个答案,我们到底选哪一个答案,所以就做一个排序,排序完之后经过一个答案的生成,最后给用户一个答复。

当然这里边,边上还有一个模块就是上下文的管理,它在对话管理、NLU 以及排序和答案生成这些模块里都会用多,它会维护一些上下文的信息。当然这张图结构是比较简单的,但是每一个里边实际上有挺多东西,我们后面看具体的内容,最后我们回过头再来看这张图,可能就会有一些不一样的东西。

看之前我们先总结一下现在一些对话机器人的现状,一般对话机器人怎么来评价或者它现在的状态,一般评价的标准,我们对机器人的评价是不太好评价的,我们做一个系统或者做一个学术的研究,一般情况下它怎么来衡量这个机器人的效果,实际上是一个很重要的事,我们要做这个事前需要先定一个标准。

知识管理如何定义(一文详解启发式对话中的知识管理)(2)

一般的像对话系统主要的几种评价的东西,一个是准确率,准确率可能就是基于一些问答对还是不对,或者对话答的对还是不对,比如这个对话进行了十轮,这十轮里有几次对的,几次错的,直接给一个零一的判断,然后算出准确率。

另外一个,人工打分,因为这个对话过程中它可能并不是一个绝对的零一的判断,有的时候它给的答案可能不那么合理,但是一定程度上能够接受,所以人一般可以给它打一个分数,比如说 1 到 10 分或者 1 到 5 分,给一个分数,最后给这个机器人一个综合的打分。

学术上可能借鉴一些其他系统的标准,比如说困惑度或者 BLEU 值这样的方式来给一些打分,一般这种标准更多是在一个限定的数据集里去衡量这句话,生成的这句答复它的语言流畅程度,可能更多的是从语言流畅程度的角度来衡量,当然这些困惑度或者BLEU值,它的好处是能自动地来判断,但是坏处是它其实很难严格地从语意上来判断这个系统好或坏。

在一些极窄的领域里,比如说订餐,甚至更窄一点,比如订一个披萨或者订咖啡,或者拨打电话,这种很窄的领域,实际上现在机器学习的方法和模板的方法都能够做到一个比较好的精度。

机器学习或者深度学习,但是深度学习在这种场景下它也依赖于一个比较大的数据量,相对于这个场景来说,因为一般在这种实验上,它的场景还是比较小的。如果场景比较多的话,现在在一个比较复杂的场景里,可能现在深度学习的效果还不是很好,就是在多轮对话的场景下,并且有多个场景混合的话。

另外在一些较大的领域,比如客服,客服这个场景,它一般情况下对于一个企业的客服,一个企业的客服可能会涉及到几种产品,既使是一类产品也会涉及到这一类产品不同的产品线以及它各种型号这些东西,客服它相对来说是一个比较宽的领域。

现在不管是深度学习,还是其他传统的机器学习,如果在整体都用深度学习的方式,它的准确率是比较低的,很少能做到 50% 以上的,就是在一个比较大的领域里。所以现在在客服领域里,很多系统是基于检索式或者是基于模板的,检索式就是它准备好了一些标准的问答对,因为企业做自己的客服的时候,一般情况下积累了一些它自己对自己产品的标准问题和答案的,用户的一个问题就到这里找一个最相似的问题,然后给它一个答案。这种方式目前是用得比较多的。

另外一种就是模板,人工去写一些规则的模板或者叫语义的模板,然后去解释用户的这个问句包含哪些主要的信息,然后把它对到一个意图上给一个答案,在这些领域里边,较大的领域实际上机器学习的算法还是有一些挑战的,即使用模板它也有很多的挑战,因为模板多了之后它就会有冲突以及不好维护的问题。

▌启发式对话系统

启发式对话系统,是我们正在做的一个启发式对话系统,启发式对话系统现在有一些相似的概念,比如说主动式对话,思必驰提出来这个启发式对话可能主要是在这样,在一些企业的场景下很多时候用户实际上是面对一个对话机器人,他不太清楚能问什么样的问题,以及这个机器人的能力是什么样,它能回答什么样的问题,或者用户大概知道他要什么东西,但是他对于问问题这个事,让他去问很多问题还是要费一点脑筋的。

启发式对话大概就是这么一个流程。它实际上通过这些问题背后的一些联系,能让这个对话一直持续下去。当然你说你不想了解然后它就结束了。这是一个基本的概念。

我们来看一下启发式对话有哪些基本的特点,首先根据用户的问题主动引导对话交互,用户问了一个问题,系统会根据这个问题把一些相关的问题列出来或者问用户他想不想了解。用户的问题是以多种形式连接到知识点,当然这个对话后面,我们叫知识点,以一个知识点的方式,连接一个知识点可能就是对于一个具体的问题,这个问题可能有各种不同的问法,我们都认为它是一个知识点。

以多种形式指的是现在常见的形式,它可能是一个问答对的形式,在这个对话系统后面可能是一个问答对的形式,也可能是一个知识图谱的形式来存在的,但是它们的连接是统一的,都是以一种知识点来管理它们。

知识管理如何定义(一文详解启发式对话中的知识管理)(3)

知识点如果直观地理解,我们可以认为它就是问答对或者知识图谱里面的一个实体相关的属性这样的东西,这些知识点之间或者问题之间,它通过话题来融合,话题实际上对用户是一个不可见的概念,它是为了去做推荐,因为我们把问题通过话题做一个连接之后,后面这个启发式对话实际上是根据话题来做一些选择,用户问了一个问题,我们把这个问题所在的知识点,这个知识点它所在的话题,根据这个话题去找到一些相关的话题,然后在那些话题下面找到一些对应的问题,然后推荐给用户。

话题之间有一些语义或者逻辑关系的,后面会具体讲这些话题之间是怎么组织的。整个对话过程可能就是根据话题来做整体的规划以及跳转的。这是现在整个启发式对话它的一些特点。

知识管理如何定义(一文详解启发式对话中的知识管理)(4)

这是一个具体的例子,这是一个产品的形态,就是说这个话题的组织。对于一个企业的客户,它如果想做一个它的对话系统,它可以人为地去设定一些话题,这个话题是以树型的组织,比如在这个里边就是一个关于花相关的话题,比如怎么学习花艺,各种花艺相关的信息,每一个话题,橙色的这部分是这个话题的组织,话题树,用户可以设定这样一个话题的组织。在这个话题下面,每一个话题下面用户都可以去定一些,比如花艺大师,花艺大师下面用户可以定义它在这下面一些人相关的信息,然后具体把这些人相关的信息列出来。

一个终端的用户就可以去问这些关于人的信息,所以话题大概有这么几种形式,首先以右边这个图的形式,某一个话题下面可能有两三个这样的话题,当然这个话题还可以有层次,它可以有子话题、孙子话题,这个层次结构可以来组织扩展,当然一个话题下面可以有很多话题,这个话题的一个组织形式,这些基本的概念。

▌对话系统中的知识管理

再我们来看一下,在对话系统里边这些知识它在对话的理解以及对话管理中是怎么来发生作用的,后面我会结合现有的技术,现有的大家常见的做对话里边的相关技术,然后和启发式对话一起来介绍对话系统中的知识管理。

首先来看几个例子,在机器人理解语言中可能遇到的一些问题,这个给大家一个直观的感觉,可能遇到哪些问题。比如说在理解上,机器人理解语言的过程中,比如说“今天天津适合洗车吗”这样一个输入,如果是语音或者拼音输入都可能会有这样的问题,“今天天津适合洗车吗”可能和“今天天津市河西”,天津市有一个河西区,可能就会理解错,从拼音到文字可能就会出错,实际上这个非常相似的。

这是我们在语言上可能会有一些问题,机器来做这个事的时候,它实际上很难来判断,人是有一些背景的知识和上下文知识的。

知识管理如何定义(一文详解启发式对话中的知识管理)(5)

猜您喜欢: