因为研究方向是知识图谱,就有兴致想要构建一个简单的知识图谱,就在网上查找了一下,参考了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. ceph crush的问题

    ceph crush的问题看一遍忘一遍,现将<ceph源码分析>一书中相关章节摘抄如下: 4.2.1 层级化的Cluster Map例4-1 Cluster Map定义层级化的Cluste ...

  2. Oracle单机Rman笔记[1]---环境准备

    A.-----安装程序准备---- 1.拷贝oracle安装包到一个目录下 2.检查并修改hostname /etc/sysconfig/network中的hostname要与/etc/hosts中的 ...

  3. linux快捷键 常用快捷键

    常用的快捷键 'ctrl+c' 强制终止当前命令 'ctrl+l' 清屏 'ctrl+a' 光标移动到命令行首 'ctrl+e' 光标移动到命令行尾 'ctrl+u' 从光标所在的位置删除到行首 'c ...

  4. 【golang】kafka

    这篇博客是用来记录用go安装及操作kafka库的时候踩到的坑~ 安装kafka库 首先我参考了博客:https://blog.csdn.net/tflasd1157/article/details/8 ...

  5. jquery的一个小扩展,读取URL里的参数

    /* *扩展jquery的功能: *读取url中参数的功能,方法的参数是要获取的URL里键; *使用前要先导入jquery.js文件. * */ (function ($) { $.getUrlPar ...

  6. 过滤器(filter),监听器(listener),与servlet的执行顺序

    创建: 加载顺序 监听器-->过滤器-->Servlet.项目启动后,容器会首先创建声明的各种监听器,为后继的各个事件监听做准备,然后创建过滤器,最后是Servlet.销毁的时候是反序进行 ...

  7. day 07 元组,字典和集合等数据类型介绍

    元组:就是一个不可变的列表 1.用途,当我们需要记录多个值,并且没有更改的需求的时候,应该使用元组 2定义方式:使用,在 ( ) 中分隔开多个任意类型的值 注:t=("egg",) ...

  8. python day20面向对象-属性,类方法,静态方法

    一.属性的初识 # class Person: # # def __init__(self,name,hight,weight): # self.name = name # self.__hight ...

  9. 德州扑克AI--Programming Poker AI(译)

    前言: 最近在研究德州扑克的AI, 也想由浅入深的看下, 在网上找了一圈, 发现很多文章都提到了一篇文章: Programming Poker AI. 仔细拜读了一下, 觉得非常不错. 这里作下简单的 ...

  10. python学习之路04——列表和字典

    列表和字典 python中的可变数据类型有:列表和字典 不可变类型:数字,字符串,元组 今天先讲列表和字典 一.列表 1.概念: 变量:使用变量存储数据,但是,变量存储数据每次只能存储一个数据 问题: ...