文章目录
- 简介
- 数据导入Doccano
- 标注数据,导入到Neo4j
- 寻求帮助
简介
团队成员使用 Doccano 标注了一些数据,包括 命名实体识别、关系和文本分类 的标注的数据;
工作步骤如下:
- 首先将标注数据导入到Doccano,查看一下标注结果;
- 使用
py2neo
python工具包,将标注数据导入到neo4j图数据库;
数据导入Doccano
前置条件:请先安装doccano
, 点击查看 安装教程;此处不再赘述;
下述介绍的是,将他人标注完成的数据,上传到Doccano预览;
-
在命令窗口启动服务:
doccano webserver --port 80
-
在浏览器访问Doccano网页:
网页地址如下:
http://127.0.0.1/
-
选择对应的项目,完成项目创建:
-
导入数据集
-
由于是导入标注完成的数据,选择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)
)
寻求帮助
若在做实验过程中,遇到问题,可在评论区留言,会尽快回复,评论内容也可帮助他人。