把标注数据导入到知识图谱

news2024/10/10 10:23:34

文章目录

    • 简介
    • 数据导入Doccano
    • 标注数据,导入到Neo4j
    • 寻求帮助

简介

团队成员使用 Doccano 标注了一些数据,包括 命名实体识别、关系和文本分类 的标注的数据;
工作步骤如下:

  1. 首先将标注数据导入到Doccano,查看一下标注结果;
  2. 使用py2neo python工具包,将标注数据导入到neo4j图数据库;

数据导入Doccano

前置条件:请先安装doccano, 点击查看 安装教程;此处不再赘述;

下述介绍的是,将他人标注完成的数据,上传到Doccano预览;

  1. 在命令窗口启动服务:
    doccano webserver --port 80
    在这里插入图片描述

  2. 在浏览器访问Doccano网页:
    网页地址如下:
    http://127.0.0.1/
    在这里插入图片描述

  3. 选择对应的项目,完成项目创建:
    在这里插入图片描述

  4. 导入数据集
    在这里插入图片描述

  5. 由于是导入标注完成的数据,选择JSONL
    在这里插入图片描述
    文件拖拽上传时,发现上传界面一直在转圈圈。此时再开一个新的命令窗口输入 doccano task,不然文件无法上传成功;
    在这里插入图片描述
    到此文件上传完成

点击Metrics查看用户标注的实体和关系数量;
在这里插入图片描述

标注数据,导入到Neo4j

在将他人标注的数据导入到Doccano,进行初步预览和修正标注,确定没有问题后;
使用py2neo包,实现将标注数据,上传到neo4j图数据库中;

如果你还不熟悉 py2neo包,或者想再复习一下可以点击查看 笔者写的 neo4j 图数据库 py2neo 操作 示例代码 教程
为了简化节点的查询与上传,笔者封装了Neo4jDriver 工具类,便于用户使用。

from py2neo import Graph, Node, NodeMatcher, RelationshipMatcher
import pandas as pd

# 连接到Neo4j数据库  
graph = Graph("bolt://localhost:7687", auth=("neo4j", "你设置的密码")) 

node_matcher = NodeMatcher(graph)
relationship_matcher = RelationshipMatcher(graph)

from py2neo import Graph, Node, NodeMatcher, RelationshipMatcher, Relationship


# 连接到Neo4j数据库
class Neo4jDriver:
    def __init__(self, url, username, password):
        self.graph = Graph(url, auth=(username, password))
        self.node_matcher = NodeMatcher(self.graph)
        self.relationship_matcher = RelationshipMatcher(self.graph)

    def query_node(self, class_, **kwargs):
        if node := self.node_matcher.match(class_, **kwargs):
            # 节点存在,则获取
            return node.first()

    def create_node(self, class_, **kwargs):
        """
            不创建重复节点
        """
        # 节点存在,则获取
        if node := self.query_node(class_, **kwargs):
            return node
        # 节点不存在,则创建
        node = Node(class_, **kwargs)
        self.graph.create(node)
        return node

    def query_relationship(self, start_node, rel, end_node):
        r = self.relationship_matcher.match(
            [start_node, end_node],
            r_type=rel
        )
        return r.first()

    def create_relationship(self, start_node, rel, end_node):
        if r := self.query_relationship(start_node, rel, end_node):
            return r
        self.graph.create(
            Relationship(start_node, rel, end_node)
        )

寻求帮助

若在做实验过程中,遇到问题,可在评论区留言,会尽快回复,评论内容也可帮助他人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1568063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode每日一题之专题一:双指针 ——复写零

复写零OJ链接:1089. 复写零 - 力扣(LeetCode) 题目: 解法(原地复写-双指针): 算法思路: 如果「从前向后」进⾏原地复写操作的话,由于 0 的出现会复写两次,导致…

鸿蒙开发之ArkTs开发布局之层叠布局(Stack)和弹性布局(Flex)

层叠布局(Stack) 层叠布局(StackLayout)用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局。层叠布局通过Stack容器组件实现位置的固定定位与层叠,容器中的子元素(子组件&…

技术揭秘:如何打造完美互动的充电桩硬件与服务平台?

充电桩平台全套源码地址 https://gitee.com/chouleng/cdzkjjh.git 这张图像是一个系统或服务的架构图。以下是对图中各个部分的描述: 前端: 位于图像的顶部,颜色为浅绿色。用户服务端: 紧邻前端,颜色为淡黄色。设备服…

【初阶数据结构】——leetcode:160. 相交链表

文章目录 1. 题目介绍2. 思路1:暴力求解算法思想代码实现 3. 思路2:快慢指针算法思想代码实现 1. 题目介绍 链接: link 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&…

OpenAI劲敌出手!Claude 3正式发布,全面超越GPT-4。Claude3模型特点和使用教程分享

已有GPT官方账号不会升级GPT4请参考:【国内如何用gpt4?如何升级gpt4?保姆级教程】 一、Claude震撼发布焦点分析 1.Claude震撼发布 北京时间2024年3月4日晚间,Anthropic,毫无预警地发布了最新一代大模型Claude 3&…

RuoYi-Vue若依框架-集成mybatis-plus报错Unknown column ‘search_value‘ in ‘field list‘

报错信息 ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column search_value in field list ### The error may exist in com/ruoyi/sales/mapper/ZcSpecificationsMapper.java (best guess) ### The error may involve defaultParameter…

32-2 APP渗透 - 移动APP架构

前言 app渗透和web渗透最大的区别就是抓包不一样 一、客户端: 反编译: 静态分析的基础手段,将可执行文件转换回高级编程语言源代码的过程。可用于了解应用的内部实现细节,进行漏洞挖掘和算法分析等。调试: 排查软件错误的一种手段,用于分析应用内部原理和行为。篡改/重打…

【python实战】--提取所有目录下所有Excel文件指定列数据

系列文章目录 文章目录 系列文章目录前言一、问题描述二、python代码1.引入库 总结 前言 一、问题描述 需要提取指定路径下所有excel文件中指定一列数据,汇总到新文件,(逐列汇总) 二、python代码 1.引入库 代码如下&#xff08…

66toolkit终极网络工具系统:470+强大Web工具,助力您的网络运营与开发

一、产品介绍 66toolkit,被誉为“终极网络工具系统”(SAAS),是一款功能强大的PHP脚本。它集合了超过470种快速且易用的Web工具,为日常任务处理和开发人员提供了极大的便利。作为一款综合性的网络工具系统,…

【吊打面试官系列】Redis篇 -如果有大量的 key 需要设置同一时间过期,一般需要注意什么?

大家好,我是锋哥。今天分享关于 【如果有大量的 key 需要设置同一时间过期,一般需要注意什么?】面试题,希望对大家有帮助; 如果有大量的 key 需要设置同一时间过期,一般需要注意什么? 如果大量的…

ContEA论文翻译

Facing Changes: Continual Entity Alignment for Growing Knowledge Graphs 面对变化:不断增长的知识图谱的持续实体对齐 Abstract 实体对齐是知识图谱(KG)集成中一项基本且重要的技术。多年来,实体对齐的研究一直基于知识图谱是静态的假设&#xff…

基于Spring Boot的餐厅点餐系统

基于Spring Boot的餐厅点餐系统 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9 部分系统展示 管理员登录界面 用户注册登录界面 …

阿里云服务器安装Java开发环境最佳实践

服务器环境安装 环境依赖服务器配置配置SSH登录打开安全配置端口远程连接配置秘钥 Linux服务器常用指令向远程服务器传送文件systemctl 相关 安装MySql安装步骤step1 检查并清除以前的mysql相关文件step2 安装step3 MySQL参数配置step4 设置开机启动step5 初始化数据库step6配置…

DDD 的四层领域模型是怎样的?包含哪些基础概念?

DDD的四层领域模型如下所示: 展现层:这一层负责向用户显示信息和解释用户命令,完成前端界面逻辑。并将用户请求传递给应用层。应用层:这一层是很薄的一层,负责协调领域层中的领域对象,组成具体应用场景。应…

工厂制造细节无需知--工厂方法模式

1.1 需要了解工厂制造细节吗? "简单工厂只是最基本的创建实例相关的设计模式。但真实情况中,有更多复杂的情况需要处理。简单工厂生成实例的类,知道了太多的细节,这就导致这个类很容易出现难维护、灵活性差问题,…

python--IO流和字符流的写入写出

1.IO流:(input output stream) python的IO流只有一个函数:open函数 属性不用带括号;方法通通要带括号 输入输出流:狭义上来说,指的就是内存数据和磁盘这种可以永久 存储数据的设备 IO流 IO流…

LongAdder 和 Striped64 基础学习

cs,表示 Cell 数组的引用;b,表示获取的 base 值,类似于 AtomicLong 中全局变量的 value 值,在没有竞争的情况下数据直接累加到 base 上,或者扩容时,也需要将数据写入到 base 上;v&am…

计算机考研408有向无环图描述表达式可靠构造方法

目录 前言目标(以王道书为例)构造方法1. 建树2. 后序遍历1. a2. b3. 4. b5. c6. d7. 8. *9. *10. c 前言 对王道视频中的分层合并思想不是很满意,笔者提出自己的构造方法。 目标(以王道书为例) 构造方法 笔者通过王…

GitGithub小册:版本管理必备利器

在 GitHub上创建仓库 这一步骤的前提是先注册一个 GitHub的账号,由于那都是小场面,就不再巴拉巴拉。 说明一下,全文如果没有特别的单独说明,文中所有用【】括起来的内容都代表网页或者软件节点的操作按钮或者步骤选择项。 打开 Gi…

【QT入门】 自定义标题栏界面qss美化+按钮功能实现

往期回顾: 【QT入门】 鼠标按下和移动事件实现无边框窗口拖动-CSDN博客【QT入门】 设计实现无边框窗口拉伸的公用类-CSDN博客【QT入门】对无边框窗口自定义标题栏并实现拖动和拉伸效果-CSDN博客 【QT入门】 自定义标题栏界面qss美化按钮功能实现 一、最终效果 二、…