1. 智能问答算法架构

  预处理:分词、词性标注、实体识别较为成熟,可以用hanlp等工具完成。多意图用分类来做,处理用户在一句话内有多个意图。重点关注纠错、长难句压缩、指代消解。

  检索模块:ES+深度语义匹配。如果此时问句有被改写或者纠错,则是多个query并行(注意一下)。

  排序模块:LTR rerank,结果归并+LR,对多个指标分别给出得分,过滤掉不合理答案

  输出:直接问/推荐问/关联问/问句澄清

2. 架构细节部分:

  预处理:长难句   语法树分析+关键词典, 通过标点或空格分割长句成若干个短句,对短句分类,去掉口水语句; 基于概率和句法分析进行句子压缩,只保留主谓宾等核心句子成分,配合保险关键词典,确保关键词被保留

  预处理:纠错  基于拼音词典(两者拼音一样,在词典里找出对应的词)和纠错模型(transformer,encoder端输入句子拼音,词典中match的关键词不转变为拼音,decoder端输出汉字,训练集搜狗新闻3200W通用语料)

  预处理:指代消解 朴素实现思路:分词——词性标注——依存句法分析——主谓宾提取——实体替换/指代消解。第二种:深度增强学习用于mention-rank指代消解

  检索和深度语义匹配:检索一般用ES,ES速度块,根据数据库建立索引,默认算法是TF-IDF;深度语义匹配用的是孪生网络,siamese CBOW。将用户输入分词embedding成词向量,并取平均值作为句向量,与问题库中的标准句进行训练,搜索出最相似的句向量作为候选答案列表。

  Ps:样本较少的时候,字向量的效果会好于词向量,样本足够的情况下,词向量效果优于字向量

  深度语义匹配:bert for QA,用bert与训练模型+fine tuning 准确率提升3个点

  深度语义匹配:交互矩阵:借用CNN的思想,对两个句子进行相似度计算,得出得分

  文本匹配工具:MatchZoo:DIIN,ESIM,基于keras实现。

  知识库和知识指引:在知识库里录入知识,自动生成语义索引和字面索引;语料更新无需发版。Annoy搜索算法(建立数据结构,使得查询一个向量的最近邻向量的时间复杂度是次线性),存在小问题:第一次查询速度比较慢

  排序Deeorank:CNN做法,tri-gram,将query和document的语义向量及其相似度拼接成新的特征向量输入MLP层进行learning to rank,最后的join layer 包括query、document、Xsim、和其他特征

  排序Deeorank:DRMM+PACRR,STOA,来自Google

  效果评估:话术澄清:排序最高的答案置信度不高时触发。

  效果评估:直接回答,推荐问,关联问,搜索式问答,闲聊

  效果评估:自动化测试框架+验证集(bad case 测试集, 语义验证集 字面鲁棒性验证集 线上日志抽样测试集 高频问测试集)+效果评估

3. 附录

AI智能问答流程架构 智能问答系统的步骤_句法分析