地址:https://github.com/taishan1994/doccano_export

doccano_export

使用doccano标注工具同时导出实体和关系数据为空的解决办法。doccano版本:1.6.2。标注平台地址:https://github.com/doccano/doccano

安装

其实安装挺简单的:

pip install doccano
# Initialize database.
doccano init
# Create a super user.
doccano createuser --username admin --password pass
# Start a web server.
doccano webserver --port 8000

然后再打开一个命令行:

doccano task

在浏览器打开127.0.0.1:8000,登陆后新建一个命名实体识别项目,勾选上关系抽取及多人合作。其它的一些标注方法这里就不展开了。

导出数据

找到db.sqlite3的位置,替换doccano_export.py里面的,然后替换project_id为自己的项目id。最后执行该文件。在data目录下会生成doccano_ext.json。就可以用于百度的UIE的微调任务了。

补充:

  • windows用户db.sqlite3在C:\Users\用户名\doccano\,Linux用户在:/home/用户名/doccano/下(应该是,没有的话自己去其它位置找找)。
  • confirm用于控制是否只导出标记为√的结果。
  • export_relations用于控制是否输出关系标注结果,如不存在关系标注,将其置为False。

使用UIE进行微调

地址:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/uie

步骤

python doccano.py --doccano_file ./data/doccano_ext.json --task_type "ext" --save_dir ./data --splits 0.1 0.9 0
python finetune.py --train_path "./data/train.txt" --dev_path "./data/dev.txt" --save_dir "./checkpoint" --learning_rate 1e-5 --batch_size 16 --max_seq_len 512 --num_epochs 100 --model "uie-base" --seed 1000 --logging_steps 10 --valid_steps 100 --device "cpu"

结果

[2022-05-19 10:22:20,558] [    INFO] - We are using <class 'paddlenlp.transformers.ernie.tokenizer.ErnieTokenizer'> to load 'ernie-3.0-base-zh'.
[2022-05-19 10:22:20,559] [ INFO] - Already cached C:\Users\Administrator\.paddlenlp\models\ernie-3.0-base-zh\ernie_3.0_base_zh_vocab.txt
global step 10, epoch: 10, loss: 0.00012, speed: 0.01 step/s
global step 20, epoch: 20, loss: 0.00006, speed: 0.01 step/s
global step 30, epoch: 30, loss: 0.00004, speed: 0.01 step/s
global step 40, epoch: 40, loss: 0.00003, speed: 0.01 step/s
global step 50, epoch: 50, loss: 0.00003, speed: 0.01 step/s
global step 60, epoch: 60, loss: 0.00002, speed: 0.01 step/s
global step 70, epoch: 70, loss: 0.00002, speed: 0.01 step/s
global step 80, epoch: 80, loss: 0.00002, speed: 0.01 step/s
global step 90, epoch: 90, loss: 0.00002, speed: 0.01 step/s
global step 100, epoch: 100, loss: 0.00001, speed: 0.01 step/s
Evaluation precision: 0.95238, recall: 0.95238, F1: 0.95238
best F1 performence has been updated: 0.00000 --> 0.95238

评估

python evaluate.py --model_path "./checkpoint/model_best" --test_path "./data/dev.txt"  --batch_size 16 --max_seq_len 512

结果

Evaluation precision: 0.95238, recall: 0.95238, F1: 0.95238

预测

from pprint import pprint
from paddlenlp import Taskflow schema = ['出发地', '目的地', '费用', '时间']
# 定义初始化模型的位置
# ie = Taskflow("information_extraction", home_path="/workspace")
# 设定抽取目标和定制化模型权重路径
my_ie = Taskflow("information_extraction", schema=schema, task_path='./checkpoint/model_best')
pprint(my_ie("城市内交通费7月5日金额114广州至佛山"))

更新记录

  • 2022-05-20 更新控制是否输出关系标注的结果。

标注工具doccano导出数据为空的解决办法的更多相关文章

  1. ThinkPHP增加数据库字段后插入数据为空的解决办法

    今天用ThinkPHP做了一个简单的商品发布系统,数据库本来只有四个字段id,name,url,image.id是主键,name是商品名称,url是商品链接,image是商品图片,做的差不多了,发现还 ...

  2. .NET 调用java webservice保存datetime类型数据为空的解决办法

    问题描述:       用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属性的对象,当将该对象传到服务器端时,服务器端可以得到 string类型的属性值,却不能得到i ...

  3. Easy Populate批量管理下载产品数据为空的解决办法

    把原来的先删除:http://aaaaacom/admin/easypopulate.php?langer=remove

  4. 11g Oracle导出表 默认不导出数据为空的表解决

    11g oracle导出表时会默认不导出数据为空 1.Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出.  2.设置deferred_segm ...

  5. HBase 高性能获取数据(多线程批量式解决办法) + MySQL和HBase性能测试比较

    摘要:   在前篇博客里已经讲述了通过一个自定义 HBase Filter来获取数据的办法,在末尾指出此办法的性能是不能满足应用要求的,很显然对于如此成熟的HBase来说,高性能获取数据应该不是问题. ...

  6. html table表格导出excel的方法 html5 table导出Excel HTML用JS导出Excel的五种方法 html中table导出Excel 前端开发 将table内容导出到excel HTML table导出到Excel中的解决办法 js实现table导出Excel,保留table样式

    先上代码   <script type="text/javascript" language="javascript">   var idTmr; ...

  7. VMware下ubuntu与win8共享文件时/mnt/hgfs目录为空的解决办法

    VMware下ubuntu(guest)与win8共享文件时/mnt/hgfs目录为空的解决办法 环境:VMware-player-5.0.2-1031769 + ubuntu13.04 1.安装vm ...

  8. 第26月第9天 getActionBar为空的解决办法

    1.python 包路径 export PYTHONPATH=路径 https://blog.csdn.net/machinezj/article/details/60137666 2.getActi ...

  9. WCF传输过大的数据导致失败的解决办法

    WCF传输过大的数据导致失败的解决办法   WCF服务默认是不配置数据传输的限制大小的,那么默认的大小好像是65535B,这才65KB左右,如果希望传输更大一些的数据呢,就需要手动指定一下缓冲区的大小 ...

随机推荐

  1. 项目启动的缓慢之“Build completed with 1 error and 18 warnings in 3 m 51 s”

    一.问题 idea编译项目writing classes很慢,等很久之后项目也启动不起来,如下图 二.解决方案 1.File->Invalidate Caches/Restart...清下缓存 ...

  2. Numpy怎样给数组增加一个维度

    Numpy怎样给数组增加一个维度 背景:很多数据计算都是二维或三维的,对于一维的数据输入为了形状匹配,经常需升维变成二维 需要:在不改变数据的情况下,添加数组维度:(注意观察这个例子,维度变了,但数据 ...

  3. APICloud案例源码、模块源码、考试源码、开发工具大集合!赶快收藏

    APICloud专注于APP开发定制技术,多年来不停为开发者奉献更多的资源.此次,APICloud将以往的的资源进行更新.整合,以合集的形式分享给广大的用户. APICloud应用案例源码合集 API ...

  4. ES6-11学习笔记--扩展运算符与rest参数

    1.符号都是使用:... 2.扩展运算符:把数组或者类数组展开成用逗号隔开的值 3.rest参数:把逗号隔开的值组合成一个数组   扩展运算符: function foo(a, b, c) { con ...

  5. TTL 机制排毒,线上k8s的Job已经通过API 增加了Job的TTL 时长,且成功响应,为什么系统还是清理了Job?

    TTL 机制排毒,线上k8s的Job已经通过API 增加了Job的TTL 时长,且成功响应,为什么系统还是清理了Job? 面试官:"已完成 Job 的 TTL 机制了解嘛?简单说说TTL存在 ...

  6. 【Android开发】URL 转义与反转义

    1,转义 @org.junit.Test public void testEncode(){ String url="http://192.168.0.19:8888/cas/login&q ...

  7. 【Android开发】【布局】 仿QQ的UI

    Demo地址

  8. PAT1018 锤子剪刀布

    大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入 ...

  9. 面试官:Zookeeper怎么解决读写、双写并发不一致问题,以及共享锁的实现原理?

    哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 今天清明假期,赶上北京玉渊潭公园 ...

  10. addEventListener() 和 removeEventListener() 简介

    DOM方法  addEventListener()  和  removeEventListener()  是用来分配和删除事件的函数   这两个方法都需要三个参数  分别为: 事件名称(String) ...