当前位置: 首页 > news >正文

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

文章目录

    • 简介
    • 数据导入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 nodedef 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 rself.graph.create(Relationship(start_node, rel, end_node))

寻求帮助

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

http://www.lryc.cn/news/331057.html

相关文章:

  • 【前端基础】什么是类数组对象,类数组对象转换成数组的方法
  • Python快速入门系列-8(Python数据分析与可视化)
  • 双非硕转测试之Java学习笔记(一):集合
  • zabbix源码安装
  • 计算机视觉之三维重建(5)---双目立体视觉
  • 计算机网络-TCP/IP 网络模型
  • 算法训练营第29天|LeetCode 491.递增子序列 46.全排列 47.全排列Ⅱ
  • Ubuntu服务器搭建 - 环境篇
  • 深度学习基础模型之Mamba
  • Topaz Video AI for Mac v5.0.0激活版 视频画质增强软件
  • 解决WordPress文章的段落首行自动空两格的问题
  • RISC-V单板计算机模拟和FPGA板多核IP实现
  • Mojo编程语言案例及介绍
  • 【Python面试题收录】Python中有哪些方法交换两个变量的值?至少给出三种方法。
  • MySQL核心命令详解与实战,一文掌握MySQL使用
  • 基于Springboot + MySQL + Vue 大学新生宿舍管理系统 (含源码)
  • vulnhub pWnOS v2.0通关
  • leetcode热题100.数据流的中位数
  • C 从函数返回指针
  • (文章复现)考虑分布式电源不确定性的配电网鲁棒动态重构
  • 蓝桥杯第八届c++大学B组详解
  • 小于n的最大数 Leetcode 902 Numbers At Most N Given Digit Set
  • Leetcode刷题-数组(二分法、双指针法、窗口滑动)
  • STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (b)
  • 数据仓库——事实表
  • 人工智能常用的编程语言有哪些?
  • 【Leetcode每日一题】模拟 - 提莫攻击(难度⭐)(45)
  • OPPO云VPC网络实践
  • 力扣(数组)找到所有数组中消失的数字
  • 每日面经分享(Spring Boot: part3 Service层)