一、知识图谱简介

1.1 引言

知识图谱用于机器聊天,大数据风控,医疗和证券投资等等,越来越多的领域在应用知识图谱

1.2 什么是知识图谱呢?

知识图谱可以理解为一种关系图,就像家族网络一般互相链接延展,抽象上说:“知识图谱就是语义网络的知识库”

1.2.1 什么是图(Graph)呢?

**图由节点(note)和边(edge)构成,如果你是理工科毕业,可以理解为电路中的节点和边:

Note(节点)表示:人,地名,概念,药物,公司等等。
                                边(edge)表示:不同之间实体间的相关联系:

1.2.2 什么是 Schema 呢?

Schema:即知识图谱数据的格式;相当于某个领域内的数据模型,包含了该领域内的重要属性(列如:概念,类型),其主要作用为了规范结构化数据表达,即一条数据必须满足Schema预定好的实体对象及其类型,才能被添加到知识图谱中。

**DataType**限定了知识图谱**节点值**的类型为文本、日期、数字(float浮点型与int整型)
                       **Thing**限定了**节点**的类型及其属性

1.3 知识图谱的价值在哪呢?

  • 可以寻找漏洞,比如金融风控等
  • 增加关系的白哦大能力
  • 向人类一样去做分析
  • 知识学习和高速反馈

二、怎么构建知识图谱呢?

2.1 知识图谱的数据来源于哪里?

数据来源于不同的数据源,并从其中抽取 举个列子:

1.从数据库表并以结构化的方式存储。通过系统自动录入
2.从网络中抓取数据(这些数据通常是以王爷的形式存在是非结构化的数据,需要NLP自然语言的处理)

2.2 信息抽取的难点在哪里?

信息抽取的难点在于处理非结构化数据
是一种不规则和不完整的的数据结构,没有预定义数据模型,比如办公文档,文本,图片等等。

2.3 构建知识图谱所涉及的技术?

  • 实体命名识别(Name Entity Recognition)
  • 关系抽取(Relation Extraction)
  • 实体统一(Entity Resolution)
  • 指代消解(Coreference Resolution)

2.4、知识图谱简单的具体构建技术展示?

2.4.1 实体命名识别(Named Entity Recognition)

实体命名识别(英语:Named Entity Recognition),简称NER

2.4.2 关系抽取(Relation Extraction)

关系抽取(英语:Relation Extraction),简称 RE
比如实体“hospital”和“ambulance”之间的关系为“in”;“hospital”和“roadside”的关系为“near”等等。

2.4.3 实体统一(Entity Resolution)

实体统一(英语:Entity Resolution),简称 ER
比如“BS”和“England”表面上是不同的字符串,但其实指的都是英国这个国家,需要合并
实体统一不仅可以减少实体的种类,也可以降低图谱的稀疏性

2.4.4 指代消解(Disambiguation)

文本中出现的“it”, “he”, “she”这些词到底指向哪个实体,比如在本文里两个被标记出来的“it”都指向“hospitall”这个实体

三、知识图谱的存储

四、Neo4J 介绍与安装
4.1 引言

4.2 Neo4J 下载

一、JDK安装
下载:https://www.oracle.com/java/technologies/javase-downloads.html

4.3 Neo4J 安装

知识图谱schema设计 知识图谱 schema_知识图谱schema设计


下载完成后,直接解压,安装继续下一步就好,

知识图谱schema设计 知识图谱 schema_知识图谱schema设计_02


现在开始配置变量:

右击我的电脑—属性—高级系统设置—高级—环境变量—新建

知识图谱schema设计 知识图谱 schema_删除节点_03


知识图谱schema设计 知识图谱 schema_删除节点_04


知识图谱schema设计 知识图谱 schema_数据_05


知识图谱schema设计 知识图谱 schema_删除节点_06


下一步:

Path变量添加

知识图谱schema设计 知识图谱 schema_数据_07


填入地址为: B:\JAVA

就是下图Bin的位置

知识图谱schema设计 知识图谱 schema_删除节点_08


双击确定,完成安装

NEO4J配置

下载:https://neo4j.com/download-center/
下载好后解压到自己想放的盘里,例如:B:\neo4j-community-4.2.2\

1.电脑-属性-高级系统设置-环境变量-系统变量(用户变量仅该用户可用)

2.新建变量

变量名:NEO4J_HOME

变量值:B:\neo4j-community-4.2.2

知识图谱schema设计 知识图谱 schema_结构化_09

3.Path变量添加

双击Path,打开窗口,点击新建,添加:B:\neo4j-community-4.2.2\bin

知识图谱schema设计 知识图谱 schema_知识图谱schema设计_10


4.使用命令行检验是否配置成功

Windows+R 打开命令提示符cmd,输入:neo4j.bat console

知识图谱schema设计 知识图谱 schema_结构化_11

知识图谱schema设计 知识图谱 schema_删除节点_12


打开网址就可以访问了,首次进入密码为:neo4j,可修改密码。

知识图谱schema设计 知识图谱 schema_数据_13


进入后如下所示

知识图谱schema设计 知识图谱 schema_删除节点_14

4.5 Cypher查询语言

Neo4J的声明式图形查询语言,允许用户不必编写图形结构的遍历代码,就可以对图形数据进行高效的查询

五、Neo4J 实战

5.1 引言

5.2 创建节点

知识图谱schema设计 知识图谱 schema_删除节点_15


说明:

CREATE(n:Preson {name::‘John’}) RETURN n 创建一个人物

CREATE表示创建;
  Person标识标签,代表节点(Note);
  花括号{}代表节点属性},类似python的字典;
  这条语句的含义就是创建一个标签为Person的节点,该节点具有一个name的属性,属性是Jhon

5.2 创建节点

知识图谱schema设计 知识图谱 schema_删除节点_16


知识图谱schema设计 知识图谱 schema_结构化_17


6个人物节点创建成功

知识图谱schema设计 知识图谱 schema_知识图谱schema设计_18

5.4 创建 出生地关系

知识图谱schema设计 知识图谱 schema_数据_19


可以看到,节点类型为Location,属性包括city和state。

如图 16 所示,共有6个人物节点、5个地区节点,Neo4J贴心地使用不用的颜色来表示不同类型的节点。

5.3 创朋友建关系

知识图谱schema设计 知识图谱 schema_数据_20


MATCH (a:Person {name:‘Liz’}),

(b:Person {name:‘Mike’})

MERGE (a)-[:FRIENDS]->(b)

说明:[]为关系,FRIEND关系为类型。

知识图谱schema设计 知识图谱 schema_结构化_21


这样,图谱就已经建立好了

5.4 创建 出生地关系

知识图谱schema设计 知识图谱 schema_数据_22


知识图谱的数据已经插入完毕,可以开始做查询了

5.5 图数据库查询

  1. 查询下所有在Boston出生的人物
  2. 知识图谱schema设计 知识图谱 schema_结构化_23

  3. 查询所有对外有关系的节点
  4. 知识图谱schema设计 知识图谱 schema_删除节点_24

  5. 查询所有有结婚关系的节点
  6. 知识图谱schema设计 知识图谱 schema_结构化_25

  7. 查找某人的朋友的朋友
  8. 知识图谱schema设计 知识图谱 schema_结构化_26

5.6 删除和修改

增加/修改节点的属性

这里,SET表示修改操作

知识图谱schema设计 知识图谱 schema_数据_27


删除节点的属性

知识图谱schema设计 知识图谱 schema_删除节点_28


删除属性操作主要通过REMOVE 3. 删除节点

知识图谱schema设计 知识图谱 schema_知识图谱schema设计_29


删除节点操作是DELETE 4. 删除有关系的节点

知识图谱schema设计 知识图谱 schema_数据_30


这边显示无记录

六、通过 Python 操作 Neo4j

6.1 neo4j模块:执行CQL ( cypher ) 语句

知识图谱schema设计 知识图谱 schema_知识图谱schema设计_31

6.2 py2neo模块:通过操作python变量,达到操作neo4j的目的

知识图谱schema设计 知识图谱 schema_知识图谱schema设计_32


这个结果是啥,怎么这么鬼畜~

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

没看明白,需要重新看参考资料,由于在期末考试,这部分知识抽空补上。。。。

总结:

  • 一定要注意中英文切换,和一些符号,很容易弄错!
  • 在对neo4j模块的下载一定要注意安装环境,因为按错了位置,运行的时候一直在报错;
  • py2neo模块也是一样,运行的时候一定要注意安装的位置环境;
  • ``
    g = Graph(“bolt://localhost:7687”, auth=(“neo4j”, “person-economy-answer-carlo-economy-7940”))
**原本是neo4j的正确才对,可是现在报错了,这个问题百度无果,准备上论坛问问**
![在这里插入图片描述]()
这边登陆显示为neoj4
 - 3
 - 4
 -