Potato(土豆)一款轻量级的开源文本标注工具

news2024/11/24 9:18:53

项目介绍:

Potato 是一款轻量级、可移植的Web文本标注工具,被EMNLP 2022 DEMO赛道接受。它旨在帮助用户快速地从零开始创建和部署各种文本标注任务,无需复杂的编程或网页设计。只需简单配置,团队即可在几分钟内启动并运行标注项目。

注: EMNLP是计算语言学和自然语言处理领域顶级国际会议之一,与ACLNAACLCOLING并称为自然语言处理与计算语言学领域的四大顶级会议。

Potato允许您快速模拟和部署各种文本注释任务。Potato在后端作为web服务器工作,在本地部署安装启动它,就可以基于web的前端来标注数据。Potato工具的目标是允许人们自己或小团队快速轻松地注释文本数据——只需几行配置即可从零开始做标注任务。

Potato 依赖于一个配置文件驱动,定义了任务类型和所需的数据。通过这个配置文件,你可以设置不同的标注模式,如单选、多选、文本框、跨度、配对比较等,支持不同数据类型,包括短文、长文、对话和比较。

Potato不需要任何编码即可启动和运行。对于大多数任务,不需要额外的web设计。Potato很容易自定义,可以调整注释器看到的界面和元素。

有关详细说明,可以查看官方文档。

安装运行:

安装 Potato 并启动样例项目,官方提供了两种方式:

方式1:直接使用pip安装包( potato-annotation · PyPI)

pip install potato-annotation
potato get sentiment_analysis
potato start sentiment_analysis

方式2:从git仓库下载源码安装(GitHub - davidjurgens/potato: potato: portable text annotation tool

git clone https://github.com/davidjurgens/potato.git

cd potato

pip install -r requirements.txt

# 启动实例(一种简单的多选框标注方式)
python potato/flask_server.py start project-hub/simple_examples/configs/simple-check-box.yaml -p 8000

运行完后,访问 [http://localhost:8000] 即可体验。

我的实验:在windows环境下安装,第一种方式有报错,暂时没有去解决,就直接按第二种方式安装运行了。。

实验应用

简单采用项目中提供的simple-check-box(多选框)实例,后台启动运行后,就可以直接在本地浏览器打开运行 [http://localhost:8000] 。

初次登录时需要注册一下(注册信息存在本地,应该是相同任务作业,区分不同用户使用)

在potato项目的实例目录potato\project-hub\simple_examples下面,有三个文件夹:

其中,data中存放的待标注的样本文件, 其中文本文件有json,csv和tsv三种格式。

configs中不同标注风格的配置实例,比如,我们这次运行的simple-check-box.yaml

annotation_output存放是标注结果的输出文件,可以在配置时,指定是tsv, csv 或 json格式。

在配置文件simple-check-box.yaml中,原本的输入样本文件是data/toy-example.csv。假设我们需要修改为自己的标注文件test1.csv,只需要更改配置文件的输入文件行,参考如下:

{
    "port": 9001,

    "server_name": "potato annotator",

    "annotation_task_name": "Simple Check Box Example",

    # Potato will write the annotation file for all annotations to this
    # directory, as well as per-annotator output files and state information
    # necessary to restart annotation.
    "output_annotation_dir": "annotation_output/simple-check-box/",

    # The output format for the all-annotator data. Allowed formats are:
    # * jsonl
    # * json (same output as jsonl)
    # * csv
    # * tsv
    #
    "output_annotation_format": "tsv", 

    # If annotators are using a codebook, this will be linked at the top to the
    # instance for easy access
    "annotation_codebook_url": "",

    #"data/toy-example.csv"
    "data_files": [
       "data/test1.csv"
    ],

    "item_properties": {
        "id_key": "id",
        "text_key": "text",
        "context_key": "context"
    },


    "user_config": {

      "allow_all_users": True,
      
      "users": [  ],
    },

    # How many seconds do you want the annotators spend on each instance, after
    # that, an alert will be sent per alert_time_each_instance seconds.
    "alert_time_each_instance": 10000000,

    "annotation_schemes": [      
        {
            "annotation_type": "multiselect",
            "name": "favorite_color", 
            "description": "What colors are mentioned in the text?",
            "labels": [
               "blue", "maize", "green", "white"
            ],

            # If true, numbers [1-len(labels)] will be bound to each
            # label. Check box annotations with more than 10 are not supported
            # with this simple keybinding and will need to use the full item
            # specification to bind all labels to keys.
            "sequential_key_binding": True,            
        },       
    ],

    # The html that changes the visualiztation for your task. Change this file
    # to influence the layout and description of your task. This is not a full
    # HTML page, just the piece that does lays out your task's pieces
    # you may use templates in our lib, if you want to use your own template,
    # please replace the string as a path to the template
    "html_layout": "default",

    # The core UI files for Potato. You should not need to change these normally.
    #
    # Exceptions to this might include:
    # 1) You want to add custom CSS/fonts to style your task
    # 2) Your layout requires additional JS/assets to render
    # 3) You want to support additional keybinding magic
    #
    # if you want to use your own template,
    # please replace the string as a path to the template
    "base_html_template": "default",
    "header_file": "default",

    # This is where the actual HTML files will be generated
    "site_dir": "default"

}

仿造式例中"data/toy-example.csv"文件, 新的test1.csv文件的字段需要用英文逗号分隔。

id,text
item_1,它的一些方式。
item_2,他们不会感到疼痛。
item_3,它不会自行处理。
item_4,四个人想请一些志愿者来增加时间。
item_5,请求不是quiquia。
item_6,因为他的帮助,他快五十岁了。
item_7,为任何人考虑痛苦。
item_8,时间不会伤害你。
item_9,一美元的开心果很好,而且不会受伤。
item_10,委员会。
item_11,因为没有人想做自己。

最后,打开web端的标注页,展示效果如下:

总结:使用potato标注工具,按照提供的式例文件(覆盖了常见的自然语言的标注任务),通过简单修改配置文件(yaml格式), 就可以开展独立的标注任务,同时也可以修改配置文件,简单改变页面展示效果(如英文界面替换成中文的)。

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

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

相关文章

互联网寒冬VS基建饱和:计算机专业会重蹈土木工程的覆辙吗?

随着高考落幕,考生和家长们开始着手专业选择与志愿填报,"热门"与"冷门"专业的话题引起了广泛关注。而计算机专业无疑是最受瞩目的专业领域之一。 在过去的十几年里,计算机专业以其出色的就业率和薪酬水平,一…

LAMP架构的源码编译环境下部署Discuz论坛

一、LAMP架构 LAMP架构是一种常见的用于构建动态网站的技术栈 组成功能Linux(操作系统)LAMP 架构的基础,用于托管 Web 服务器和应用程序Apache(Web服务器)接收和处理客户端请求,并将静态和动态内容发送给…

AMEYA360代理:村田电子使用小型振动传感器件,实现设备状态预知检测

株式会社村田制作所近日完成了贴片型振动传感器件“PKGM-200D-R”的商品化。该新产品已开始批量生产供应。 以往FA行业实施的是计划性维护和事后维护,近年来预测性维护逐步受到关注。预测性维护使用各类传感器信息等预测可能发生故障的时间,以便事先采取…

ABAP编程中的参数传递:使用EXPORT/IMPORT与SPA/GPA参数

在ABAP编程中,有效地在程序之间传递数据是实现功能的关键。本文档将介绍两种常用的数据传递方法:EXPORT/IMPORT和SPA/GPA参数,并提供实际示例。 1. 使用EXPORT/IMPORT数据(ABAP/4内存) EXPORT/IMPORT语句允许程序在ABA…

重生之我要学后端0--HTTP协议和RESTful APIs

http和RESTful APIs HTTP协议RESTful APIs设计RESTful API设计实例 HTTP协议 HTTP(超文本传输协议)是用于分布式、协作式和超媒体信息系统的应用层协议。它是网页数据通讯的基础。工作原理简述如下: 客户端请求(Request&#xf…

Jmeter,badboy学习

1、注意Jmeter与jdk之间的版本对应 2、Jmeter的作用: jmeter可以做接口测试和压力测试。其中接口测试的简单操作包括做http脚本(发get/post请求、加cookie、加header、加权限认证、上传文件)、做webservice脚本、参数化、断言、关联&#x…

500多个专业怎么选择,高考填报志愿为什么难?

查成绩,报志愿,选专业,考出怎样的成绩,可选择的学校有哪些?所以很多人会比较慎重,可是慎重也不代表选择就容易。 目前来看,可选择的专业高达500多个,甚至超过500多个,文…

GPT-5对普通人有何影响

这篇文章对ChatGPT的使用方法和提问技巧进行了讨论,重点强调了背景信息和具体提问的重要性。文章清晰地传达了如何提高ChatGPT回答的质量,以及个人在使用ChatGPT时的体会和建议。然而,文章在逻辑组织和表达方面还有一些可以改进的地方&#x…

全局mixins

一、文章由来 在开发过程中发现在钩子函数位置直接使用dicts就能直接绑定数据了,由此溯源发现了自己的盲区 二、局部使用 // myMixin.js文件 var myMixin {created: function () {this.hello()},methods: {hello: function () {console.log(hello from mixin!)…

9 个让 Python 性能更高的小技巧,你掌握了吗?

我们经常听到 “Python 太慢了”,“Python 性能不行”这样的观点。但是,只要掌握一些编程技巧,就能大幅提升 Python 的运行速度。 今天就让我们一起来看下让 Python 性能更高的 9 个小技巧 python学习资料分享(无偿)…

【日常记录】【JS】SSE 流式传输 ChatGPT 的网络传输模式

文章目录 1、SSE 流式传输2、后端代码3、前端代码5、SSE和WS 对比6、chatgpt SSE的服务端返回的数据参考链接 单工通信是一种单向的通信方式,其中信息只能从发送端传输到接收端,而接收端不能向发送端发送任何信息。在Web开发中,Server-Sent E…

家用洗地机十大品牌什么牌子好用?2024十大爆款洗地机分享

在快节奏的生活中,清洁家居成为了一项繁琐却必不可少的任务。而洗地机的出现,无疑给忙碌的都市人带来了福音。选择一款优质的洗地机可以大大提升我们清洁的效率,改善我们的生活品质。那么,哪家洗地机清洁力最强,更适合…

头歌——机器学习——决策树案例

第1关:基于决策树模型的应用案例 任务描述 本关任务:使用决策树算法完成成人收入预测。 相关知识 为了完成本关任务,你需要掌握:1.数据特征处理,2.使用决策树算法完成成人收入预测。 数据处理及特征工程 本次任务…

T80005编码器操作说明书:高清HDMI,高清SDI编码器

T80005编码器操作说明书:高清HDMI,高清SDI编码器 T80005编码器视频使用操作说明书:高清HDMI编码器,高清SDI编码器

Grafana+Prometheus构建强大的监控系统-保姆级教程[监控linux、oracle]

什么是Grafana? Grafana是一个开源软件,拥有丰富的指标仪表盘和图形编辑器,适用Prometheus、Graphite、Elasticsearch、OpenTSDB、InfluxDB、redis。。。简单点说就是一套开源WEB可视化平台。通过对数据库数据二次提取,做出好看的…

240627_昇思学习打卡-Day9-ResNet50图像分类

240627_昇思学习打卡-Day9-ResNet50图像分类 文章目录 240627_昇思学习打卡-Day9-ResNet50图像分类前言残差网络Residual Block代码实现Bottleneck Block代码实现 BN层(Batch Normalization)构建ResNet50网络数据集准备与加载模型训练与评估可视化模型预…

什么是div移动指令?如何用vue自定义指令实现?

目录 一、Vue.js框架介绍二、vue自定义指令directive三、什么是div移动指令四、使用vue自定义指令directive写一个div移动指令 一、Vue.js框架介绍 Vue.js是一个用于构建用户界面的渐进式JavaScript框架。它设计得非常灵活,可以轻松地被集成到现有的项目中&#xf…

swiper轮播 loop:true失效解决

数据是写死的时候,能够loop:true是有效的;数据是动态获取的loop:true就会失效。 方法一:在接收到数据后,使用 setTimeout(() > {this.getSwiper(); //生成swiper方法}, 0); 下面是我项目具体使用的参考例子: 方法二&#xff…

1982Springboot宠物美容院管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot宠物美容院管理系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发),系 统具有完整的源代码和数据库…

McgsPro初级使用教程

MCGS触摸屏 1.也被称为昆仑通态触摸屏,是一款在工业自动化领域广泛应用的触摸屏产品。 2.以其高度可靠、多点触控、防水防尘、宽温设计、强大的通信能力、多样化的显示内容、灵活的组态设计和丰富的脚本编程等特点,成为工业自动化领域的强大伙伴。 下载好…