一、知识图谱简介
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 安装
下载完成后,直接解压,安装继续下一步就好,
现在开始配置变量:
右击我的电脑—属性—高级系统设置—高级—环境变量—新建
下一步:
Path变量添加
填入地址为: B:\JAVA
就是下图Bin的位置
双击确定,完成安装
NEO4J配置
下载:https://neo4j.com/download-center/
下载好后解压到自己想放的盘里,例如:B:\neo4j-community-4.2.2\
1.电脑-属性-高级系统设置-环境变量-系统变量(用户变量仅该用户可用)
2.新建变量
变量名:NEO4J_HOME
变量值:B:\neo4j-community-4.2.2
3.Path变量添加
双击Path,打开窗口,点击新建,添加:B:\neo4j-community-4.2.2\bin
4.使用命令行检验是否配置成功
Windows+R 打开命令提示符cmd,输入:neo4j.bat console
打开网址就可以访问了,首次进入密码为:neo4j,可修改密码。
进入后如下所示
4.5 Cypher查询语言
Neo4J的声明式图形查询语言,允许用户不必编写图形结构的遍历代码,就可以对图形数据进行高效的查询
五、Neo4J 实战
5.1 引言
5.2 创建节点
说明:
CREATE(n:Preson {name::‘John’}) RETURN n 创建一个人物
CREATE表示创建;
Person标识标签,代表节点(Note);
花括号{}代表节点属性},类似python的字典;
这条语句的含义就是创建一个标签为Person的节点,该节点具有一个name的属性,属性是Jhon
5.2 创建节点
6个人物节点创建成功
5.4 创建 出生地关系
可以看到,节点类型为Location,属性包括city和state。
如图 16 所示,共有6个人物节点、5个地区节点,Neo4J贴心地使用不用的颜色来表示不同类型的节点。
5.3 创朋友建关系
MATCH (a:Person {name:‘Liz’}),
(b:Person {name:‘Mike’})
MERGE (a)-[:FRIENDS]->(b)
说明:[]为关系,FRIEND关系为类型。
这样,图谱就已经建立好了
5.4 创建 出生地关系
知识图谱的数据已经插入完毕,可以开始做查询了
5.5 图数据库查询
-
查询下所有在Boston出生的人物
-
查询所有对外有关系的节点
-
查询所有有结婚关系的节点
-
查找某人的朋友的朋友
5.6 删除和修改
增加/修改节点的属性
这里,SET表示修改操作
删除节点的属性
删除属性操作主要通过REMOVE 3. 删除节点
删除节点操作是DELETE 4. 删除有关系的节点
这边显示无记录
六、通过 Python 操作 Neo4j
6.1 neo4j模块:执行CQL ( cypher ) 语句
6.2 py2neo模块:通过操作python变量,达到操作neo4j的目的
这个结果是啥,怎么这么鬼畜~
#七、通过csv文件批量导入图数据、
没看明白,需要重新看参考资料,由于在期末考试,这部分知识抽空补上。。。。。
总结:
-
一定要注意中英文切换,和一些符号,很容易弄错!
-
-
在对neo4j模块的下载一定要注意安装环境,因为按错了位置,运行的时候一直在报错;
-
py2neo模块也是一样,运行的时候一定要注意安装的位置环境;
-
``
g = Graph(“bolt://localhost:7687”, auth=(“neo4j”, “person-economy-answer-carlo-economy-7940”))
**原本是neo4j的正确才对,可是现在报错了,这个问题百度无果,准备上论坛问问**
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210112001014168.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2pqd2FuMTIz,size_16,color_FFFFFF,t_70)
这边登陆显示为neoj4
- 3
- 4
-