背景
有时我们需要从0-1地去做一项NLP任务,如文本分类,实体识别等。从0开始意味着我们需要自己去标注数据。抛开现在的技术如Zero / Few-shot Learning以及主动学习先不说。我们先考虑找到一个高效的标注数据工具,就是本文的主角——doccano.
doccano 是一个供人类使用的开源文本注释工具。它为文本分类、序列标记和序列到序列任务提供注释功能。因此,您可以为情感分析、命名实体识别、文本摘要等创建标记数据。只需创建一个项目,上传数据并开始注释。您可以在数小时内构建数据集。
该项目在github上开源,地址:https://github.com/doccano/doccano。具体使用的官方文档:https://doccano.github.io/doccano/。该项目后端使用的django驱动,前端使用的是vue。
本文只介绍docker的安装方式以及其简单使用,抛砖引玉。
安装
docker安装比较简单。当然我们的服务大多都是放在linux上的,在此之前先准备有docker的linux系统。docker的安装方式可以参见:【Docker】Centos7 Docker在线安装.
-
镜像下载:
docker pull doccano/doccano
-
创建容器。镜像好比面向对象语言中的类,容器就是对应的实例化的类,有自己的一些具体内容,命令如下:
docker container create --name doccano \ -e "ADMIN_USERNAME=admin" \ -e "ADMIN_EMAIL=admin@example.com" \ -e "ADMIN_PASSWORD=password" \ -v doccano-db:/data \ -p 8000:8000 doccano/doccano
其中的各参数意义如下:
- –name doccano 表示 创建的容器名称为doccano
- -e “ADMIN_USERNAME=admin” doccano项目中管理员账号为
admin
- -e “ADMIN_EMAIL=admin@example.com” doccano项目中管理员的联系邮箱为admin@example.com
- -e “ADMIN_PASSWORD=password” doccano项目中管理员登陆密码
password
- -v doccano-db:/data 项目中的数据挂在到宿主机地址到
/data
中 - -p 8000:8000 宿主机(前)与容器中端口之间的映射
- doccano/doccano 镜像名称
我们直接执行上面的命令有:
返回了一串字符串,表示创建成功了。 -
开启容器对外提供服务:
docker container start doccano
,
现在打标工具已经安装和启动完毕,就开始使用吧。
doccano使用
用户通过浏览器访问部署的机器加上对应的端口号即可访问了。
现在我们 试一试自带的几个demo。
以实体识别为例,我们可以看到,不仅可以标注实体,还可以标注实体之间的关系:
已经可以选择是否开启实体重叠等功能。
实体识别使用教程
拿官方的关于实体识别的案例介绍一下。
数据集准备
下面我们以科幻小说命名实体识别标注任务为大家简单介绍一下doccano。下面是一个名为 books.json 的 JSON 文件,其中包含许多不同语言的科幻小说描述。我们需要标注一些实体,如人名、书名、日期等。
{"text": "The Hitchhiker's Guide to the Galaxy (sometimes referred to as HG2G, HHGTTGor H2G2) is a comedy science fiction series created by Douglas Adams. Originally a radio comedy broadcast on BBC Radio 4 in 1978, it was later adapted to other formats, including stage shows, novels, comic books, a 1981 TV series, a 1984 video game, and 2005 feature film."}
{"text": "《三体》是中国大陆作家刘慈欣于2006年5月至12月在《科幻世界》杂志上连载的一部长篇科幻小说,出版后成为中国大陆最畅销的科幻长篇小说之一。2008年,该书的单行本由重庆出版社出版。本书是三体系列(系列原名为:地球往事三部曲)的第一部,该系列的第二部《三体II:黑暗森林》已经于2008年5月出版。2010年11月,第三部《三体III:死神永生》出版发行。 2011年,“地球往事三部曲”在台湾陆续出版。小说的英文版获得美国科幻奇幻作家协会2014年度“星云奖”提名,并荣获2015年雨果奖最佳小说奖。"}
{"text": "『銀河英雄伝説』(ぎんがえいゆうでんせつ)は、田中芳樹によるSF小説。また、これを原作とするアニメ、漫画、コンピュータゲーム、朗読、オーディオブック等の関連作品。略称は『銀英伝』(ぎんえいでん)。原作は累計発行部数が1500万部を超えるベストセラー小説である。1982年から2009年6月までに複数の版で刊行され、発行部数を伸ばし続けている。"}
项目创建
我们需要为此任务创建一个新项目。使用超级用户帐户登录。
要创建您的项目,请确保您位于项目列表页面中,然后单击创建按钮。对于本教程,我们将项目命名为书籍序列标注,写一些描述,选择序列标注任务类型。
数据导入
创建项目后,我们将看到 Dataset 页面,然后单击 Actions 菜单中的 Import dataset 按钮。我们应该看到以下屏幕:
我们选择 JSON 并单击 Select a file 按钮。选择books.json,它会自动加载。
实体标签定义
单击左侧菜单中的标签按钮以定义我们的标签。我们应该看到标签编辑器页面。在标签编辑器页面中,您可以通过指定标签文本、快捷键、背景颜色和文本颜色来创建标签。
至于教程,我们创建了一些与科幻小说相关的实体。
添加标注人员
单击左侧菜单中的成员按钮。如果您不是项目管理员,则不会显示该按钮。
然后,选择添加按钮以显示表单。使用您要添加到项目中的用户名和角色填写此表单。然后,选择保存按钮。
如果没有用户可以选择,请创建用户(见FAQ)。
数据标注
接下来,我们准备标注文本。只需点击导航栏中的开始标注按钮,我们就可以开始对文档进行标注了。
数据导出
在标注步骤之后,我们可以下载标注数据。转到数据集页面,然后单击操作菜单中的导出数据集按钮。选择导出格式后,单击导出。您应该看到以下屏幕:
这里我们选择 JSONL 文件,通过点击按钮下载数据。下面是我们教程项目的标注结果。sequence_labeling_for_books.json
{"doc_id": 33,
"text": "The Hitchhiker's Guide to the Galaxy (sometimes referred to as HG2G, HHGTTGor H2G2) is a comedy science fiction series created by Douglas Adams. Originally a radio comedy broadcast on BBC Radio 4 in 1978, it was later adapted to other formats, including stage shows, novels, comic books, a 1981 TV series, a 1984 video game, and 2005 feature film.",
"labels": [[0, 36, "Title"], [63, 67, "Title"], [69, 75, "Title"], [78, 82, "Title"], [89, 111, "Genre"], [130, 143, "Person"], [158, 180, "Genre"], [184, 193, "Other"], [199, 203, "Date"], [254, 265, "Genre"], [267, 273, "Genre"], [275, 286, "Genre"], [290, 294, "Date"], [295, 304, "Genre"], [308, 312, "Date"], [313, 323, "Genre"], [329, 333, "Date"], [334, 346, "Genre"]],
"username": "admin"}
至此数据标注任务结束。当然上面是基本流程,除此之外,标注统计等功能也提供了。
总结
感觉到这里,这个砖跑的差不多了。后面的详细使用,例如数据导入,标签定义,多人标注,数据导出等,官方文档写的很详细,本文就不在赘述了。如有问题欢迎留言讨论哦。