本文主要是介绍【知识图谱】基于电影数据构建演员、电影、类型的知识图谱,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
项目地址在我的github: movie_kg
效果:
过程:
0.依赖
mysql 8.0
navicat 11
jdk 1.8
neo4j 3.5
1.数据处理
[注意:也可以直接使用我处理过的数据,跳过此步]
数据来源:地址
但是数据有些问题,我这里做了修改,所以以当前目录下的数据为准
0.1.加载sql语句,进行数据插入
1.安装navicat,mysql
2.使用mysql 开启一个空的数据库,然后使用navicat链接,打开navicat的查询窗口,将当前目录下的kg_movie.sql
加载进来
这里具体过程可以参考:知识图谱构建——Mysql 和 neo4j 数据导入(一)
0.2.转化数据为xxx.csv
将当前表中的数据导出为actor.csv
、genre.csv
、movie.csv
、actor_to_movie.csv
、movie_to_genre.csv
四个文件,方便接下来neo4j加载。
你可以在数据.xlsx
中方便地查看数据情况,这里最关键的是如何从actor
和movie
中梳理构造出actor_to_movie
和movie_to_genre
连个关系,同时这两个关系分别都是多对多的关系
2.neo4j构造图数据
服务器/本地 安装jdk1.8 以及neo4j 3.5。
打开neo4j,然后在浏览器进行数据插入:
# 1.导入节点:actor、genre、movie 三个数据
load csv with headers from "file:///genre.csv" as line create(a:genre{genre_id:line.genre_id,genre_name:line.genre_name}):auto USING PERIODIC COMMIT 100
LOAD CSV FROM 'file:///actor.csv' AS line CREATE (a:Actor { actor_id: line[0], actor_bio: line[1], actor_chName: line[2], actor_foreName: line[3],actor_nationality: line[4], actor_constellation: line[5], actor_birthPlace: line[6], actor_birthDay: line[7], actor_repWorks: line[8], actor_achiem: line[9], actor_brokerage: line[10] }):auto USING PERIODIC COMMIT 100
LOAD CSV FROM 'file:///movie.csv' AS line CREATE (m:Movie { movie_id: line[0], movie_bio: line[1], movie_chName: line[2], movie_foreName: line[3], movie_prodTime: line[4], movie_prodCompany: line[5], movie_director: line[6], movie_screenwriter: line[7], movie_genre: line[8], movie_star: line[9], movie_length: line[10], movie_rekeaseTime: line[11], movie_language: line[12], movie_achiem: line[13] })# 2.导入关系:actor_to_movie、movie_to_genre
LOAD CSV FROM 'file:///actor_to_movie.csv' AS line MATCH (a:Actor), (m:Movie) WHERE a.actor_id = line[1] AND m.movie_id = line[2] CREATE (a) - [r:ACTED_IN] -> (m) RETURN r;LOAD CSV FROM 'file:///movie_to_genre.csv' AS line MATCH (m:Movie), (g:genre) WHERE m.movie_id = line[1] AND g.genre_id = line[2] CREATE (m) - [r:Belong_to] -> (g) RETURN r;# 3.查询
match p=()-[r:Belong_to]->(n:genre) where n.genre_name="动作" return p
这篇关于【知识图谱】基于电影数据构建演员、电影、类型的知识图谱的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!