问答系统的常见技术

您所在的位置:网站首页 对话机器人的关键技术 问答系统的常见技术

问答系统的常见技术

2024-03-05 15:16| 来源: 网络整理| 查看: 265

0、

一、问答系统技术和使用场景

1、问答系统的使用场景 电话营销机器人 智能客服 智能助手 游戏智能机器人 聊天机器人  2、问答系统用到的技术 1、模板与规则:精确度极高,召回率较低,使用于某一个很狭窄的领域(车票查询、商品查询、天气查询...), 例如百度的高考问答系统:关键词一定要覆盖广泛,密切注意 关键词的近似词,如 电脑 --- 计算机 、脚踏车 ---- 自行车,以保证较高的召回率。

规则模板解析: 需要基于  分词、词性标注、命名实体识别、依存句法分析、语义分析 的前提下 才能完成

                                           而且数据中使用的也是字典形式(key hash 结构),查询速度较快。

 

特点:人力物力耗时巨大 技术:规则模板 需要在 分词(HMM等)、词性标注、NER、依存句法分析(hanlp/ltp)、语义分析 的前提下 完成。 eg {('n','爱吃','n'):0,('n','到','n'):1, ... } ------ 规则模板的字典 2、词距匹配:一般使用 编辑距离/simhash 来求 当前query 与 内部问答库中的 问题的相似度,一般取出相似度>0.8的问题 的答案作为当前query的答案。说白了就是答案问答库里已经有了,不是机器现场组织出来的答案。 技术:① sim hash ② 编辑距离: 将两句话进行 添加/删减/替换,使得两个字符串相等的最小的操作次数(即最小的距离 )为 编辑距离。 根据这个编辑距离来求 相似度。   simhash 

               

  编辑距离 

             

3、语义匹配:利用doc2vec来计算当前query与问答库中问题的相似度,类似词距匹配,获取问答库的答案。     技术:① doc2vec/word2vec、n-gram、LDA/LSA(潜在语义分析,根据矩阵分解奇异值大小) tip:词语级语义分析 ② 语义角色标注、依存句法分析 ----- ltp、hanlp 提取三元组:(主体obj,关系谓语rel,客体obj) 精确率 较高,因此比较适合做比较狭窄的领域,比如:买票查询 tip:句子语义分析:实施关系,受事关系,时间,地点

                        NLP知识包--语义分析&智能问答&工具 

                        自然语言处理(NLP)语义分析--文本分类、情感分析、意图识别           

③ 基于规则模板(booststriping,主干抽取:三元组),召回率和精确率都不错,需要人工干涉,是一种成熟的技术 https://blog.csdn.net/qq_16555103/article/details/103792301 -----信息抽取(booststraping、深度学习..) 以上两个方式:耗时较短    大致实现:利用NER抽取实体,利用 分词、词性标注、依存句法分析 去除句子修饰词,利用实体做种子搜索匹配模板。

 

4、状态机与行为树:用于特定的任务场景中。场景:相对复杂的流程,包括 引导、反问、提示、确认 等功能(例如:售后服 务【第一步:。。。第二步:。。。】)

 

5、知识图谱:主要用于推理过程的回答。场景:相对复杂的关系推理 例:小明的爸爸的孙子是谁? 理解: 知识图谱本质上也是一种规则模板,而且其构建过程用的是三元组的结构( ('苹果','颜色','红') ), 技术:知识图谱是建立在 信息抽取(方法:前面文章) 的前提下,将 信息抽取 获得的三元组进行 知识图谱。

        注意:以上五种方式获取答案的结果都是在问答库中搜寻答案获取的,机器只是分析了问题query寻找答案而已,并不是现场组织的语言进行回答。 

5.. 信息抽取 链接:https://blog.csdn.net/qq_16555103/article/details/103792301 ---- 信息抽取(booststraping、深度学习..)

 

  问答系统 深度学习 部分:  seq2seq 闲聊对话NER 命名实体识别情感分析意图识别 6、命名实体识别NER: 7、seq2seq+attention:场景:QA对话闲聊 8、意图识别 1、基于词典以及模版的规则方法 ​ 不同的意图会有的不同的领域词典,比如书名,歌曲名,商品名等等。当一个用户的意图来了以后我们根据意图和词典的匹配 程度或者重合程度/或者打分来进行判断,最简单一个规则是哪个domain的词典重合程度高,就将该query判别给这个领域。 2、基于查询点击日志 ​ 如果是搜索引擎等类型业务场景,那么我们可以通过点击日志得到用户的意图。 3、基于分类模型来对用户的意图进行判别 ​ 因为意图识别本身也是一个分类问题,其实方法和分类模型的方法大同小异。 4、意图识别的难点 ​ 意图识别工作最大的难点其实是在于标注数据的获取。目前标注数据的获取主要来自两方面,一方面是专门的数据标注团队对数据 进行标注,一方面是通过半监督的方式自动生成标注数据。

 

5.意图识别的做法: 两种方式: ① 基于规则模板解析; 例 1公斤等于多少斤? >>>>> 模板: 【数量】【单位】 是/等于 【数量】【单位】 需要基于 分词、词性标注、命名实体识别、依存句法分析、语义分析 的前提下 才能完成 tip思想:利用词性标注,依存句法分析去除修饰词并获得意图动词,利用NER判别实体,由实体命中 各个子模型的主域,意图动词命中领域,用领域模板进行匹配的方式,输出所有子模型中重合度最大 的模型作为预测模型。 而且数据中使用的也是字典形式(key hash 结构),查询速度较快。 ② 基于机器学习、深度学习分类算法: 机器学习的算法: 例:doc2vec + LR、SVM、XGboost、KNN 贝叶斯算法 ------- 算法特性 适合短文本 分类 深度学习的算法: 例: LSTM、GRU、BiLSTM + attention 分类模型 transformer、BERT 结构         链接:  https://blog.csdn.net/qq_16555103/article/details/100767984     ---------- 意图识别 9、情感分析:前面文章 情感分析与意图识别一样,属于分类模型的范畴 基于情感词典的方法: ①建立带类别(喜、怒、哀、乐等)和分值等级与极性的情感词典; ②建立带分值的程度词典(非常、有点、稍微等); ③建立否定词字典 依存句法分析 去除修饰词分割句子 得到情感动词、否定词、程度词,算分公式:sum(程度词分值*情感词分值*否定词*极性); 扩充情感字典的思想: 对于新词 使用 word2vec 中skip-gram 找出 周围相近的词,用这些 词评分的平均值作为新词的平均值。 基于 依存句法分析 + 评分 的方法: https://blog.csdn.net/qq_16555103/article/details/100710191 ------- 第一章的第二小节 基于机器学习或深度学习的方法: 输入为语料中的句子; 输出为打情感的label和分数; 评级并标记label较为困难; 技术:情感分析是一个分类的模型 ① 基于模型: 深度学习: word2vec + LSTM / .... /依存句法分析(核心谓词 是 情感词,然后找出程度词 >>>>> 最后评分) 机器学习: doc2vec + 机器学习分类器(贝叶斯、KNN、svm、LR) 或者 tf-idf + 贝叶斯、svm .... ② 基于情感词典: eg:我十分喜欢旅游 label:正 score:45 (基本的手段:程度词 分数 * 情感词 分数) eg:我有点讨厌旅游 label:负 score:-10

     https://blog.csdn.net/qq_16555103/article/details/95625946    -------  NLP领域基本名词、算法(情感分析)

     https://blog.csdn.net/qq_16555103/article/details/100939224     -------- NLP常见项目领域(算法思路)【情感分析】

 

10、文本分类与聚类: 1)文本分类(有监督学习): (1)机器学习算法: ① tf-idf + 贝叶斯(需要用PCA降维并获取独立特征)、svm、LR、XGboost、KNN .... ② doc2vec + 机器学习分类器(贝叶斯、KNN、svm、LR) 为什么用 doc2vec?查看文章(Doc2vec小节): https://blog.csdn.net/qq_16555103/article/details/98748593 (2)深度学习算法: ① word2vec + LSTM / GRU + attention + softmax/CRF ② BERT、transformer、GPT 2)文本聚类(无监督学习): (1)机器学习算法: ① TF-IDF + KMeans 、 密度聚类 ----- 效果可能不好 ② Doc2vec + Kmeans 、密度聚类 为什么用Doc2vec?查看文章(Doc2vec小节): https://blog.csdn.net/qq_16555103/article/details/98748593

 

二、简单的问答系统算法构建结构 问答系统 QA: 四个模块: 1、闲聊 2、车票 3、天气 4、售后 第一步:先 对query 做意图识别

        意图识别大致有两种方式:① 规则模板解析(分词、词性标注、命名实体识别、句法分析、语义分析的前提下)  

                                                   ② 基于机器学习/深度学习做分类预测 

             https://blog.csdn.net/qq_16555103/article/details/100767984   -----------  意图识别

第二步:根据 query 的意图选取子模块算法

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3