Datawhale 知识图谱组队学习 之 Task 1 知识图谱介绍

Datawhale 知识图谱组队学习 之 Task 1 知识图谱介绍

知识图谱理论:

相关理论

知识图谱背景

早在 2010 年微软就开始构建知识图谱,包括 Satori 和 Probase;2012 年,Google 正式发布了 Google Knowledge Graph,现在规模已超 700 亿。目前微软和 Google 拥有全世界最大的通用知识图谱,Facebook 拥有全世界最大的社交知识图谱,而阿里巴巴和亚马逊则分别构建了商品知识图谱。

简介:

概念

从学术的角度,我们可以对知识图谱给一个这样的定义:“知识图谱本质上是语义网络(Semantic Network)的知识库”。

Schema

知识图谱另外一个很重要的概念是 Schema:

限定待加入知识图谱数据的格式;相当于某个领域内的数据模型,包含了该领域内有意义的概念类型以及这些类型的属性

这个概念十分关键,是核心部分。
Datawhale 知识图谱组队学习 之 Task 1 知识图谱介绍_第1张图片

价值

从图5中可以看出,知识图谱是人工智能很重要的一个分支, 人工智能的目标为了让机器具备像人一样理性思考及做事的能力 -> 在符号主义的引领下,知识工程(核心内容即建设专家系统)取得了突破性的进展 -> 在整个知识工程的分支下,知识表示是一个非常重要的任务 -> 而知识图谱又恰恰是知识表示的重要一环

个人认为,符号主义代表的人工智能不是核心解决思路,但一定很重要,他给机器提供了知识,这无疑十分·重要,但是这提供知识这个思路,本身是来自于 连接主义–仿生学的:
!因为人是依靠知识的!
同时,如何把知识融入模型十分关键!!!
Datawhale 知识图谱组队学习 之 Task 1 知识图谱介绍_第2张图片

如何建知识图谱

数据来源

这个特别重要:也是在把蛋糕做大的过程中很重要的一点。
知识图谱的构建是后续应用的基础,而且构建的前提是需要把数据从不同的数据源中抽取出来。对于垂直领域的知识图谱来说,它们的数据源主要来自两种渠道:

第一种:业务本身的数据。这部分数据通常包含在公司内的数据库表并以结构化的方式存储,一般只需要简单预处理即可以作为后续AI系统的输入;

第二种:网络上公开、抓取的数据。这些数据通常是以网页的形式存在所以是非结构化的数据,一般需要借助于自然语言处理等技术来提取出结构化信息。

难点

非结构化文本!!!

相关技术

在构建类似的图谱过程当中,主要涉及以下几个方面的自然语言处理技术:

  1. 实体命名识别(Name Entity Recognition)
  2. 关系抽取(Relation Extraction)
  3. 实体统一(Entity Resolution)
  4. 指代消解(Coreference Resolution)
  • 实体命名识别(Named Entity Recognition)
    实体命名识别(英语:Named Entity Recognition),简称NER
    目标:就是从文本里提取出实体并对每个实体做分类/打标签;
    举例说明:比如从上述文本里,我们可以提取出实体-“NYC”,并标记实体类型为 “Location”;我们也可以从中提取出“Virgil’s BBQ”,并标记实体类型为“Restarant”。
    这种过程称之为实体命名识别,这是一项相对比较成熟的技术,有一些现成的工具可以用来做这件事情。

  • 关系抽取(Relation Extraction)
    关系抽取(英语:Relation Extraction),简称 RE
    介绍:通过关系抽取技术,把实体间的关系从文本中提取出来;
    举例说明:比如实体“hotel”和“Hilton property”之间的关系为“in”;“hotel”和“Time Square”的关系为“near”等等。

Datawhale 知识图谱组队学习 之 Task 1 知识图谱介绍_第3张图片
还有两个小任务:

  • 实体统一(英语:Entity Resolution),简称 ER
    介绍:对于有些实体写法上不一样,但其实是指向同一个实体;
    举例说明:比如“NYC”和“New York”表面上是不同的字符串,但其实指的都是纽约这个城市,需要合并。
    价值:实体统一不仅可以减少实体的种类,也可以降低图谱的稀疏性(Sparsity)
  • 指代消解(Disambiguation)
    指代消解(英语:Disambiguation)
    介绍:文本中出现的“it”, “he”, “she”这些词到底指向哪个实体,比如在本文里两个被标记出来的“it”都指向“hotel”这个实体。

Datawhale 知识图谱组队学习 之 Task 1 知识图谱介绍_第4张图片

知识图谱动手构建:

NEO4J

知识图谱的存储

这个地方对小白不太友好:

RDF形式上表示为SPO三元组,有时候也称为一条语句(statement),知识图谱中我们也称其为一条知识,如下图。
主要是方便
Datawhale 知识图谱组队学习 之 Task 1 知识图谱介绍_第5张图片

Datawhale 知识图谱组队学习 之 Task 1 知识图谱介绍_第6张图片

Neo4j 和 Python 的py2neo

关于Neo4j: 使用了官网上的 sandbox 在线版。这样省去了大量的环境配置时间。
Sandbox

Cypher查询语言:对应于SQL在关系数据库中的程序语言。

实验演示:

所包含的三种基本的:实体–关系–实体

  • Person-Friends-PERSON
  • Person-Married-PERSON
  • Person-Born_in-Location

创建节点:人物节点和location节点
创建关系:人物间关系和出生地和人物的关系
这些关系还包含一部分属性
图数据库的查询:
删除和修改:

##通过python的py2neo来进行控制

  • neo4j模块:执行CQL ( cypher ) 语句
  • py2neo模块:通过操作python变量,达到操作neo4j的目的
  g = Graph(url+user+code)

通过csv文件批量导入图数据

csv分为两个nodes.csv和relations.csv,注意关系里的起始节点必须是在nodes.csv里能找到的

参考资料

  1. 干货 | 从零到一学习知识图谱的技术与应用
  2. 手把手教你快速入门知识图谱 - Neo4J教程
  3. python操作图数据库neo4j的两种方式
  4. Neo4j之导入数据
  5. schema 介绍
  6. 知识图谱Schema
  7. 美团大脑:知识图谱的建模方法及其应用
  8. 肖仰华. 知识图谱:概念与技术.北京:电子工业出版社, 2020.2-39.

你可能感兴趣的:(笔记,知识图谱,neo4j)