@kpatrick
2019-10-11T02:12:35.000000Z
字数 1420
阅读 53
work
nlp
QA
阅读材料:
- 平安人寿智能平台团队:智能问答系统的探索与实践
工具完成:分词,词性标注,实体识别
分类:多意图识别(处理用户在一句话里有多个问题意图)
句法分析:情感分析
替换:问句改写(保险相关词语还原,缩写,全称等)
重点:长难句压缩,纠错,指代消解
纠错和问句改写 -> 多个query
字面得分,语义得分,关键词得分,保险实体对齐(保险名词),疾病/地区名等对齐
后处理:
剔除不合理答案(用户问A保险,答案是B保险,实体对齐时可以识别)
直接问/推荐问/关联问,如果阈值低,问句澄清
长难句:用户输入是长句,数据库中是精简短句,需要先压缩后匹配(长句匹短句算法上会有缺陷)。
处理方法:
- 分类:通过标点分句,然后训练一个分类模型过滤业务无关的句子
- 句法压缩(抽取式):保留主谓宾,配合保险关键词典保留业务关键词
- 句法压缩(生成式):seq2seq,attention,可看做是生成摘要/概率模型(哪些词可以保留/删除/概率改写)
纠错:为了处理用户输入错别字,防止对后面模型造成不良影响。
处理方法:
- 关键词拼音字典 + 规则:字典中查找,词汇比较局限
- 通用纠错模型(Transformer):encoder端输入句子拼音和关键词,decoder端全汉字,通用语料和业务数据训练
指代消解:用户的问题带有上下文信息,用户输入的句子可能比较零散。
处理方法:
- 接地气方案:
分词、词性标注、依存句法分析(找出核心词,分析各词对核心词的关系)、主谓宾保留、实体替换,局限于一些关键保险名词、疾病名词等- 通用方案:找出待消解项(句法分析),先行语
Mention Pair Models: 分类。指代词和被指代词成对进行二分类,决定是否消解;
Mention Ranking Models: 排序。待消解项(query) -> 先行词(candidate),得分最高则是消解项;
Entity-Mention Models: 聚类。找出所有Entity,然后根据上下文聚类,同一类中的词消解为同一个Entity(类似于同义词替换成一个代表)
深度(Deep Learning Based)语义匹配:
孪生网络:预训练好词向量,用户问题->句向量表征(分词+word embedding+平均)
优化点:
Bert:fine tune,bert表征之后的句向量,接孪生网络
交互矩阵:cnn思想,两句话相似度(m,n个词,相似度矩阵维度m x n),相似度度量(0/1,词向量余弦距离,词向量内积),卷积提取ngram特征,得出得分
深度语义匹配工具:MatchZoo
通过句向量表达,需要去从语义向量索引中去搜索最近邻的N个答案。
得到若干个答案,预处理,去掉重复的答案,然后进入排序模块。
排序模块输出后,根据用户的问题把最相关的答案得分从高到低进行一个排序,给到输出层。
如果得分最高的答案的置信度不高的话,需要进行话术澄清。(需要让用户确认是不是在问该问题)
直接回答/推荐问/关联问/搜索式问答/闲聊