Bootstrap

知识图谱-Neo4j构建你的第一个知识图谱

知识图谱-Neo4j的下载安装----参考

目标:根据已有数据集,构建一个用户-商品的知识图谱
在这里插入图片描述

1.寻找数据

构建知识图谱时首先需要获取数据。可以自己在网上爬取数据,也可以用现有的数据集
本文使用的是Women’s E-Commerce Clothing Reviews------>原始数据下载

数据集属性对应如下:
在这里插入图片描述
数据集包括23486行和10个特征向量。分别对应

服装ID:整数分类变量,指的是要查看的特定作品。
年龄:评论者年龄的正整数变量。
标题:评论标题的字符串变量。
评论文本:评论正文的字符串变量。
评分:客户授予的产品的评分,从1到5。
推荐的IND:1表示客户推荐,0表示客户不推荐。
积极的反馈计数:发现该评论为积极评论的客户数量。
部门名称:产品高级部门的分类名称。
部门名称:产品部门名称的分类名称。
类名称:产品类名称的分类名称。

2.节点分析

每一条评论代表一条购买记录,这里假设每条记录对应一个消费者,即一个消费者购买一件衣服,一件衣服可以被多个用户购买。在实际情况中肯定是多对多的关系,这里只做知识图谱的构建

用户购买服装,所以需要两个节点,<消费者> <衣服>,数据中含有评论,评分,是否推荐等含关联的属性,这里在加一个 <购买行为> 的节点,讲数据集分为三个节点数据集。如下。
<消费者 cus.csv>
label为节点标签
在这里插入图片描述
<衣服 clo.csv>

在这里插入图片描述
<购买行为 buy.csv>
在这里插入图片描述

3.知识图谱的构建
3.1 安装并打开Neo4j

可以参考知识图谱-Neo4j的下载安装

3.2 导入节点

把文件放入Neo4j安装目录下的import目录下F:\neo4j-community-3.5.16\import
1.导入Customer节点
输入

LOAD CSV FROM "file:///cus.csv" AS line
create (c:Customer{ID:line[0],Age:line[1],Review_Text:line[2],Recommended_IND:line[3],Positive_Feedback_Count:line[4]})

在这里插入图片描述
可以输入下面的CQL查看导入的节点

MATCH (n:Customer) RETURN n LIMIT 25

在这里插入图片描述

可以根据自己的需求更改节点显示的属性,颜色,还有大小

2.导入Cloth节点

LOAD CSV FROM "file:///clo.csv" AS line
create (c:Cloth{Clothing_ID:line[0],Title:line[1],Division_Name:line[2],Department_Name:line[3],Class_Name:line[4]})

MATCH (n:Cloth) RETURN n LIMIT 25
MATCH (n:Cloth) RETURN n LIMIT 25

3.导入Shopping节点

备注:如果不想导入shopping节点,直接建立用户和服装的购买关系,需要在最前面重新建立两个索引
CREATE INDEX ON :Customer(ID);
CREATE INDEX ON :Cloth(Clothing_ID);
然后在导入buy.csv之后,
LOAD CSV WITH HEADERS FROM “file:/buy.csv” AS row
MATCH (customer:Customer{ID: row.ID})
MATCH (Clothing_ID:Cloth {Clothing_ID: row.Clothing_ID})
MERGE (customer)-[:点击]->(cloth)
就可以直接生成用户和服装的购买关系,中间没有多余的shopping节点

LOAD CSV WITH HEADERS FROM "file:///buy.csv" AS row
CREATE (n:Shopping)
SET n = row
MATCH (n:Shopping) RETURN n LIMIT 25

在这里插入图片描述

3.3 导入节点之间的关系

节点Shopping和节点Cloth建立关系

MATCH (s:Shopping),(c:Cloth)
WHERE c.Clothing_ID = s.Clothing_ID
CREATE (s)-[:buy]->(c)

在这里插入图片描述

节点Shopping和节点Customer建立关系

MATCH (s:Shopping),(c:Customer)
WHERE c.ID = s.ID
CREATE (c)-[:buy]->(s)

在这里插入图片描述

3.查看并操作知识图谱
MATCH p=()-->()-->() RETURN p LIMIT 500

如果后面的节点数设置太大,浏览器会崩溃,看情况设置,查看图谱数量

这里因为在数据处理方面我设置了一个客户只够买一件服装,所以在图谱中显示的是很分离的,很多实际过程都是多对多的关系,需要设计好知识的节点和关系,这样才可以构建更好的知识图谱

Neo4j本身具有查询功能,可以用CQL语句进行相应的操作了
在这里插入图片描述

;