简单的知识图谱,neo4j+python
因为研究方向是知识图谱,就有兴致想要构建一个简单的知识图谱,就在网上查找了一下,参考了neo4j搭建简单的金融知识图谱的思想,就着手从零开始构建。
1、首先就要考虑数据的获得,因为之前没有接触过爬虫之类,参考这篇,就仅仅采用简单的requests+正则表达式,爬取起点中文网的全部作品中的作者,作者ID,作品,作品ID,标签,标签ID,子标签以及作品完成与否这些数据,在这里参考了网上众多的爬虫代码,在这里,后期可以进一步扩展,点进作者页面再进行爬取更多的信息,在此,爬虫的知识太少,只会爬类似页面的信息,比如,1到20页的信息,通常在网址上有不同,很可能是数字规律性的改变,但是,对于起点中文网的作者网址,唯一找到的规律就仅仅只是后面是作者的ID,至于两者怎么结合,怎么爬取,有可能技术不精,还没弄出来,以后可在此增加。
2、获得了这些csv,又出现了问题,就是打开这些csv,竟然乱码了,在网上查找了一番,发现了一个有效的方法,先建一个excel,然后,点击数据,点击自文本,然后,再把想要转化的文本导入,文件原始格式改为简体中文,后面直接就点下一步,再打开csv,就不会乱码了,解决了乱码下一步就是导入neo4j。

这里的au_bo就是作者与小说的关系,其中就包含:START_ID :END_ID relation :TYPE,作者ID和小说ID,两者之间的关系,TYPE可以和关系一样,毕竟只是一个标记。
author就是作者信息,包含index:ID name :LABEL,作者ID和作者名字,标签,在这里就很遗憾,没有能够多弄几个数据,以后可以增加。
bo_co这一个还没有实验。
book就是小说信息,包含小说ID和小说名字,标签。
book_pro就是小说的标签,包含小说ID和标签ID,以及两者关系,TYPE,在这里,后来想了想感觉可以不用关系模式,可以合并在book中,后期再试试。
pro1是大标签,大标签ID和大标签的名字,LABEL,比如:1,仙侠之类的
pro2是小标签,小标签ID和小标签的名字,LABEL,比如仙侠中包含了很多小的标签
t1_t2就是大标签与小标签的关系,概念属于。
3、导入neo4j,参考的是这里
首先,为了不写import路径,就选择了简单的方法,在neo4j的bin下,创建一个importdata,然后将包含CSV的文件夹,放在该处,然后,再在cmd中导入,
neo4j-admin import --mode=csv --database=novel.db --nodes importdata\novel\author.csv --nodes importdata\novel\book.csv --nodes importdata\novel\pro1.csv --nodes importdata\novel\pro2.csv --relationships importdata\novel\au_bo.csv --relationships importdata\novel\book_pro.csv --relationships importdata\novel\t1_t2.csv
我的数据库名字是novel.db,然后其中author,book,pro1,pro2这些csv就是节点,au_bo,book_pro,t1_t2就是其中两者的关系
在这里,碰到了问题,就是报错,没有这些csv,问题就在于需要进入neo4j文件下的bin中,在输入上述命令
另一个错误,就是导入过程中的错误,这就在于这些爬下来的数据,不知道为什么有重复又有遗漏的数据,那么就涉及数据清洗,这里还没有仔细研究,后期再研究研究
因为,数据不是很多,就采用人工校对,在关系中的节点必须要存在这些节点,不幸的我,200数据,在仔细筛选中,只剩下130。
每次导入必须把原错误导入的文件夹删除,在neo4j的data的databases中删除。
同时还有个关键,查看什么图谱,必须将neo4j的conf中neo4j.conf
dbms.active_database=novel.db
后面修改为你所需要查看的数据库,此处我的就是novel.db
4、问题众多啊,成功导入后,在cmd中输入neo4j.bat console,然后,在浏览器中输入http://localhost:7474/,就可以看到,我的竟然又乱码了,果然在前面的修改csv,有问题,
就可以将csv用记事本打开,然后,另存为,果然编码是ANSI,在这里需要改为UTF-8,然后,修改完就正确了。


很开心,后面再增加更多内容
简单的知识图谱,neo4j+python的更多相关文章
- [知识图谱]Neo4j知识图谱构建(neo4j-python-pandas-py2neo-v3)
neo4j-python-pandas-py2neo-v3 利用pandas将excel中数据抽取,以三元组形式加载到neo4j数据库中构建相关知识图谱 Neo4j知识图谱构建 1.运行环境: pyt ...
- 《利用Python进行数据分析》自学知识图谱-导航
项目简介 Project Brief <利用Python进行数据分析-第二版>自学过程中整理的知识图谱. Python for Data Analysis: Data Wrangling ...
- Task1:知识图谱介绍(1天)
一.知识图谱简介 "知识图谱本质上是语义网络(Semantic Network)的知识库".但这有点抽象,所以换个角度,从实际应用的角度出发其实可以简单地把知识图谱理解成多关系图( ...
- 1. 通俗易懂解释知识图谱(Knowledge Graph)
1. 通俗易懂解释知识图谱(Knowledge Graph) 2. 知识图谱-命名实体识别(NER)详解 3. 哈工大LTP解析 1. 前言 从一开始的Google搜索,到现在的聊天机器人.大数据风控 ...
- 知识图谱和neo4j的基本操作
一.知识图谱的简介 1.知识图谱是什么 知识图谱本质上是语义网络(Semantic Network)的知识库 可以理解为一个关系图网络. 2.什么是图 图(Graph)是由节点(Vertex)和边(E ...
- 知识图谱实战开发案例剖析-番外篇(1)- Neo4j是否支持按照边权重加粗和大数量展示
一.前言 本文是<知识图谱实战开发案例完全剖析>系列文章和网易云视频课程的番外篇,主要记录学员在知识图谱等相关内容的学习 过程中,提出的共性问题进行展开讨论.该部分内容原始内容记录在网易云 ...
- springboot2.0+Neo4j+d3.js构建知识图谱
Welcome to the Neo4j wiki! 初衷这是一个知识图谱构建工具,最开始是对产品和领导为了做ppt临时要求配合做图谱展示的不厌其烦,做着做着就抽出一个目前看着还算通用的小工具 技术栈 ...
- Python知识图谱
一.Python全栈图谱 2.Python语言高级 Python 全栈工程师前端 Python全栈工程师后端 Python Linux运维自动化开发 Python KaliLinux信息安全开发和使用 ...
- [知识图谱]利用py2neo从Neo4j数据库获取数据
# -*- coding: utf-8 -*- from py2neo import Graph import json import re class Neo4jToJson(object): &q ...
随机推荐
- quartz.net的使用
Quartz.NET简介 Quartz.NET作业调度框架是伟大组织OpenSymphony开发的quartz scheduler项目的.net延伸移植版本. Quartz.NET是一个开源的作业调度 ...
- day057 基于对象和基于双下划线的多表查询
单表查询和多表查询的添加与查询 上述关系:author-authordetail是一对一的关系(外键在author上名为authors), book-publis ...
- Linux下安装Julia1.0.0
MIT正式发布编程语言Julia 1.0:Python.R.C++三合一! 由于官方文档提示中安装的不是最新的Julia版本,官方的0.7版本安装方法为: ...
- oracle项目案例脚本
前言:这是我从其他地方找到的一个oracle的案例脚本,在自己使用数据库的时候方便使用. -- 01 创建表空间 -- 注意表空间的路径 根据实际安装环境进行调整 CREATE TABLESPACE ...
- 二十五. Python基础(25)--模块和包
二十五. Python基础(25)--模块和包 ● 知识框架 ● 模块的属性__name__ # my_module.py def fun1(): print("Hello& ...
- 调试lldb命令常用
0.关于iOS的UI显示调试的三方控件 Reveal “po”命令是“print object”(打印对象)的简写.“$eax”是cup的一个寄存器.在一个异常的情况下,这个寄存器将会包含一个异常对象 ...
- java中的线程问题(一)什么是线程。
线程--什么是进程 进程--概念 要解释线程,就必须明白什么是进程. 什么是进程呢? 进程是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间),比如用户点击桌面的IE浏览器,就启动了一个进 ...
- Linux目录路径知识
改IP为静态IP
- centos7.4 可远程可视化桌面安装
先啰嗦一下VNC是什么( Virtual Network Computing)VNC允许Linux系统可以类似实现像Windows中的远程桌面访问那样访问Linux桌面.本文配置机器是兴宁市网络信息中 ...
- 获取Ueditor里面的图片列表,地址绝对化
/** * 内容中图片地址转成绝对地址 * @param $content * @return mixed */ private function imgUrl( ...