[关闭]
@kpatrick 2019-10-11T02:12:35.000000Z 字数 1420 阅读 53

平安人寿智能问答引擎算法架构

work nlp QA

阅读材料:
- 平安人寿智能平台团队:智能问答系统的探索与实践


此处输入图片的描述

1 系统框架

1.1 预处理

工具完成:分词,词性标注,实体识别
分类:多意图识别(处理用户在一句话里有多个问题意图)
句法分析:情感分析
替换:问句改写(保险相关词语还原,缩写,全称等)
重点:长难句压缩,纠错,指代消解

1.2 检索模块

纠错和问句改写 -> 多个query

1.3 排序

字面得分,语义得分,关键词得分,保险实体对齐(保险名词)疾病/地区名等对齐

后处理:
剔除不合理答案(用户问A保险,答案是B保险,实体对齐时可以识别)

1.4 输出处理

直接问/推荐问/关联问,如果阈值低,问句澄清


2 重点分析

2.1 预处理

2.1.1 长难句

此处输入图片的描述

长难句:用户输入是长句,数据库中是精简短句,需要先压缩后匹配(长句匹短句算法上会有缺陷)。

处理方法:

  • 分类:通过标点分句,然后训练一个分类模型过滤业务无关的句子
  • 句法压缩(抽取式):保留主谓宾,配合保险关键词典保留业务关键词
  • 句法压缩(生成式):seq2seq,attention,可看做是生成摘要/概率模型(哪些词可以保留/删除/概率改写)

2.1.2 纠错

此处输入图片的描述

纠错:为了处理用户输入错别字,防止对后面模型造成不良影响。

处理方法:

  • 关键词拼音字典 + 规则:字典中查找,词汇比较局限
  • 通用纠错模型(Transformer):encoder端输入句子拼音和关键词,decoder端全汉字,通用语料和业务数据训练

此处输入图片的描述

2.1.2 指代消解

指代消解:用户的问题带有上下文信息,用户输入的句子可能比较零散。

处理方法:

  • 接地气方案:
    分词、词性标注、依存句法分析(找出核心词,分析各词对核心词的关系)、主谓宾保留、实体替换,局限于一些关键保险名词、疾病名词等
  • 通用方案:找出待消解项(句法分析),先行语
    Mention Pair Models: 分类。指代词和被指代词成对进行二分类,决定是否消解;
    Mention Ranking Models: 排序。待消解项(query) -> 先行词(candidate),得分最高则是消解项;
    Entity-Mention Models: 聚类。找出所有Entity,然后根据上下文聚类,同一类中的词消解为同一个Entity(类似于同义词替换成一个代表)

2.2 检索与语义匹配

2.2.1 匹配

此处输入图片的描述

此处输入图片的描述

2.2.1 检索

通过句向量表达,需要去从语义向量索引中去搜索最近邻的N个答案。

此处输入图片的描述

2.3 排序

得到若干个答案,预处理,去掉重复的答案,然后进入排序模块。

此处输入图片的描述

2.4 效果评估

排序模块输出后,根据用户的问题把最相关的答案得分从高到低进行一个排序,给到输出层。

2.4.1 话术澄清

如果得分最高的答案的置信度不高的话,需要进行话术澄清。(需要让用户确认是不是在问该问题)

此处输入图片的描述

2.4.2 答案输出

此处输入图片的描述

直接回答/推荐问/关联问/搜索式问答/闲聊


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注