知识图谱入坑

比较大的开放知识图谱:

中文百科类:

知识图谱的核心作用:

  • 确定了实体。有益于多个方面:分词会更准确,本体更加明确(消除了语言多样性带来的干扰)
  • 找出实体间的关系。这种对关系的明确定义是非常有意义的,因为在没有知识图谱的检索中通常靠字面的相似读进行检索(顶多加个近义词啥的),词和词之间的关系模型并不知道。句法分析也存在很多局限,一个是准确率提不上,二是很多时候人们的输入根本不是一句连贯的话;
  • 融合不同文档中的知识。我们在建知识图谱的时候很少就揪着一个文档建图谱,一个文档里对词语的描述可能不全,多了就全了,丰富了

所以知识图谱相较于普通的检索,重点就是知识图谱有了结构化的、明确的知识。

知识图谱要能精准回答也能做推理

本体的构建过程(手动):

  • 确定本体的领域和范围
  • 考虑重用现有本体
  • 列出本体中的重要术语
  • 定义类和类的继承:
    • 确保类的继承正确;
    • 分析继承结构中的兄弟类;
    • 引入新类的时机
    • 新类或属性值的取舍;
    • 实例或类的取舍;
    • 范围限制;
    • 不相交的子类
  • 定义属性和关系。属性是:一个类的内在属性,关系可以看作一个类的外在属性。
    • 逆属性/关系
    • 缺省属性值
  • 定义属性的限制。属性的类型、值域
  • 创建实例

本体的构建过程(自动):

方法一:基于规则的本体学习

  • 人工写模板规则抽取本体

优点:利用专家知识写抽取模板;

缺点:规则不足,规则冲突,不好扩展

方法二:基于机器学习的本体学习

  • 将本体学习转化为机器学习中的分类或序列标注问题
  • 选取特征和学习模型,进行训练,学习得到本体

优点:效率高,自动化

缺点:学习模型通用性和学习效果存在矛盾

Protege是常用的本体管理工具

从关系型数据库中抽取知识,对应关系

  • 表->类
  • 列->属性
  • 行->实例
  • 单元->属性值
  • 外键->关系

抽取标准:

  • Direct Mapping
  • R2RML映射语言:输入是数据库表、视图、SQL查询;输出:三元组

抽取工具

  • D2R
  • Virtuoso
  • Oracle SW
  • Morph

关系抽取

中文公开语料库:FewRel。

  • FewRel 网站地址:https://thunlp.github.io/fewrel.html
  • 论文地址:http://aclweb.org/anthology/D18-1514

属性图和RDF图

定义:RDF图中节点没有属性,例如:小明的年龄18岁,小明是一个节点,18岁是一个节点,两个节点之间的关系是年龄(只是示意);属性图中节点拥有属性,同样的例子里,小明是个节点,18岁是小明节点的年龄属性。

相较于RDF,属性图的可扩展性不强,例如我要在知识图谱里添加“18岁以下是未成年”,那么在属性图中,18岁只是个属性,跟节点无法关联起来。但在RDF图中,可以灵活地添加,因为在RDF图中18岁是一个节点,可以轻松地跟“未成年”连起来。另外,记录neo4j(用的属性图)中的一个坑:如果两个节点名称一样,但是属性不一样,例如节点A:小明18岁,就读于XX高中,节点B小明18岁,请注意节点A和节点B是两个不同的小明。如果你认为节点A有三个属性(name,age,school),节点B有两个属性(name,age),那么在neo4j中,你大概率要踩雷:如果你检索MATCH (n:{name:"小明",age:"18岁"}) RETURN n,那么会返回给你两个节点,惊不惊喜,意不意外。我的解决方法是给节点B也加个属性school,赋值为空。所以,如果你想要在属性图中给某一个实体加个属性的话,那么你还需要更新一下整个图谱里该类型的所有实体。当然,这只是一个小问题,因为如果出现这种情况,只能说明schema没有设计好。

从形式上思考,RDF可以把知识打得更碎,自然更加灵活,属性图则是以较小的单元将知识组合起来。没有哪个好哪个不好,只有哪个语言适合哪个场景。

查询语言

  • SPARQL:RDF图数据的标准查询语言。Apache Jena
  • Cypher:属性图查询语言。neo4j里面用的查询语言,支持嵌套查询、条件查询,可视化界面好看。缺点是查询能力有限(满足日常查询功能是没问题的),有一个开源的openCypher是针对Cypher的改进。支持的其他数据库包括SAP HANA Graph、Redis Graph、AgensGraph、Memgraph
  • Gremlin:属性图查询语言,应用较少,主要是因为如果要用的话,就需要对图非常了解,并且它的执行是从图中某个节点开始遍历图。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值