我第一次建立关联图谱用的是R语言,通过写代码帮公安挖掘团伙犯罪,并用图形展示团伙之间的关联关系。如有需要请关注公众号的后续文章,会手把手教大家用R搭建关联图谱,做成app,让没有安装R的电脑通过你分享的网址链接看到罪犯的关联关系。
公司最近又有挖掘团伙犯罪的项目,这次想在关联关系的基础上利用模型算法寻找犯罪团伙。这一次选用的是基于java实现的开源图数据库neo4j和Python,搭建关联图谱。
本文向大家介绍neo4j的安装配置及用途,并教大家如何向neo4j导入数据,避免深坑。
文章目录
一、什么是neo4j?
neo4j是由java实现的开源非关系型图数据库,不同于Mysql关系型数据库。neo4j除了能像普通数据库存储一行一行的数据外,还可以很方便地存储数据之间的关系信息。例如,对于社交网络的用户数据库,除了要存储每个用户的姓名、性别、喜好等基本信息外,还需存储每个用户和哪个用户是情侣,和哪些用户是朋友等关系数据,这时neo4j这样的图数据库就可以派上用场啦!
通过下图,大家可以了解什么是图数据库以及什么是关系数据。
为了更加直观,本文选用了家有儿女中男女主人公夏东海和刘梅做为示例。在上图中,包含两个标签为“人”的数据节点,分别代表夏东海和刘梅两个人。这两个数据节点还包含姓名、住址、职业等属性信息,用于表示用户的基本信息,这类似于常规数据库中的两行。除此之外,两个数据节点之间还包含了两条关系数据。即夏东海娶了刘梅,刘梅和夏东海生活在一起。把这些数据存储在neo4j图数据库中,利用这些关系数据,可以方便地作出基于关系的查询。比如,刘梅的丈夫是谁?刘梅和谁生活在一起?
二、neo4j有哪些用途?
1 社交网络
根据用户的好友关系网给用户推荐新朋友。例如,QQ中推荐新朋友。如果两个人在QQ中不是朋友,但共同好友超过10个,系统发送消息给这两个人推荐对方。
2 智能推荐引擎
通过分析用户的历史数据为用户推荐产品。例如,淘宝中根据用户的购买记录、收藏记录、浏览记录给用户推荐喜好的产品。
3 知识图谱
根据知识点之间的关系建立知识图。例如,百度搜索关键词Python会展示相关词条,Python官网、python百度百科、Python入门教程等。
4 反欺诈
根据犯罪团伙之间的资金往来、通讯交往构建反欺诈网络。例如,罪犯A给罪犯B转账10万元,罪犯B给罪犯C转账50万元。现在警方通过线索已经确定了罪犯A的犯罪事实,通过构建账务往来关系网,可以找到犯罪团伙的其他犯罪分子。
5 网络、数据中心管理
用neo4j建立设备之间的关系,方便对整个系统进行管理。
三、安装neo4j
1 安装Java JDK
neo4j是基于Java的图形数据库,运行neo4j需要启动JVM进程,因此必须安装JAVA SE的JDK。可以从Oracle官方网站下载 Java SE JDK,也可以在“阿黎逸阳的代码”公众号中回复“JDK安装”直接获取。
2 下载neo4j安装文件
从neo4j官网下载最新版本的社区版,可免费使用neo4j。但是从官网下载neo4j,速度比蜗牛还慢,着急要用的我当时急得不行,只好到网上去找别人下载好的网盘链接。如需要,可以在公众号中回复“neo4j安装”直接获取。
3 解压neo4j安装文件
我想把neo4j安装到D盘,所以在D盘中建了一个neo4j文件夹。把下载好的neo4j压缩包放到该文件夹中,并解压到该文件夹,就安装好了neo4j(无需常见软件的安装步骤)。
4 创建系统环境变量
电脑右击—>属性—>高级系统设置—>环境变量—>新建系统变量—>在path中添加路径。
5 启动neo4j
在解压neo4j的文件夹按shift+右键—>打开cmd—>输入neo4j.bat console—>回车,即可启动neo4j。
6 使用neo4j
在浏览器中输入:http://localhost:7474/browser/,即可看到neo4j的启动界面。
四、导入数据
之前在向neo4j中导入数据时碰到了很多坑,折腾了很久。为了避免大家再次踩坑,现总结如下。
1 删除所有节点和关系
这一步不是必须的,只是为了数据清晰不混淆,一般在导入数据之前删除原来存的节点和关系。
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
2 把数据放入指定文件夹中
把数据放入D:\neo4j\neo4j-community-3.5.5\import文件夹中
3 从本地导入不带表头的数据
using periodic commit 10000 load csv from"file:/artist.csv"as line create (:test {id:line[0], name:line[1]})
4 从本地导入带表头的数据
using periodic commit 10000 load csv WITH HEADERS from"file:/artists_head.csv"as line CREATE (:Artist { name: line.Name, year: toInteger(line.Year)})
如需本文中的artist.csv文件实现上述语句,请在公众号中回复“neo4j中的artist”即可免费获取。
这一次想一起推送关于neo4j的几篇文章,大家久等啦,以后我会争取更快的更新频率。大家有好的想法可以写成文章,欢迎联系我发表,可以署上你的名字,并提供相应报酬。
你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
Python画好看的星空图(唯美的背景)
用Python中的py2neo库操作neo4j,搭建关联图谱
手把手教你用neo4j搭建简单关联图谱—基于家有儿女中的人物关
Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)