基于终端的文本注释工具

slate-nlp的Python项目详细描述


这是一个标记文本文档的工具。 Slate支持不同规模(字符、标记、行或文档的跨度)和不同类型(自由文本、标签和链接)的批注。 这包括一系列任务,如词性标注、命名实体识别、文本分类(包括情感分析)、话语结构等。

为什么要在其他文本注释工具的范围内使用这个工具?

  • 琐碎的安装
  • 将所有屏幕空间集中在批注上(适合大字体)
  • 基于终端,因此它在受限制的环境中工作(例如,仅允许对计算机的ssh访问)
  • 不难配置和修改

安装

两个选项:

<H3>1。使用PIP安装
pip install slate-nlp

然后以以下两种方式之一从任何目录运行:

slate
python -m slate
<H3>2。或在不安装的情况下下载并运行

作为zip文件下载:

curl https://codeload.github.com/jkkummerfeld/slate/zip/master -o "slate.zip"
unzip slate.zip
cd slate-master

或者克隆存储库:

git clone https://github.com/jkkummerfeld/slate
cd slate

然后使用以下任一选项运行:

python slate.py
./slate.py

要从其他目录运行,请使用:

python PATH_TO_SLATE/slate.py
PATH_TO_SLATE/slate.py

要求

这段代码只需要python(2或3),可以开箱即用。 要使用该工具,您的终端必须至少宽80个字符,高20个字符。

引用

如果您在工作中使用此工具,请引用:

@InProceedings{acl19slate,
  title     = {SLATE: A Super-Lightweight Annotation Tool for Experts},
  author    = {Jonathan K. Kummerfeld},
  booktitle = {Proceedings of {ACL} 2019, System Demonstrations},
  location  = {Florence, Italy},
  month     = {July},
  year      = {2019},
  pages     = {},
  url       = {https://github.com/jkkummerfeld/slate/raw/master/paper/acl19slate.pdf},
  software  = {https://jkk.name/slate},
}

开始

注意:如果您使用pip安装,请在下面的任何地方使用slatepython slate.py

运行python slate.py<;filename>;以开始在标记跨度上使用标签注释<;filename>;。 整个接口都包含在终端中,没有gui。 使用命令行参数,您可以改变属性,例如注释类型(标签或链接)和注释范围(字符、标记、行、文档)。

输入文件应该是纯文本,可以随意组织。 使用您最喜欢的分句和/或标记软件(例如,spacy)准备数据。 如果您使用python 3,那么应该支持unicode,但是代码还没有用非英语文本进行过广泛的测试(请分享任何问题!)

启动该工具时,默认情况下会显示一组核心命令。 下面还指定了这些命令以及其他命令。

该工具将注释保存在单独的文件中(<;filename>;。默认情况下,注释可以根据以下所述的文件列表进行更改。 注释文件的格式为每个注释项一行。 该项是用一组数字指定的。 对于标签,该项后接连字符和标签列表。 对于链接,在连字符之前的行上有两个项。 例如,这是两个注释文件,一个用于标记跨距的标签,另一个用于行之间的链接:

==> label.annotations <==
(2, 1) - label:a
((3, 5), (3, 8)) - label:a
(7, 8) - label:s label:a

==> link.annotations <==
13 0 - 
13 7 - 
16 7 - 

一些注释:

  • 第二个标签注释位于标记范围内,从第3行的5到8。
  • 第三个标签注释有两个标签。
  • 行批注只有一个数字来指定项目。
  • 当同一行链接到多个其他行时,每个链接都是一个单独的项目。

教程

此存储库中包含一组交互式教程,教您如何从工具本身使用工具。

<表><广告>任务命令 < /广告><正文>标记文档中文本的跨距python slate.py教程/label.md-t分类-s令牌-o-hh-l log.tutorial.label.txt链接文档中的行python slate.py教程/link.md-t link-s line-o-hh-l log.tutorial.link.txt比较注释待创建

示例工作流

此工具已用于两个注释ef涉及多个注释器的Forts(Durrett等人,2017年Kummerfeld等人,2018年)。 我们的工作流程如下:

  • 创建一个存储库,其中包含(1)注释指南,(2)要注释的数据分成用户特定的文件夹。
  • 每个注释者都下载了slate并用它来做注释并将文件提交到存储库。
  • 整个小组或项目负责人使用工具中的裁决模式,查看由多人注释的文件。

详细使用说明

调用选项

usage: slate.py [-h] [-d DATA_LIST [DATA_LIST ...]] [-t {categorical,link}]
                [-s {character,token,line,document}] [-c CONFIG_FILE]
                [-l LOG_PREFIX] [-ld] [-hh] [-r] [-o] [-ps] [-pf]
                [--do-not-show-linked] [--alternate-comparisons]
                [data [data ...]]

A tool for annotating text data.

positional arguments:
  data                  Files to be annotated

optional arguments:
  -h, --help            show this help message and exit
  -d DATA_LIST [DATA_LIST ...], --data-list DATA_LIST [DATA_LIST ...]
                        Files containing lists of files to be annotated
  -t {categorical,link}, --ann-type {categorical,link}
                        The type of annotation being done.
  -s {character,token,line,document}, --ann-scope {character,token,line,document}
                        The scope of annotation being done.
  -c CONFIG_FILE, --config-file CONFIG_FILE
                        A file containing configuration information.
  -l LOG_PREFIX, --log-prefix LOG_PREFIX
                        Prefix for logging files
  -ld, --log-debug      Provide detailed logging.
  -hh, --hide-help      Do not show help on startup.
  -r, --readonly        Do not allow changes or save annotations.
  -o, --overwrite       If they exist already, read abd overwrite output
                        files.
  -ps, --prevent-self-links
                        Prevent an item from being linked to itself.
  -pf, --prevent-forward-links
                        Prevent a link from an item to one after it.
  --do-not-show-linked  Do not have a special color to indicate any linked
                        token.
  --alternate-comparisons
                        Activate alternative way of showing different
                        annotations (one colour per set of markings, rather
                        than counts).

您还可以在文件中定义参数并按如下方式传入:

pip install slate-nlp
0

键绑定

该工具一次显示一个纯文本文件。命令是:

<表><广告>键入<>键标记影响 链接影响 < /广告><正文>移动j向左移动将所选项目向左移动i上移一行将所选项目上移一行o向下移动一行将所选项目下移一行向右移动将所选项目向右移动j或[移位+]转到行的开头向左移动链接项i或[移位+]转到第一行将链接项上移一行o或[移位+]转到最后一行将链接项下移一行或[移位+]转到行的末尾向右移动链接项编辑范围m向左延伸向左扩展选定项k合同左侧合同选定项目左/向右延伸向右扩展选定项l右侧合同合同选定项目权限m -向左扩展链接项k -合同链接项左< KBD>? -向右扩展链接项l -合同链接项权利标签注释(默认)空格然后a[取消]将此项目标记为 -空格然后s[取消]将此项目标记为s -空格然后d[取消]将此项目标记为D -空格然后v[取消]将此项标记为v -链接注释d -创建链接并向右/向下移动d -创建链接注释模式u撤消对此项目的批注撤消当前项目的所有批注

共享命令:

<表><广告>键入模式<>键影响 < /广告><正文>搜索正常\进入查询编辑模式>查询< KBD>?或输入退出查询编辑模式>查询< KBD>!或退格删除查询中的最后一个字符>查询除了以外的字符?向查询添加字符>正常p转到上一个匹配项>正常n转到下一场比赛>正常p转到链接行的上一个匹配项>正常n转到下一个链接行匹配项指定文本标签正常t进入标签编辑模式>标签< KBD>?或输入退出标签编辑模式并指定标签>标签< KBD>!或退格删除标签中的最后一个字符>标签除了以外的字符?向标签添加字符保存、退出等 正常保存并转到下一个文件>正常[保存并转到上一个文件>正常q保存并退出>正常s保存>正常q退出其他正常切换行号>正常h切换帮助信息(默认打开)>正常{向上翻页向上移动视图5行>正常}向下翻页向下移动视图5行>正常>;然后p切换显示文件进度>正常>;然后l切换显示标签的图例>正常>;然后m切换显示当前项上的标记

注意:特殊键,如enterbackspace在非OS-X操作系统上可能不起作用。这就是为什么在所有使用它们的地方,我们都有替代品。

其他

若要注释多个文件,请指定多个作为参数。 为了获得更好的控制,请在用--data list指定的文件中提供一个文件列表。 列表格式如下,[]表示可选值:

pip install slate-nlp
1

例如,这些命令将创建一个文件列表,使用它,然后稍后返回:

pip install slate-nlp
2

当包含附加注释文件时,将激活裁决模式。 默认情况下,所有其他文件中显示的所有批注都将添加到当前批注中。 文本中的分歧是彩色的,但一旦做出决定(使用常规注释命令),分歧就会消失。

注:判决没有经过彻底的检验。 请分享你遇到的任何问题!

定制

颜色和钥匙可定制。对于标签,默认值为:

  • 带下划线,当前选定项
  • 绿色加黑色,"A"项
  • 黑底蓝字,"S"项目
  • 品红色,黑色,"D"项目
  • 红色加黑色,"V"项
  • 黑底青色,单个标记有多种类型

对于链接,默认值为:

  • 带下划线,当前选定项
  • 黑底绿色,当前链接项
  • 蓝色对黑色,项目链接到当前链接项目
  • 黄色对黑色,项位于某些链接中,但不与当前链接项一起

修改代码

Slate有一个相对较小的代码库(大约2200行),旨在使添加新功能不太困难。 代码划分如下:

  • annotate.py是主程序,它有一个核心循环来获取用户输入。
  • config.py包含默认配置,包括颜色和键盘绑定。
  • data.py,用于读取、存储和写入数据的类。
  • view.py,呈现屏幕。

用于确定在代码的两个部分中的颜色分布的逻辑。 在data.py中,确定项的标签集。 在view.py中,这组标签用于选择合适的颜色。

添加新命令包括:

  • 将名称和键添加到config.py中的input_action_list
  • annotate.py中的action\u to\u函数中添加从名称到函数的映射
  • annotate.py中添加或修改函数
  • 修改data.pyview.py以应用操作

问题

如果您有任何问题,请:

  • 在github上打开一个问题。
  • 请发邮件至jkummerf@umich.edu>jkummerf@umich.edu

贡献

如果您在代码中发现错误,请提交一个问题,甚至更好,一个带有修复的请求。

致谢

该工具部分基于IBM根据合同4915012629支持的工作,以及ONR根据Muri Grant N000140911081支持的工作。 所表达的任何意见、发现、结论或建议都是作者的,并不一定反映IBM的观点。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Scala相当于java。util。ArrayList   使用jsoup从webview解析loggedin网站   java如何在字符串资源中设置值   java需要用奇怪的模式解析XML   java Freemarker StringTemplateLoader   java通过命令行参数更改默认ant目标   java CRC32更改初始值   socket中的java J2ME IOError::open=11004   运行Mahout 0.9文本处理示例时遇到的java问题   java Apache James Spring发行版未启动   JavaQuartz 2.2。X和Spring4集成   java Jpanel使用鼠标移动事件重新绘制   java使用Ant预编译JSP的最佳方法是什么   java测试spring安全帖子。访问此资源需要完全身份验证