介绍
BRAT是一个基于web的文本标注工具,即对文本添加标注。BRAT把标注结果结构化,形成计算机可处理的格式。可用于获取NLP任务的标注语料。
安装
环境/软件需求:UNIX-like 系统、python2.5+
- 下载:http://brat.nlplab.org/
- 安装:
a) 解压缩包
b) 进入tar xzf brat-v1.3_Crunchy_Frog.tar.gz
brat-v1.3_Crunchy_Frog
目录 - 运行安装脚本:
输入用户名、密码、email./install.sh
- 运行brat:
python2 standalone.py
- 打开链接:
http://127.0.0.1:8001/index.xhtml
,出现欢迎画面说明安装成功。 - 设置支持中文,在
./server/src/projectconfig.py
文件的第163行,加上中文支持:n = re.sub(u'[^a-zA-Z\u4e00-\u9fa5<>,0-9_-]', '_', n)
- 增加用户(非必须项):打开config.py文件,找到对应的行,即可增加用户
USER_PASSWORD = { 'admin': 'admin', 'test': 'test', #(add USERNAME:PASSWORD pairs below this line.) }
- 导入数据
a) 可直接把数据放在data
目录中,或新建一个子目录。(需要注意data
和work
文件夹的读写权限)
b) 每个标注文档需包含两个文件:*.txt
(utf-8编码的原始文本文件)和*.ann
(包含标注的文件)。可将文本文件导入目录后,执行
生成find data -name '*.txt' | sed -e 's|\.txt|.ann|g' | xargs touch
ann
文件。
配置
配置文件类型:
annotation.conf
:标注配置
visual.conf
:视觉配置
tools.conf
:工具配置
kb_shortcuts.conf
:键盘快捷键配置
若未创建视觉、工具和快捷键配置文件,则使用默认配置。配置文件放在对应的数据目录(data
或data
下的子目录)中。
标注配置
annotation.conf
# 实体
[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
[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
[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
# 键 标注类型
P Person
O Organization
F Family
操作
-
在浏览器中输入地址:
http://127.0.0.1:8001/index.xhtml
-
选择项目“
xxxxx
”,选择要标注的文档 -
打开文档。
-
登录,未登录不能进行标注操作。
-
其他操作
⬅:上一篇文档
➡:下一篇文档
Collection:选择文档
Data:数据导入、导出,选择比较模式等。
Search:可搜索文本、实体、事件、关系、笔记。
标注操作
标注实体
- 鼠标选中要标注的文本。
- 选择完成后弹出标注选项对话框,在“Entity type”选择实体的类别,点击OK完成标注。
- 标注完成。
删除或修改已标注的实体
- 鼠标双击标注的类别标签。
- 弹出编辑对话框。
更改类别:重新选择实体类别,点击”OK”
删除标注:点击“Delete”
更改标注内容:点击“Move”,重新选中正确文字,点击”OK”
更改为属性:在“Entity type”选择属性对应的实体类别,在“Entity attributes”中选择属性类别,点击”OK”
标注属性
- 鼠标中要标注的文本。
- 选择完成后弹出标注选项对话框,在“Entity type”选择属性对应的实体类别,在“Entity attributes”中选择属性类别,点击“OK”完成标注。
- 标注完成,标注标签显示为“<实体类别>*”
删除或修改已标注的属性
- 鼠标双击标注的标签或文本。
- 弹出编辑对话框(同实体)
更改属性类别:在“Entity type”选择属性对应的实体类别,在“Entity attributes”中选择属性类别,点击”OK”
删除标注:点击“Delete”
更改标注内容:点击“Move”,重新选中正确文字,点击”OK”
更改为实体:取消选中在“Entity attributes”中的属性类别,在“Entity type”选择属性对应的实体类别,点击”OK”
标注关系
- 鼠标左键选择头部实体的标签,按住鼠标左键并移动鼠标,可引出单向关系弧线。
- 鼠标移动到其他实体标签上,出现实体相关信息提示。若提示信息中实体下方显示关系名称,则说明两类实体可建立关系;反之,不能建立关系。
- 在要关联的实体标签上松开鼠标左键,弹出标注对话框。在“Type”中选择关系类型,点击”OK”。
- 完成标注。
删除或修改已标注的关系
- 双击关系标签,弹出编辑对话框。
更改关系类型:在“Type”中重新选择关系类别
删除关系:点击“Delete”
更改尾实体:点击“Reselect”,点击新的尾部实体。“Esc”键可取消操作。(下图中红色为原关系,黑色弧线为重新选择实体的牵引线)