知识图谱应用
- 知识图谱 ≈ 结构化数据
- 典型应用:问答系统
知识图谱行业应用
- 通用知识图谱:Google Knowledge Graph
- 主要应用于面向互联网的搜索、推荐、问答等业务场景
- 强调广度,因而更多强调实体,很难生成完整的、全局性的本体层统一管理
- 行业知识图谱:面向特定领域的知识图谱
- 需要行业完备性、准确度,通常用于辅助各种复杂的分析应用或决策支持
- 有严格与丰富的数据模式,行业知识图谱中的实体通常属性较多且具有行业意义
- 通用知识图谱
- 面向通用领域
- 以常识性知识(百科知识)为主
- 强调知识的广度
- 使用者是普通用户
- 行业知识图谱
- 面向某一特定领域
- 基于行业数据构建
- 强调知识的深度
- 潜在使用者是行业人员
- 通用与行业融合
- 行业知识图谱是通用知识图谱的细化
知识图谱应用:问答系统
- 问答系统是下一代搜索引擎的基本形态
- 搜索模式的改变给问答技术提出了更高的要求
- 移动互联网需要更精准的答案
- 发展
- 基于模板的QA专家系统
- 基于信息检索的QA——需要对问题和答案的类型进行预设,只擅长事实性问题的回答
- 社区QA——用户问用户答
- 基于知识图谱的QA——利用信息知识资源进行问题理解和解答获取
- 分类(技术类型)
- IR-based QA——关键词匹配 + 信息抽取,浅层语义分析
- Community QA——依赖网民贡献,依赖于关键词检索技术
- KB-based QA——知识图谱
- 分类(问答形式)
- 一问一答
- 交互式问答
- 阅读理解
检索式问答系统
已有检索式问答方法
- 检索式问答:检索 + 信息抽取 + 重排序
- 信息抽取技术
- 实体识别
- 实体消歧(实体链接)
- 关系抽取
- 关系消歧(关系语义推断)
- 事件抽取
- 问答式检索评测
- 面向大规模文本库的开放域问答式检索
- 评测现状:
- 美国:TREC
- NIST、DARPA
- 日本:NTCIR
- 英语、日语、中文
- 欧洲:CLEF
- 欧洲语言、单语言、跨语言
- 美国:TREC
- TREC
- Factoid任务:测试系统对基于事实、有简短答案的提问的处理能力
- List 任务:要求系统列出满足条件的几个答案
- Definition 任务:要求系统给出某个概念、术语或现象的定义和解释
- Context 任务:测试系统对相关联的系列提问的处理能力,即对提问$ i 的 回 答 依 赖 于 对 提 问 的回答依赖于对提问 的回答依赖于对提问 j $的理解
- Passage 任务:对答案的要求偏低,不需要系统给出精确答案,只要给出包含答案的一个字符序列
- 评测指标:平均排序倒数 M R R = ∑ i 1 标 准 答 案 排 序 位 置 MRR = \sum_i \frac 1 {标准答案排序位置} MRR=∑i标准答案排序位置1、准确率、CWS
- 存在的问题
- 对于NLP技术提出更高的要求
- 无法预知问题和答案的类型
- 检索式问答方法
- 信息检索 + 模式匹配
- 信息检索 + 自然语言处理技术
IBM Watson
-
强大的硬件平台
-
强大的知识资源
-
系统架构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aav41eiq-1591034560104)(assets/image-20200525181337221.png)]
- 问题分析——问题分解——假设生成——内容获取——证据获取和检索——特殊问题处理——证据合并
-
问题
- 只限于简单的实体类问题
- 对于不能用实体或词语表示的提问(过程、提问),很少处理
- 不能很好处理复杂推理
阅读理解
-
检索式问答是一种多文档阅读理解
-
文本阅读理解:Document + Question -> Candidate Answers
-
阅读理解类型
- 基于抽取的问题——直接抽取文中的词汇
- 完型测试——对文中空缺内容填空
- 多项选择——多个选择
-
经典数据集:SQUaD
-
传统特征工程方法
- 事实检索 + 答案推断
- p ( a ∣ q , d ) = p ( s ∣ q , d ) p ( a ∣ q , s ) p(a | q, d) = p(s | q, d) p(a| q, s) p(a∣q,d)=p(s∣q,d)p(a∣q,s)
-
深度学习方法
-
p ( a ∣ d , q ) ∝ exp ( e ( α ) e ( d , q ) ) ) p(a | d, q) \propto \exp(e(\alpha) e(d, q))) p(a∣d,q)∝exp(e(α)e(d,q)))
-
CNN + LSTM
-
word embedding + context aware encoding + attention based interaction(学习 D D D和 Q Q Q的联合表示) + predict layer
-
Attention
- q2d、d2q
-
Context Encoding
- 学习文档和问题的各自表示
- 双向RNN
- 主题表示——Self Attention
-
预测层
- 抽取——序列标记
- 完型填空——分类(从原文中选一个词)
- 多项选择——匹配 / 排序
-
预训练语言模型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-20TH9Bm5-1591034560107)(assets/image-20200525211818740.png)]
- 将表示的三层融合为一层
- Q // D -> A
-
-
问题:仍然是基于相关性的计算
- 加入一点扰动样本,结果噪声很大影响
总结
- 往往是针对客观事实的问题回答
- 采用检索 + 抽取的问答模式
- 需要对于问题类型和答案类型预定义
- 阅读理解是检索式问答的一种特殊形式
- 基于 Deep Learning 的阅读理解模型目前成为主流方法
- 利用分布式语义表示 神经网络语义非线性组合解决问答和推理问题
- 本质上还是基于语义向量的相似度计算,并没有实际解决推理问题
- 需要更加精准且不限定类型的信息抽取技术
- 需要更加鲁棒且可解释的知识推理技术
社区问答系统
- 社区问答系统:指用户之间通过提出和回答问题的方式共享和积累知识,从而提供知识交流与信息服务的社会化系统
- 包含内容
- 用户通过自然语言问句方式表述信息需求
- 用户通过回答问题方式响应其他用户的信息需求
- 大量用户通过共同参与问答系统而形成了一个社区
- 主要任务
- 预处理
- 问题分类
- 作弊检测
- 与问答新提交问题相关的研究
- 相似问题检索
- 答案质量评估
- 专家用户推荐及最佳回答者推荐
- 问句的主客观判断
- 与用户体验相关的研究
- 用于满意度预测
- 潜在好友推荐
- 用户社区结构挖掘
- 热点话语检测
- 预处理
- 核心技术:文本语义相似度计算
相似问题检索
- 任务:问题检索指基于大规模用户产生的问答数据集提供的信息检索服务,即从数据集中找出与用户提问相似的问题,这些相似问题的答案可以作为用户提问问题的答案候选
- 核心:计算两个问题的相似度
- 挑战:问题一般较短,包含信息少,词汇鸿沟严重
- 主要方法
- 传统信息检索模型:VSM、BM25
- 语言模型
- 基于词的翻译模型
- 基于深度学习的模型
- 传统基于符号匹配的相似问句匹配方法
- 传统信息检索模型:VSM、BM25
- 语言模型
- 每个历史问答对对应一个统计语言模型
- 一个查询可以看作是由问答对的语言模型抽样产生的一个样本
- 可以根据每个问答对的语言模型抽样生成查询的概率来对问答对进行排序,概率值越大,该问答对就越满足要求
- Score ( q , D ) = ∏ w ∈ q ( 1 − λ ) P m l ( w ∣ D ) + λ P m l ( w ∣ C ) \operatorname{Score}(q, D) = \prod_{w \in q} (1 - \lambda) P_{ml} (w | D) + \lambda P_{ml} (w | C) Score(q,D)=∏w∈q(1−λ)Pml(w∣D)+λPml(w∣C),后项为整个文档集的平滑, C C C为问答对的集合
- 极大似然估计, P m l ( w ∣ D ) = # ( w , D ) ∣ D ∣ P_{ml}(w|D) = \frac {\#(w, D)}{|D|} Pml(w∣D)=∣D∣#(w,D), p m l ( w ∣ C ) = # ( w , C ) ∣ C ∣ p_{ml}(w|C) = \frac {\#(w, C)}{|C|} pml(w∣C)=∣C∣#(w,C)
- 基于词的翻译模型
- 解决词汇鸿沟问题
- 基本思想:如果查询和候选问答对中的两个词不匹配,可以利用统计翻译模型找到一些在语义上相关的词
- Score ( q , D ) = ∏ w ∈ q ( 1 − λ ) P t r ( w ∣ D ) + λ P m l ( w ∣ C ) \operatorname{Score}(q, D) = \prod_{w \in q} (1 - \lambda) P_{tr} (w | D) + \lambda P_{ml} (w | C) Score(q,D)=∏w∈q(1−λ)Ptr(w∣D)+λPml(w∣C)
- 翻译模型概率 P t r ( w ∣ D ) = ∑ t ∈ D P ( w ∣ t ) P m l ( t ∣ D ) P_{tr}(w|D) = \sum_{t \in D} P(w|t) P_{ml}(t|D) Ptr(w∣D)=∑t∈DP(w∣t)Pml(t∣D)
- 翻译模型的训练:平行语料中,问题和答案的词训练
- 基于深度学习的相似问句匹配方法
- 核心:利用 Deep Learning 对于文本的语义进行表示
- Word Level :Embedding
- Sentence Level
- Semantic Matching
- 语义相似度计算模型:DSSM
知识图谱应用:问答、对话
- 问句 ——> (语义解析) ——> 语义表示(符号、分布式) ——> (语义匹配、查询、推理) <——> 知识图谱
- 两类方法
- 语义解析:(符号化表示)问句转化成形式化查询语句,进行结构化查询
- 语义检索:(分布式表示)简单搜索得到候选答案,利用问句和候选答案的匹配程度(特征)抽取答案
基于符号语义解析的知识图谱问答
语义表示
- 语义解析:把自然语言句子映射成逻辑形式的表达式
- Lambda-演算逻辑表达式:用于函数定义、函数应用和递归的一种形式表示
- 常量(实体、数字、函数)
- 逻辑连接符(KaTeX parse error: Undefined control sequence: \and at position 1: \̲a̲n̲d̲、KaTeX parse error: Undefined control sequence: \or at position 1: \̲o̲r̲、 → \to →、 ¬ \neg ¬)
- 定量词
- 额外的量词
- Dependency-based Compositional Semantics:句法(关系) + 语义
- 获取答案:根据参数关系逐步过滤答案
- 自由变量表达式
- Lambda-演算逻辑表达式:用于函数定义、函数应用和递归的一种形式表示
- 问题
- 鲁棒性不好:如果语义解析错误,则获得不了正确答案
基于规则的语义解析方法
- 语义解析的基本过程
- 短语检测
- 资源映射——映射到实体
- 语义组合——生成对应的三元组
- 两个关键问题
- 获得短语到资源的映射
- 解决文本的歧义
- 组合范畴语法 CCG
- 词典 + 组合文法
- 词典
- 自然语言词语(短语)
- 词语所对应的句法范畴(NP、S\NP/NP——S左侧、右侧可接受一个NP)
- 词语所对应的知识库语义单元
- 组合文法
- Application operations
- 类似函数传参(前向或后向)
- 前向: B : g , A \ B : f ⇒ A : f ( g ) B:g,\ A \backslash B:f \Rightarrow A:f(g) B:g, A\B:f⇒A:f(g)
- 后向: A / B : f , B : g ⇒ A : f ( g ) A/B:f,\ B:g \Rightarrow A: f(g) A/B:f, B:g⇒A:f(g)
- Composition operations - B
- 类似于函数组合,多用于串联两个语义单元
- 向后串联: A / B : f , B / C : g ⇒ A / C : λ x . f ( g ( x ) ) A / B: f,\ B/C: g \Rightarrow A/C: \lambda x.f(g(x)) A/B:f, B/C:g⇒A/C:λx.f(g(x))
- 向前串联: B \ C : g , A \ B : f ⇒ A \ C : λ x . f ( g ( x ) ) B \backslash C:g,\ A\backslash B:f \Rightarrow A \backslash C: \lambda x.f(g(x)) B\C:g, A\B:f⇒A\C:λx.f(g(x))
- Type-raising operations - T
- Substitution operations - S
- Substitution operations - Φ
- Application operations
基于统计模型的语义解析方法
- 歧义问题
- 词典歧义:对于同一个字符串在同一句法条件下可以对应不同的语义
- 规则歧义:对于同一个句子利用不同的组合规则可以产生不同/相同的结果
- 概率化组合范畴语法 PCCG
- S S S:句子
- L L L:lambda表达式
- T T T:解析 L L L的过程(文法)
- θ \theta θ:模型参数
- f ( L , T , S ) f(L, T, S) f(L,T,S):解析的特征函数
- 一个句
S
S
S被解析为
L
L
L的概率(log-likelihood)为
- P ( L ∣ S ; θ ) = ∑ T P ( T , L ∣ S ; θ ) P(L | S; \theta) = \sum_T P(T, L | S; \theta) P(L∣S;θ)=∑TP(T,L∣S;θ)
- P ( L , T , S ; θ ˉ ) = exp ( f ˉ ( L , T , S ) θ ˉ ) ∑ L , T exp ( f ˉ ( L , T , S ) θ ˉ ) P(L, T, S; \bar \theta) = \frac {\exp(\bar f(L, T, S) \bar \theta)}{\sum_{L, T} \exp(\bar f(L, T, S) \bar \theta)} P(L,T,S;θˉ)=∑L,Texp(fˉ(L,T,S)θˉ)exp(fˉ(L,T,S)θˉ)
- 学习:训练集合S-L对
- 给定句子 S S S,GT的 L L L的对应概率是最大的
- 词典学习
- S-L对 -> 语义单元词典
- GENLEX:依据S-L对学习词典信息
- W ( S ) W(S) W(S)与模板生成的 C ( L ) C(L) C(L)任意组合,构成初始词典
- EM算法进行词典过滤(由规则生成词典,由词典训练Parser并学习规则权重,由权重过滤词典)
- 大规模知识库学习?
- 无法获得逻辑表达式标注
- 利用问答的答案部分作为监督信息,使用Q-A对进行训练(弱监督学习)
基于神经网络的语义解析方法
- 问题 -> 规则表达式:Seq2Seq
- 基于序列学习的逻辑表达式生成
- 将问句和答案的逻辑表达式看作两个序列
- 使用Seq2Seq对其进行建模
- Seq2Tree
- 答案的逻辑表达式具有层次结构
- 输出为层次树
- 自顶向下逐层生成,直至产生叶子节点
- 用特殊符号
<n>
来改进解码端<n>
表示逻辑表达式的非终结符- 每个LSTM输出的符号位于同一层次,遇到
<n>
则输出下一层 - Parent-feeding: 把父节点的表示与每个输入拼接,用来指导下一层LSTM的解码
- 训练
- 最小化问题-答案的NLL损失: min − ∑ ( q , a ) ∈ D log p ( a ∣ q ) \min - \sum_{(q, a) \in D} \log p(a|q) min−∑(q,a)∈Dlogp(a∣q)
- 对于树上较低层次的符号,其概率可分解为父节点输出
<n>
的概率与自身概率的乘积
基于语义检索的知识图谱问答
语义匹配
- 根据问题,找出对应内容在知识图谱中的位置
基于语义图的知识图谱问答
- 语义图可以看做是知识图谱的一个子图
- 将问句转换为与知识图谱有类似结构的语义图
- 问答过程:子图匹配
- 关键问题:语义图构建
- 分布构建法 STAGG
- 链接主题实体
- 识别核心推理链
- 遇到CVT节点多拓展一步
- 关系发现:Character CNN,将单词打散,获得语义表示,可以很好的应对OOV
- 增加约束限制
- 排序
- 使用对数线性模型产生语义图的分值
- 主要特征
- 主题实体链接分数
- 关系匹配分数
- 约束关键词和实体匹配分数
- 特点
- 高召回率
- 不需要词典,不受限于词典的覆盖度
- 利用神经网络模型进行关系判别,能处理模糊匹配的情况,解决OOV问题
- 基于神经网络的语义图构建法 Seq2Action
- 对生成过程(动作序列)而非图本身进行建模
- 动作类型
- Add Variable Node
- Add Entity Node
- Add Type Node
- Add Edge
- Operation Action
- Augment Action(一定约束下的节点类型推定)
- 使用含注意力机制的Seq2Seq模型
- 语义和结构约束:在解码端加入约束,对于不合法的动作进行过滤
- 结构约束(参数个数等)
- 语义约束(参数的类型限制等)
- 训练
- 最大似然方式优化
- 需要将逻辑表达式转化为动作序列——DFS遍历结果
- Pros
- 可解释
- Cons
- 符号语义鸿沟
基于端到端模型的知识图谱问答
- 向量之间的语义相似度进行匹配
- 关键问题
- 问句表示如何学习
- 知识图谱中的实体、关系如何学习(Trans-E)
- 如何计算语义匹配
- 基本步骤
- 候选生成
- 利用实体链接找到主实体
- 知识库中主实体周围的实体均为候选
- 候选排序
- 候选生成
- 学习模型:计算问句与候选之间的语义相似度
- 问句 f ( q i ) = ∑ w k ∈ q i E ( w k ) f(q_i) = \sum_{w_k \in q_i} E(w_k) f(qi)=∑wk∈qiE(wk)
- 子图 g ( t i ) = ∑ e k ∈ t i E ( e k ) g(t_i) = \sum_{e_k \in t_i} E(e_k) g(ti)=∑ek∈tiE(ek)
- 目标 L = 0.1 − S ( f ( q ) , g ( t ) ) + S ( f ( q ) , g ( t ′ ) ) L = 0.1 - S(f(q), g(t)) + S(f(q), g(t^\prime)) L=0.1−S(f(q),g(t))+S(f(q),g(t′))
- 相似度 S ( f ( q ) , g ( t ) ) = f ( q ) ⊤ M g ( t ) S(f(q), g(t)) = f(q)^\top M g(t) S(f(q),g(t))=f(q)⊤Mg(t)
- 考虑多维度的相似度
- 从多个角度计算问句和知识的语义匹配
- S ( q , a ) = ∑ e i ∈ { e e , e r , e t , e c } β e i S ( q , e i ) S(q, a) = \sum_{e_i \in \{e_e, e_r, e_t, e_c\}} \beta_{e_i} S(q, e_i) S(q,a)=∑ei∈{ee,er,et,ec}βeiS(q,ei)
- 推理路径、实体类型、实体名称、实体上下文……
- 问句表示:关注候选答案不同的维度,问句的表示应该有所不同
- 基于多维度CNN模型的端到端知识图谱问答
- 依据问答特点,考虑答案不同维度的信息
- S ( q , a ) = f p a t h ( q ) ⊤ g p a t h ( a ) + f c o n t e x t ( q ) ⊤ g c o n t e x t ( a ) + f t y p e ( q ) ⊤ g t y p e ( a ) S(q, a) = f_{path}(q)^\top g_{path}(a) + f_{context}(q)^\top g_{context}(a) + f_{type}(q)^\top g_{type}(a) S(q,a)=fpath(q)⊤gpath(a)+fcontext(q)⊤gcontext(a)+ftype(q)⊤gtype(a)
- 不同角度,不同的卷积路径
- 基于注意力机制的知识图谱问答方法
- 实体、关系(路径)、类型、上下文
- 双向LSTM + 四个维度的注意力机制
- A-Q注意力,不同维度产生对问句隐式内容的影响
- Q-A注意力,由隐式表示确定各维度语义相似度,再由问句对各维度注意力加权
- OOV问题(知识图谱中未被训练问句涉及的部分)
- 融入全局信息:预训练知识库Embeddings
- 利用Trans-E得到知识嵌入表示
- 融入全局信息:预训练知识库Embeddings
- 联合学习
- 问答系统 + 知识图谱表示学习
- Pros
- 可大规模计算、易于开发
- Cons
- 只能解决单关系类型的问题
- 难以解释
基于知识图谱的对话聊天系统
概述
- 基本架构
- 语音识别
- 自然语言理解
- 对话管理
- 自然语言生成
- 语音合成
- 发起任务分类
- 系统主导-客服
- 用户主导-QA
- 混合模式-聊天机器人
基于任务框架知识的对话系统
- 基于框架的对话管理
- 用户可以一次回答多个系统问题
- 问答过程就是一个槽-值填充的过程
融合知识的回复生成
- 回复生成
- 根据当前上下文,自动生成回复
- 不限定特定领域,不限定具体任务
- 基于检索的回复生成方法:预定义一个问答库,当需要作出回复时,依靠排序的方法从候选问答库中选择一个最合适的
- Pros:预定义的回复,没有显著的语法错误
- Cons
- 所有的回复都是预定义的,不灵活
- 融合对话的背景知识(如之前对话涉及到的实体)
- 基于生成的对话方法:不依赖于预定义的回答库,重新开始生成新的回复
- 生成式的模型依赖于机器翻译的技术
- Pros:更加类人,灵活产生回复
- Cons:需要大量训练数据;容易产生语法错误的句子
- 回复需要知识的支撑
- 生成的答案需要包含知识,需要与知识库进行交互