因为研究方向是知识图谱,就有兴致想要构建一个简单的知识图谱,就在网上查找了一下,参考了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的更多相关文章

  1. [知识图谱]Neo4j知识图谱构建(neo4j-python-pandas-py2neo-v3)

    neo4j-python-pandas-py2neo-v3 利用pandas将excel中数据抽取,以三元组形式加载到neo4j数据库中构建相关知识图谱 Neo4j知识图谱构建 1.运行环境: pyt ...

  2. 《利用Python进行数据分析》自学知识图谱-导航

    项目简介 Project Brief <利用Python进行数据分析-第二版>自学过程中整理的知识图谱. Python for Data Analysis: Data Wrangling ...

  3. Task1:知识图谱介绍(1天)

    一.知识图谱简介 "知识图谱本质上是语义网络(Semantic Network)的知识库".但这有点抽象,所以换个角度,从实际应用的角度出发其实可以简单地把知识图谱理解成多关系图( ...

  4. 1. 通俗易懂解释知识图谱(Knowledge Graph)

    1. 通俗易懂解释知识图谱(Knowledge Graph) 2. 知识图谱-命名实体识别(NER)详解 3. 哈工大LTP解析 1. 前言 从一开始的Google搜索,到现在的聊天机器人.大数据风控 ...

  5. 知识图谱和neo4j的基本操作

    一.知识图谱的简介 1.知识图谱是什么 知识图谱本质上是语义网络(Semantic Network)的知识库 可以理解为一个关系图网络. 2.什么是图 图(Graph)是由节点(Vertex)和边(E ...

  6. 知识图谱实战开发案例剖析-番外篇(1)- Neo4j是否支持按照边权重加粗和大数量展示

    一.前言 本文是<知识图谱实战开发案例完全剖析>系列文章和网易云视频课程的番外篇,主要记录学员在知识图谱等相关内容的学习 过程中,提出的共性问题进行展开讨论.该部分内容原始内容记录在网易云 ...

  7. springboot2.0+Neo4j+d3.js构建知识图谱

    Welcome to the Neo4j wiki! 初衷这是一个知识图谱构建工具,最开始是对产品和领导为了做ppt临时要求配合做图谱展示的不厌其烦,做着做着就抽出一个目前看着还算通用的小工具 技术栈 ...

  8. Python知识图谱

    一.Python全栈图谱 2.Python语言高级 Python 全栈工程师前端 Python全栈工程师后端 Python Linux运维自动化开发 Python KaliLinux信息安全开发和使用 ...

  9. [知识图谱]利用py2neo从Neo4j数据库获取数据

    # -*- coding: utf-8 -*- from py2neo import Graph import json import re class Neo4jToJson(object): &q ...

随机推荐

  1. volatile关键字的作用

    引言:以前只是看过介绍volatile的文章,对其的理解也只是停留在理论的层面上,由于最近在项目当中用到了关于并发方面的技术,所以下定决心深入研究一下java并发方面的知识.网上关于volatile的 ...

  2. JDBC数据库连接工具

    什么是JDBC? JDBC是一种可以执行sql语句的Java API,提供对数据库的访问方法. 什么是JDBC驱动? JDBC连接数据库需要驱动,驱动是两个设备要进行通信,满足一定的数据驱动格式.一般 ...

  3. python --常用内置模块01

    1.简单了解模块         模块就是我们把装有特定功能的代码进行归类的解构,从代码编写的单位来看我们的程序 从小到大的顺序:一条代码< 语句块<代码块(函数,类) < 模块 我 ...

  4. Python中文问题

    读取数据库中文是?? 解决如下 一.python2版本需要在 文件的开头要加上编码设置来说明文件的编码  python3版本以上不需要 #encoding=utf-8 二.在连接数据的连接参数里加上字 ...

  5. javascript 预解析

    内容来源:http://www.cnblogs.com/TomXu/archive/2011/12/28/2286877.html JavaScript中,你可以在函数的任何位置声明多个var语句,并 ...

  6. Spring Security 案例实现和执行流程剖析

    Spring Security Spring Security 是 Spring 社区的一个顶级项目,也是 Spring Boot 官方推荐使用的安全框架.除了常规的认证(Authentication ...

  7. Sonya and Robots(CodeForces 1004C)

    Since Sonya is interested in robotics too, she decided to construct robots that will read and recogn ...

  8. app性能测试指标

    性能测试在软件的质量保证中起着重要的作用,它包括的测试内容丰富多样.中国软件评测中心将性能测试概括为三个方面:应用在客户端性能的测试.应用在网络上性能的测试和应用在服务器端性能的测试.通常情况下,三方 ...

  9. 使用Python爬取代理ip

    本文主要代码用于有代理网站http://www.kuaidaili.com/free/intr中的代理ip爬取,爬虫使用过程中需要输入含有代理ip的网页链接. 测试ip是否可以用 import tel ...

  10. ef core code frist

    https://docs.microsoft.com/zh-cn/ef/core/get-started/aspnetcore/new-db?view=aspnetcore-2.1 1.先创建对应的实 ...