QA问答场景算法实践

优采云 发布时间: 2022-05-02 18:20

  QA问答场景算法实践

  1.背景

  我们的游戏客服场景中包含大量玩家与客服交互问答的文本语料,人工客服在面对玩家时会遇到诸如账号密码、充值福利、玩法攻略等很多方面的问题,经过长期的积累,运营人员根据线上用户的提问做总结,沉淀下来的知识形成了游戏问答领域的FAQ库(知识库)。我们的智能客服场景致力于解决人工客服需要应对的玩家提问,提供一个便捷的搜索入口,以便后续有人再有相同或相似问题时可以直接搜到答案。

  智能客服相比于人工客服具有响应速度快、always online、维护成本低等优势,在有知识库库的前提下,通过智能化手段辅助人工解决玩家问题,已经作为一种效率提升手段覆盖到越来越多的游戏当中。

  2.智能客服的实践及探索2.1 智能客服架构

  整个智能客服的架构如下图所示:

  

  2.2 Query理解2.2.1 为什么需要query理解

  query理解是整个智能客服中最上游的一环,负责的是从query中提取到有效的信息,从而了解用户希望这个query在问什么内容。query理解,决定了下游的问答召回策略:

  quey理解需要做哪些内容短语改写

  短语改写的背景很容易理解,因为输入法等方面的问题,用户输入会有笔误操作类

  这里提供两个思路:

  简单说,短语改写的目的是为了纠错,比如“充值到账”手误输入成了“充直到账”,短语改写便能将其纠正,query改写后能更容易召回正确答案。

  意图识别

  意图识别模块通常是一个分类任务,目的是识别用户要查询的类目,再输出给召回和排序模块,保证最后结果的类目相关性,具体实现方式可以从传统方法和NLP两方面考虑。

  传统方法:通过规则、词典、正则等方式进行识别,准确率高、速度快。

  NLP:通过语义分析的手段,文本分类,达到语义分析的目的。

  这里的意图识别模型用的是fastText,FastText是由FaceBook于2016年发布的文本分类模型,具有结构简单,训练及推理速度较快的特点。FastText与生成词向量的CBOW方法结构很像,并且采用了N-gram的方法,在预测过程中使用了分层SoftMax来加速训练。

  

  FastText能够在文本分类任务中迅速达成baseline,达到相对较好的效果,并且推理耗时较少,适用于项目启动时期的快速上线。总的来说,该模型有高效的训练速度和较高的识别准确率,做出来的结果也可以达到上线使用的标准。词法分析维护了一些词典,通过词典匹配能获得query中的关键词和关键短语。

  实体识别

  实体识别的实现方法可以概括为词典匹配和机器学习方法。

  词典匹配

  这个任务虽说是命名实体识别任务,但是却不见得需要建立一个模型才能解决,要进行一个初步的处理,快速上线,其实词典匹配的方法可能是最简单的,而实际上,即使是其他方法,我也很建议大家用这个方式去做一遍,理由后面会谈。

  词典匹配的便捷性体现在你真的很容易就能拿到这个词典资源,因为你做搜索,所需要的数据,其实已经在数据库或者底层搜索引擎里面了(没有资源你怎么做搜索推荐?),你可以将数据库内的数据按照字段提取,然后通过n-gram的方式切词,即可完成一个初步的词典,复杂的,进一步,为了保证词典的可靠性,你可能需要删除一些不适合再次点出现的词汇,举例,酒店名字段中,其实没有必要存“酒店”做为词条,首先召回的时候,大部分酒店都有“酒店”一词,他没有明显地指向性,然后,这种召回也会增加排序的负担。

  有了词典之后,就可以通过词典匹配的形式进行命名实体识别。上面给出的例子:“北京的温泉”,就可以快速标记“city-object-type”,然后就可以通过这个实体识别结果,拼好检索语法,完成召回。

  机器学习方法

  器学习方法,包括深度学习,是现行的主流方法,我也最建议用这种方法上线。

  词权重问题

  词权重可以简单理解为一个词在我们问题句子当中的权重,为什么要考虑词权重?

  我们有了一段文本,抽取比较重要的关键词,这些关键词在一定程度上可以代表文本的语义,这种任务就被称为关键词抽取。如果从抽象的角度去解释,我们会把句子转成0和1组成序列,序列的长度跟句子长度相等,对于这个01序列,为1的位置对应句子的位置的词汇就是关键词,为0的则为为关键词。

  按照这个思路,我们用01来表示句子序列,0和1分别对应句子当中的词汇,如果按照等级划分,比如分层5个级别,01234,4代表最重要,3次之,以此类推,形成一个分等级的词重要性分析。

  概括来说,就是给句子中每个词汇打分,体现他们的重要性,这种问题就被称为词权重问题。

  处理方法:

  TFIDF是很强的baseline,具有较强的普适性,如果没有太多经验的话,可以实现该算法基本能应付大部分关键词抽取的场景了

  有监督方法,其实就会比较多样了,小到用基础统计特征做机器学习,序列标注下的HMM、CRF,大到用语义模型做深度学习,其实都有不错的效果。

  我这里重点谈小型机器学习方法,这似乎也是目前工业界常用的。LR和GBDT体系是目前浅层学习的重要方法,当然序列标注的CRF和HMM也可以参考,因此在模型选型上,主要就是这些,那么,剩下的问题就是特征怎么放了。

  常用的特征如下,这个和上面提到的可能会重复。

  2.3 召回层

  召回层是将候选答案从FAQ库中拿回,获得待排序的候选集。此处用了两种召回方式:检索召回和语义召回。

  

  2.4 排序层

  排序层是将召回层拿到的候选知识进行排序,将和query最相关的知识尽可能往前排。排序模型采用了GBDT,GBDT作为一种常用的树模型,可天然地对原始特征进行特征划分、特征组合和特征选择,并得到高阶特征属性和非线性映射。我们考虑用GBDT可以组合多种特征,可扩展性强,并且后期验证GBDT的效果好于单独使用匹配算法效果,因此,当前匹配算法在排序层中作为一种特征来使用。

  匹配算法用到的是LSTM-DSSM,DSSM即Deep Structured Semantic Model,模型出自微软研究院,主要方法是将query和doc通过深度网络映射到相同维度的空间中,通过最大化其余弦相似度来进行训练。

  

  LSTM-DSSM是对DSSM的优化,原生DSSM的基础上,引入LSTM作为句子表征,提取更多的语义级别的信息。

  2.5 返回层:

  query经过上述处理之后会对处理结果进行返回,目前主要是QA-Bot。

  三、总结与展望

  当前的智能客服已经覆盖了多个业务线的游戏场景中,上线后,QA-bot的列表点击率也有一定的提升,对于一些简单的问题已经能够将较匹配的答案排到较前的位置。但是对于需要深度语义及具有知识背景的问题,如:“VIP5到VIP6需要多少钱”的问题,现有办法将答案“充值”排在靠前的位置时还有一定的badcase。当前正在考虑参考知识图谱等方向的解决方案,对知识库内的知识进行结构化的梳理,希望在匹配的同时能够具有简单的推理,来更好的理解用户语言背后的需求。

  展望和计划:

  数据是效果的基础,智能客服效果所依赖的知识库库也需要不断的知识扩充,如何通过自动或*敏*感*词*的方法挖出更多高质量的相似问或者标准问,为知识运营人员提效,也是我们现阶段正在探索的方向。

  当前的匹配算法仅作为一种特征使用在gbdt排序模型中,后期随着匹配算法的不断积累,会将所有的匹配模型进行整合,以一种更通用的模块化的方式,为有文本匹配需求的各个业务场景提供匹配算法的支持。

  算法服务模块会进一步拆解,比如Query理解等方面的服务可以集成到开放平台,并提供服务,为更多相关的业务提供算法支持。

  参考文献

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线