知识管理如何定义(一文详解启发式对话中的知识管理)
知识管理如何定义(一文详解启发式对话中的知识管理)问句分类也有一些直接拿现在深度学习的,比如embedding,实际现在深度学习,比如前面提到的 Sequence to sequence 模型可以直接把用户的问题 embedding 成一个向量,我们直接拿这个向量实际上就可以做一些问句的分类或者相似度计算,这张图是大概 2000 多个用户的问题,然后做了一个 embedding,就是用 Sequence to sequence 做了一个 embedding。另外一种是问句检索的方式,比如在闲聊或者客服中实际上都大量地用到。我们说闲聊,实际上从学术上来说可能很多研究是在做深度学习的闲聊,但实际场景的闲聊里边,有很多也是通过问答检索的方式检索出来的,当然它需要有大量的问答对,这些问答对都是人手工事先整理出来的,这是一个比较耗费人力的东西,并且它覆盖的范围有限。 一般做这个事的方式是说先通过一个倒排索引,这个用户问题来了之后检索出一组问题,然后
我们来看一下,刚才列了那么多问题,一般情况下来做这个对话里边核心的,刚才我们在最开始的架构图里已经看到对话系统里边核心的三大块,一个是自然语言理解,一个是对话意图理解,对话管理和对话答案的生成三个部分。
大家比较关注的是前两个方面,对话的理解和管理,理解这部分可能最常见的是基于规则的系统,比如我们就写一个 pattern,科研人员、时间、发表过的文章,类似这样的,这个规则系统里有一些词典和规则的组织,当然这有一系列规则组织的问题,实际上它也是一个比较浩大的工程,但是我们从算法或者是我们理解的角度,可能觉得它还是一个比较简单的方式,当然规则多了之后是挺难维护的。
另外一种可能就是通过意图的分类的方式,比如通过一些机器学习的方式给它做一个分类。比如我们做一点简单的,比如天气,对话系统只要理解出来它是天气,然后我们就给它播一个天气预报,很多场景下用户也可以接受,系统不理解它里边具体的东西,只理解是某一种意图,然后就给它做一个播报。这里面常见的这种分类的算法都可以用得到。
另外一种是问句检索的方式,比如在闲聊或者客服中实际上都大量地用到。我们说闲聊,实际上从学术上来说可能很多研究是在做深度学习的闲聊,但实际场景的闲聊里边,有很多也是通过问答检索的方式检索出来的,当然它需要有大量的问答对,这些问答对都是人手工事先整理出来的,这是一个比较耗费人力的东西,并且它覆盖的范围有限。
一般做这个事的方式是说先通过一个倒排索引,这个用户问题来了之后检索出一组问题,然后对它进行一个侯选,然后再做一些排序,这个排序的算法可能有各种加权,有传统的 learning to rank,还有深度学习下来这种深度的语意匹配的算法,这些算法我们后面可以具体地看几个例子。
问句分类也有一些直接拿现在深度学习的,比如embedding,实际现在深度学习,比如前面提到的 Sequence to sequence 模型可以直接把用户的问题 embedding 成一个向量,我们直接拿这个向量实际上就可以做一些问句的分类或者相似度计算,这张图是大概 2000 多个用户的问题,然后做了一个 embedding,就是用 Sequence to sequence 做了一个 embedding。
这个时候拿这种可视化的工具把它可视化出来,我们可以看出来它大概是能分出来的,这是三类问题,实上它确实也就是三类问题,虽然它们之间有一些交叉,现在这种深度学习的方法对于这种东西的建模能力还是挺强的,基本的问题类别还是能区分出来的。
下面这张图,现在这种基本的深度学习里边的这些算法有一个很基础的模型,就是 Sequence to sequence 的模型,它是基于把用户说的里边的每一个词,比如 ABC 是一个输入的词,ABC 是输入的这个问句,A 是一个词,B 是一个词,C 是一个词,然后它的输出有可能就是 XYZ,它把它送到 Sequence to sequence 这个神经网络里边,A 是一个词,进去之后是一个 RN 的模型,它就做这样一个 embedding,实际上到了 ABC,然后 eos,就是这个句子结束了。
结束之后这个神经网络中间层就是一个 W,这个 W 可以表示这个句子的语意的表示,用这个 W 再去解码出来一个答案,经过大量的数据训练实际上就可以生成一个答案,生成式的闲聊可能主要就是这么来做的,这个模型,包括中间的这个表示 W,实际上也可以用来做问句的分类或者问句相似度的计算。