首先我们需要考虑的是目前的搜索存在的问题。
当我们打开一个搜索引擎的时候,目前其实是想得到答案。然而,现在的互联网是一个基于HTML的网页结构以及相互直接通过URL相互链接。这种链接中有太多的无用信息,在其中寻找所需的信息往往是一个费时费力的过程。基于知识图谱的问答或搜索系统,可以从一定程度上解决这个问题。
KG的本质
- Web角度:像建立文本之间的超链接一样建立数据之间的语义链接,并支持语义搜索
- NLP视角:怎样从文本中抽取语义和结构化数据
- KR视角:怎样利用计算机符号来表示和处理知识
- AI视角:怎样利用知识库来辅助理解人的语言
- DB视角:用图的方式去存储知识
传统KE的问题
传统知识工程在规则明确、边界清晰、应用封闭的应用场景取得了巨大成功。缺点是体系是自上而下的:严重依赖专家和人的干预 。
解决方式:大规模自动知识获取 。基于大数据、ML,充分利用现代计算机的强大算力,从大量数据中自动进行信息挖掘。
这种数据驱动的知识获取是自下而上的,以维基百科页面内容为例:
graph LR A[Wikipedia] -->B(预处理器
schema定义
训练数据构造) B --> C{是否分类} C -->|未分类| D[分类器
文本,句法分类] C -->|已分类| E[抽取器
CRFmodel] D --> E E --> F[infobox]
以其为基础建立的数据库有:YAGO、 CN-DBpedia(以后仔细学习下API)等
知识图谱富含实体、概念(is)、属性(has)、关系等信息。以RDF或图的形式存储
领域知识图谱的三个问题:
需要哪些业务知识? ——分析实际应用需求
已有知识如何用最好的方式在计算机中存储?——建立从数据到知识库中实体、概念、关系的映射
如何基于问题寻求答案?—— 利用知识库中实体、概念、 关系解释现象的过程
知识表示
怎样用计算机符号来表示人脑知识,及如何用符号运算进行推理
基于数理逻辑的知识表示
现在主流的是RDF:
- RDF三元组语义模型
- RDF图:有向标记图——存整图(多元关系)
- RDFS: 更加细分
通过OWL(本体论)对RDF模式进行拓展,能表示更复杂的类和属性
基于向量空间学习的分布式知识表示
在保留语义的同时,将KG中的实体和关系映射到连续的稠密和低维向量空间。
KG-Emdedding: 要用到张量分解、神经网络、距离模型等知识
知识抽取
- 文本预处理
- 分词,词性标注,语法解析,依存分析
- 命名实体识别,实体链接
- 关系抽取,事件抽取
抽取方法
- 知识工程: 用正则表达式、模板匹配、规则约束——人工干预较多
- 基于本体的抽取:对应KR中的图、Embedding—— 主要是为了后续知识推理
- 基于模型的抽取:模型有SVM/Logistic/CRF/LSTM 等,训练有有监督学习、无监督聚类、远程监督——自学习
知识存储
用关系型数据库存抽取完的三元组数据,然后导入到图数据库中是主流做法,不做深入对比。
知识问答
问句 –> 语义解析 –> 问题语义表示
语义表示方法:
- 基于符号
- 基于问题模板
- 基于子图
- 基于分布式
知识推理
有些问题并不是一步就可以获得答案的,需要进行多步推理才能知道。
按解决方法分类:
- 基于描述逻辑:本体推理
- 基于统计规则挖掘
- 基于路径排序学习方法(PRA)
- 基于关联规则挖掘犯法(AMIE)
- 基于表示学习与神经网络: 将实体和关系都表示为向量,用向量计算代替图遍历