知识图谱task03

目录

    • 1.Neo4j介绍
      • 1.1.数据
      • 1.2.索引
    • 2.医疗领域知识图谱(QASystemOnMedicalGraph)介绍
      • 2.1.数据集介绍
      • 2.2.代码介绍
        • 2.2.1.在build_graph.py中创建知识图谱
    • 3.我的配置步骤

1.Neo4j介绍

Neo4j 是当前较为主流和先进的原生图数据库之一,提供原生的图数据存储、检索和处理。它由 Neo Technology支持,从 2003 年开始开发,1.0 版本发布于 2010 年,2.0版本发布于 2013 年。
经过十多年的发展,Neo4j 获得越来越高的关注度,它已经从一个 Java 领域内的图数据库逐渐发展成为适应多语言多框架的图数据库。
Neo4j 支持ACID、集群、备份和故障转移,具有较高的可用性和稳定性;它具备非常好的直观性,通过图形化的界面表示节点和关系;同时它具备较高的可扩展性,能够承载上亿的节点、关系和属性,通过 REST 接口或者面向对象的 JAVA API进行访问。

1.1.数据

Neo4j中的数据分成三部分:

  • 节点。节点表示对象实例,每个节点有唯一的ID区别其它节点,节点带有属性
  • 关系。就是图里面的边,连接两个节点,另外这里的关系是有向的并带有属性
  • 属性。key-value对,存在于节点和关系中
    知识图谱task03_第1张图片

1.2.索引

Neo4j使用遍历操作进行查询。为了加速查询,Neo4j会建立索引,并根据索引找到遍历用的起始节点。

  • 操作:
    用户可以创建任意数量的命名索引。每个索引控制节点或者关系,而每个索引都通过key/value/object三个参数来工作。
    其中object要么是一个节点,要么是一个关系,取决于索引类型。另外,Neo4j中有关于节点(关系)的索引,系统通过索引实现从属性到节点(关系)的映射。
  • 作用:
    • 查找操作:系统通过设定访问条件比如,遍历的方向,使用深度优先或广度优先算法等条件对图进行遍历,从一个节点沿着关系到其他节点;
    • 删除操作:Neo4j可以快速的插入删除节点和关系,并更新节点和关系中的属性。

Neo4j的安装和简单语句见知识图谱task01
知识图谱task01

2.医疗领域知识图谱(QASystemOnMedicalGraph)介绍

2.1.数据集介绍

知识图谱的node:
知识图谱task03_第2张图片
知识图谱的relationship:
知识图谱task03_第3张图片
知识图谱中node疾病的属性:
知识图谱task03_第4张图片
基于特征词分类的方法来识别用户查询意图:
知识图谱task03_第5张图片

2.2.代码介绍

2.2.1.在build_graph.py中创建知识图谱

总体一览

class MedicalGraph:
    def __init__(self):
        pass
    
    # 读取文件,获得实体,实体关系
    def read_file(self):
        psss
    # 创建节点
    def create_node(self, label, nodes):
        pass
    # 创建疾病节点的属性
    def create_diseases_nodes(self, disease_info):
        pass
    # 创建知识图谱实体
    def create_graphNodes(self):
        pass
    # 创建实体关系边
    def create_graphRels(self):
        pass
    # 创建实体关系边
    def create_relationship(self, start_node, end_node, edges, rel_type, rel_name):
        pass

具体来看

  • __init__初始化
    获取数据路径
    cur_dir = '/'.join(os.path.abspath(__file__).split('/')[:-1])
    self.data_path = os.path.join(cur_dir, 'DATA/disease.csv')
    链接 Neo4j 图数据库
    self.graph = Graph("http://localhost:7474", username="neo4j", password="自己设定的密码")
  • readfile读取文件
    这部分代码的核心就是读取 数据文件,并获取实体和实体关系信息。
  • creat_node函数
    创建不包含属性的节点
  • create_diseases_nodes函数
    创建带有属性节点(疾病)
  • create_graphNodes
    创建知识图谱实体,调用创建疾病节点和创建节点的函数
  • create_graphRels
    创建知识图谱关系
  • create_relationship函数
    创建实体关系边

QASystemOnMedicalGraph的安装和操作见知识图谱task02
知识图谱task02

3.我的配置步骤

因为0.20之后scikit-learn中的joblib移出去了,运行QASystem的时候就会报错无法从sklearn.externals import joblib,而直接安装joblib将原来的from sklearn.externals import joblib改为直接import joblib也会报错,故而尝试将含有sklearn的scikit-learn设定为低版本(0.20以前)。
由于我的Anaconda的python是3.8版本,无法安装低版本的scikit-learn包。故而在conda环境下新建一个python3.7的虚拟环境。
conda info --env 查看conda的环境
conda creat -n env_name python=3.7 env_name为自己定义的虚拟环境名字,建立一个python为3.7的环境
conda deactivate 退出虚拟环境
activate env_name 激活这个3.7的虚拟环境
conda remove -n env_name --all 删除虚拟环境
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ 添加清华大学的安装包仓库
conda config --set show_channel_urls yes 确认
conda install scikit-learn=0.20.3 安装特定版本的包
conda install 一系列要用的包:pyahocorasick ,jiebagensimnumpypandas

在entity_extractor.py里面添加data_dir的定义:
data_dir='C:\\datawhale\\neo4j\\QASystemOnMedicalGraph\\data\\'

你可能感兴趣的:(知识图谱,知识图谱)