记
本⽂旨在学习平安智能问答系统的基础上,记录下学习笔记和⼼得。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 torank,最后的join layer 包括query、document、Xsim、和其他特征 排序Deeorank:DRMM+PACRR,STOA,来⾃Google 效果评估:话术澄清:排序最⾼的答案置信度不⾼时触发。 效果评估:直接回答,推荐问,关联问,搜索式问答,闲聊
效果评估:⾃动化测试框架+验证集(bad case 测试集, 语义验证集 字⾯鲁棒性验证集 线上⽇志抽样测试集 ⾼频问测试集)+效果评估3. 附录
因篇幅问题不能全部显示,请点此查看更多更全内容