BRAT的安装、配置、标注操作


目录

  • 介绍
  • 安装
  • 配置
      • 标注配置
      • 视觉设置
      • 工具配置
      • 键盘快捷键配置
  • 操作
    • 标注操作
      • 标注实体
      • 删除或修改已标注的实体
      • 标注属性
      • 删除或修改已标注的属性
      • 标注关系
      • 删除或修改已标注的关系

介绍

BRAT是一个基于web的文本标注工具,即对文本添加标注。BRAT把标注结果结构化,形成计算机可处理的格式。可用于获取NLP任务的标注语料。

安装

环境/软件需求:UNIX-like 系统、python2.5+

  1. 下载:http://brat.nlplab.org/
  2. 安装:
    a) 解压缩包

    1
    tar xzf brat-v1.3_Crunchy_Frog.tar.gz

    b) 进入brat-v1.3_Crunchy_Frog目录

  3. 运行安装脚本:
    1
    ./install.sh

    输入用户名、密码、email

  4. 运行brat:
    1
    python2 standalone.py
  5. 打开链接:http://127.0.0.1:8001/index.xhtml,出现欢迎画面说明安装成功。
  6. 设置支持中文,在./server/src/projectconfig.py文件的第163行,加上中文支持:
    1
    n = re.sub(u'[^a-zA-Z\u4e00-\u9fa5<>,0-9_-]', '_', n)
  7. 增加用户(非必须项):打开config.py文件,找到对应的行,即可增加用户
    1
    2
    3
    4
    USER_PASSWORD = {
    'admin': 'admin',
    'test': 'test',
    #(add USERNAME:PASSWORD pairs below this line.) }

  8. 导入数据
    a) 可直接把数据放在data目录中,或新建一个子目录。(需要注意datawork文件夹的读写权限)
    b) 每个标注文档需包含两个文件:*.txt(utf-8编码的原始文本文件)和*.ann(包含标注的文件)。可将文本文件导入目录后,执行

    1
    find data -name '*.txt' | sed -e 's|\.txt|.ann|g' | xargs touch

    生成ann文件。

配置

配置文件类型:
annotation.conf:标注配置
visual.conf:视觉配置
tools.conf:工具配置
kb_shortcuts.conf:键盘快捷键配置

若未创建视觉、工具和快捷键配置文件,则使用默认配置。配置文件放在对应的数据目录(datadata下的子目录)中。

标注配置

annotation.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# 实体
[entities]
# 每行一个实体类型 ,每行开头TAB键可定义类的层级结构
# 在类型名称之前添加“!”来禁用实体选择对话框中的条目,即该类型将出现在结构的类型层次结构中,但无法选择。
Living-thing
    Person
    Animal
    Plant
!Nonliving-thing
    Building
    Vehicle


# 关系
[relations]
# 基础语法   关系名称 Arg1:TYPE1,Arg2: TYPE2
Family  Arg1:Person, Arg2:Person
Employment  Arg1:Person, Arg2:Organization

# “|”分隔符列出所有可能的类型    
Located Arg1:Person,    Arg2:Building|City|Country
Located Arg1:Building,  Arg2:City|Country
Located Arg1:City,  Arg2:Country

# 通过<REL-TYPE>设置关系的symmetric(对称)和transitive(传递)属性,单独或同时使用均可。
# “symmetric-transitive”定义等价关系
Equiv Arg1:Person, Arg2:Person, <REL-TYPE>:symmetric-transitive

# 定义实体重叠的范围,
# 语法   <OVERLAP>    Arg1:TYPE1, Arg2:TYPE2, <OVL-TYPE>:TYPE-SPEC
# TYPE-SPEC 可选值包括 contain, equal 和 cross。
# contain: TYPE1实体范围可包含(完全)TYPE2 实体范围
# equal: TYPE1和TYPE2实体的跨度可以相等
# cross: TYPE1和TYPE2实体的可以相交
<OVERLAP>   Arg1:Country, Arg2:Organization, <OVL-TYPE>:contain
<OVERLAP>   Arg1:Person, Arg2:Person, <OVL-TYPE>:equal
<OVERLAP>   Arg1:<ENTITY>, Arg2:<ENTITY>, <OVL-TYPE>:<ANY>


# 事件
[events]
#语法  事件名称 参数名称:参数类型
Marriage    Participant1:Person, Participant2:Person
Bankruptcy  Org:Company


# 属性
[attributes]
# 名称 参数
age Arg:Person
Negation Arg:<EVENT>
Confidence Arg:<EVENT>, Value:Possible|Likely|Certain

#<ENTITY>:任何实体类型([entities]部分中出现的任何类型)
#<RELATION>:任何关系类型([relations]部分中出现的任何类型)
#<EVENT>:任何事件类型([events]部分中出现的任何类型)
#<ANY>:任何类型

视觉设置

visual.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[labels]
# 定义用户界面中标签类别的显示,如果未再此设置则按annotation.conf中的名称显示。
# 作用:再用户界面中用任意字符显示标签;界面空间有限时可使用缩写
# 第一个词应为annotation.conf中定义的类型
Organization | Organization | Org
Immaterial-thing | Immaterial thing | Immaterial | Immat

[drawing]
# 定义文本意外的视觉设置。
# 语法   ENTITY/RELATION KEY1:VALUE1,KEY2:VALUE2……
# KEY:VALUE对选项说明
# fgColor:任何HTML颜色规范(例如“black”),设置标注标签文字颜色。
# bgColor:任何HTML颜色规范(例如“white”),设置标注标签背景颜色。
# borderColor:任何HTML颜色规范(例如“black”),设置标注标签边框颜色。支持指定“ darken”设置阴影。
# color:任何HTML颜色规范(例如“black”),设置弧线的颜色。
# dashArray:设置为虚线。

Person  bgColor:#ffccaa
Family  fgColor:darkgreen

# <SPAN_DEFAULT>和<ARC_DEFAULT>用于定义未设置的标签和弧线默认样式。
SPAN_DEFAULT    fgColor:black, bgColor:lightgreen, borderColor:darken
ARC_DEFAULT color:black, dashArray:-, arrowHead:triangle-5

#设置多值属性的显示,如在annotation.conf中设置了属性“Confidence Arg:<EVENT>, Value:L1|L2|L3”
Confidence  glyph:(1)|(2)|(3), position:left
Confidence  dashArray:-|3-3|3-6

工具配置

tools.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[options]
# 设置句子切分,分词,标注验证,和日志记录
# Tokens tokenizer:VALUE,其中VALUE=
#       whitespace:按源文本中的空格字符分割(仅)
#       ptblike:模拟Penn Treebank标记化
#       mecab:使用MeCab执行日语标记化
# Sentences splitter:VALUE,其中VALUE=
#       regex:基于正则表达式的句子拆分
#       newline:由源文本中的换行符分隔(仅)
# Validation validate:VALUE,其中VALUE=
#       all:执行完整验证
#       none:不执行任何验证
# Annotation-log logfile:VALUE,其中VALUE=
#       <NONE>:无注释记录
#       NAME:登录到文件名(例如“ /home/brat/work/annotation.log”)
 
Tokens  tokenizer:whitespace
Sentences   splitter:regex
Validation  validate:all
Annotation-log  logfile:/home/brat/work/annotation.log


[normalization]
# BRAT使用SimString进行近似字符串匹配,配置normalization前需安装SimString,参照主页说明(http://chokkan.org/software/simstring/)
# 语法    DBNAME DB:DBPATH, <URL>:HOMEURL, <URLBASE>:ENTRYURL
# DBNAME:数据库名称,字符只能包含 大小写字母、数字、“-”、“_”
# DBPATH:可选项。相对于brat服务根目录的服务器上DB数据的文件系统路径。如果DBPATH未设置,则系统假定可以在给定的默认位置找到数据库DBNAME。
# HOMEURL:设置normalization资源的主页,用于标识资源DBNAME和在UI中提供链接以访问资源。
# URLBASE:可选项。设置URL模板,“%s”作为占位符可直接生成资源中改条目的链接。需要

Wiki    DB:dbs/wiki, <URL>:http://en.wikipedia.org, <URLBASE>:http://en.wikipedia.org/?curid=%s
UniProt <URL>:http://www.uniprot.org/, <URLBASE>:http://www.uniprot.org/uniprot/%s

[search]
# 设置标注对话框中可用的搜索服务
Google  <URL>:http://www.google.com/search?q=%s
Wikipedia   <URL>:http://en.wikipedia.org/wiki/%s

[annotators]
# 设置可从BRAT调用的自动标注服务
SNER-CoNLL  tool:Stanford_NER, model:CoNLL, <URL>:http://example.com:80/tagger/

[disambiguators]     
# 设置可从BRAT调用的自动语义类别(标注类别)消歧服务
simsem-MUC  tool:simsem, model:MUC, <URL>:http://example.com:80/simsem/%s

键盘快捷键配置

kb_shortcuts.conf

1
2
3
4
#  键 标注类型
P   Person
O   Organization
F   Family

操作

  1. 在浏览器中输入地址:
    http://127.0.0.1:8001/index.xhtml

  2. 选择项目“xxxxx”,选择要标注的文档


  3. 打开文档。

  4. 登录,未登录不能进行标注操作。

  5. 其他操作

    ?:上一篇文档
    ?:下一篇文档
    Collection:选择文档
    Data:数据导入、导出,选择比较模式等。
    Search:可搜索文本、实体、事件、关系、笔记。

标注操作

标注实体

  1. 鼠标选中要标注的文本。
  2. 选择完成后弹出标注选项对话框,在“Entity type”选择实体的类别,点击OK完成标注。
  3. 标注完成。

删除或修改已标注的实体

  1. 鼠标双击标注的类别标签。
  2. 弹出编辑对话框。

    更改类别:重新选择实体类别,点击”OK
    删除标注:点击“Delete
    更改标注内容:点击“Move”,重新选中正确文字,点击”OK
    更改为属性:在“Entity type”选择属性对应的实体类别,在“Entity attributes”中选择属性类别,点击”OK

标注属性

  1. 鼠标中要标注的文本。
  2. 选择完成后弹出标注选项对话框,在“Entity type”选择属性对应的实体类别,在“Entity attributes”中选择属性类别,点击“OK”完成标注。
  3. 标注完成,标注标签显示为“<实体类别>*”

删除或修改已标注的属性

  1. 鼠标双击标注的标签或文本。
  2. 弹出编辑对话框(同实体)
    更改属性类别:在“Entity type”选择属性对应的实体类别,在“Entity attributes”中选择属性类别,点击”OK
    删除标注:点击“Delete
    更改标注内容:点击“Move”,重新选中正确文字,点击”OK
    更改为实体:取消选中在“Entity attributes”中的属性类别,在“Entity type”选择属性对应的实体类别,点击”OK

标注关系

  1. 鼠标左键选择头部实体的标签,按住鼠标左键并移动鼠标,可引出单向关系弧线。
  2. 鼠标移动到其他实体标签上,出现实体相关信息提示。若提示信息中实体下方显示关系名称,则说明两类实体可建立关系;反之,不能建立关系。
  3. 在要关联的实体标签上松开鼠标左键,弹出标注对话框。在“Type”中选择关系类型,点击”OK”。
  4. 完成标注。

删除或修改已标注的关系

  1. 双击关系标签,弹出编辑对话框。

    更改关系类型:在“Type”中重新选择关系类别
    删除关系:点击“Delete
    更改尾实体:点击“Reselect”,点击新的尾部实体。“Esc”键可取消操作。(下图中红色为原关系,黑色弧线为重新选择实体的牵引线)