詳細使用步驟介紹:
https://www.codenong.com/cs106623370/添加鏈接描述
Apache(音譯為阿帕奇)是世界使用排名第一的Web服務器軟體,它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟體之一,它快速、可靠并且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務器中,
下載地址:
https://github.com/nlplab/brat/releases/tag/v1.3p1
linux Centos7安裝指南:
https://blog.csdn.net/u011440696/article/details/109364035添加鏈接描述
linux簡單版安裝指南:
https://www.jianshu.com/p/3a70ee9ad632添加鏈接描述
1.2如果你在osx或者linux系統上就可以直接按照下面安裝
博主是放在一個服務器server上安裝,然后通過訪問ip的方式來完成標注作業,
一、
先下載,http://brat.nlplab.org/installation.html,brat-v1.3_Crunchy_Frog.tar.gz這個檔案
然后解壓,運行即可
二、
tar -xf brat-v1.3_Crunchy_Frog.tar
cd brat-v1.3_Crunchy_Frog
./install.sh –u
這里會提示你輸入username,可以自己設定,將來標注的時候,支持多人標注,

三、
brat本身是不支持中文的,如果在組態檔里定義中文會報錯,解決辦法是./server/src/projectconfig.py檔案的第163行,加上中文支持即可:
def normalize_to_storage_form(t):
"""
Given a label, returns a form of the term that can be used for
disk storage. For example, space can be replaced with underscores
to allow use with space-separated formats.
"""
if t not in normalize_to_storage_form.__cache:
# conservative implementation: replace any space with
# underscore, replace unicode accented characters with
# non-accented equivalents, remove others, and finally replace
# all characters not in [a-zA-Z0-9_-] with underscores.
import re
import unicodedata
n = t.replace(" ", "_")
if isinstance(n, unicode):
ascii = unicodedata.normalize('NFKD', n).encode('ascii', 'ignore')
#n = re.sub(r'[^a-zA-Z0-9_-]', '_', n)
n = re.sub(u'[^a-zA-Z\u4e00-\u9fa5<>,0-9_-]', '_', n)
normalize_to_storage_form.__cache[t] = n
return normalize_to_storage_form.__cache[t]
normalize_to_storage_form.__cache = {}
四、
python standalone.py #(不可用python3)
打開待標注檔案后,一定要先登錄(右上方的login)
補充說明:
brat默認不支持中文標注,需要手動修改brat主目錄/server/src路徑下的projectconfig.py檔案的第162行代碼,注釋源代碼,然后另起一行加入新代碼(修改之后記得重啟apache2服務):
1
2
# n = re.sub(r'[^a-zA-Z0-9_-]', '_', n)
n = re.sub(u'[^a-zA-Z\u4e00-\u9fa5<>,0-9_-]', '_', n)
如果已經配置了支持中文,但是仍然報不支持的字符的問題,可能是你的配置里面有中文標點符號,要么全部改成英文標點,要么修改上面的正則,如下(修改之后記得重啟apache2服務):
1
2
# n = re.sub(r'[^a-zA-Z0-9_-]', '_', n)
n = re.sub(u'[^a-zA-Z\u4e00-\u9fa5<>\u2014-\uff1b,0-9_-]', '_', n)
如果修改之后,仍然有字符問題,請檢查組態檔的編碼格式是否是UTF-8,且是標準的UTF-8,而不是帶BOM的UTF-8,具體可以使用Notepad++打開檔案再編碼選項中查看和轉換
五
首先,在brat專案的data目錄下新建一個project目錄,然后在brat專案的主目錄下找到以下檔案,復制到project目錄:
主目錄:/var/www/html/brat
project目錄:/var/www/html/brat/data/project
要復制的檔案:
670a9144f3747d92fcf542851d8a4f64.png
我們來看一下這幾個檔案分別是做什么的,
annotation.conf
這個是組態檔,內容如下:
復制代碼
[entities]
Definition of entities.
Format is a simple list with one type per line.
時間
地點
人名
組織名
公司名
產品名
復制代碼
visual.conf
這也是組態檔,可以配置不同的類別用不同的顏色顯示,找到如下段落,更新內容:
復制代碼
[drawing]
時間 bgColor:yellow
地點 bgColor:blue, fgColor:white
人名 bgColor:deepskyblue
組織名 bgColor:green, fgColor:white
公司名 bgColor:purple, fgColor:white
產品名 bgColor:pink
復制代碼
mayun.txt
這是我們要標注的原檔案,里面的內容片段如下(這里已經根據句號進行過分句處理,是因為不希望每個訓練樣本太長,建議控制在500字符內):
1964年9月10日,馬云出生在杭州,
幼年的馬云在人們的眼中是典型的壞孩子:叛逆、倔強、愛打架、逞強、頑皮淘氣,
馬云的父親雖然是典型的江南人,但脾氣卻很火暴,馬云從小在父親拳腳下長大,
馬云是看金庸的武俠小說長大的,行俠仗義、打抱不平的“俠義”情結在少年馬云的內心深處早已生根、萌芽,
mayun.ann是一個空檔案,使用brat對mayun.txt的標注結果,會記錄在ann檔案中,
此時我們通過瀏覽器訪問brat專案界面,打開project目錄下的mayun.txt檔案(記得要先登錄),看到的界面如下:
b2bd05f00704a32d3d80f7ec5de64a36.png
然后我們選擇目標物體,比如“馬云”,進行物體類別標注,效果如下:
ea0ececd21081d6b97b3558a5d2c6ea8.png
此時,你可以邀請其他人用他們的帳號登錄brat,也打開這個txt,和你一起標注,
標注之后,再看看ann檔案內容,如下:
2dc58df482a2a62efb150dd6b6e21ba0.png
T1,T2所在的列,表示標注的型別和序號,比如如果是標注的物體間的關系會用R表示,這里因為只討論命名物體,不涉及物體間的關系,所以只要知道這個T表示什么就可以了;
人名,公司名所在串列示標注詞匯的物體類別;
第三、四列是標注詞匯在整個txt中的起始和(結束索引+1)
最后一列是就是標注的詞匯列
7.添加用戶
實作標注時,可以多個用戶登錄進行標注,
編輯檔案:
vim /var/www/html/brat/config.py
1
修改對應的行,增加用戶名和密碼:
USER_PASSWORD = {
'admn': 'admin',
'test': 'test',
# (add USERNAME:PASSWORD pairs below this line.)
}
3.2 增加用戶(這個一般不需要)
官方檔案:If you want to add additional users, you can edit the config.py file, which contains further instructions.
找到config.py 對應的行,增加:
USER_PASSWORD = { 'admn': 'admin', 'test': 'test', # (add USERNAME:PASSWORD pairs below this line.) }
重新啟動后,使用test就可以登錄了
注意:當前用戶只能針對自己的標注進行修改,并不能修改其他人進行的標注
https://www.jianshu.com/p/3a70ee9ad632
https://blog.csdn.net/u011440696/article/details/109364035
https://www.cnblogs.com/anai/p/11474460.html
https://www.i4k.xyz/article/XP1990/111604515



3.3 匯入collection
匯入檔案的時候,必須要檔案符合:檔案名.xxx和檔案名.ann 一一對應的格式即可
直接將包含txt資料集的檔案夾放置到安裝檔案下一個data的目錄下,然后使用命令:
find 檔案夾名稱 -name ‘*.txt’|sed -e ‘s|.txt|.ann|g’|xargs touch
其意思是對每個txt檔案都創建一個空的標引檔案.ann,因為BRAT是要求的collection中,每個txt檔案是必須有一個對應的.ann檔案的,方便放置標引內容,這個ann檔案的格式也挺規范
將要標注的檔案匯入專案中data/路徑下即可,可以查看其中examples檔案下以及tutorials檔案下幫助檔案,
3.4具體標注配置
brat通過組態檔來決定對語料的標注可以滿足何種任務,包括四個檔案
annotation.conf: annotation type configuration
visual.conf: annotation display configuration
tools.conf: annotation tool configuration
kb_shortcuts.conf: keyboard shortcut tool configuration
一般只需要修改annotation.conf即可,該檔案用于對標注的資料結構進行配置,典型的配置如下:
每個檔案需要包含四類模塊:entities、relations、events、attributes,各個模塊都可以定義為空,其中
entities用來定義標注的物體名稱,其格式為每行一個物體型別,比如:人名、地名、英雄名、技能名等,可以采用tab來增加二級標注,如下面的物體標注中技能下的二級標注戰斗技能等,

relations用來定義物體間的關系,格式為每行定義一種關系,第一列為關系型別,隨后是用逗號分隔的ArgN:物體名,用來表示關系的各個相關者,比如例子中,同盟關系是存在于英雄之間
events用來定義事件,每行定義一類事件,第一列為事件名,隨后是用逗號分隔的Participant:物體名,用來表示事件的各個參與者,比如例子中,1v1事件需要多個英雄參加
attributes用來定義屬性,每行一個屬性,第一列為屬性名,隨后是用逗號分隔的Arg:<模塊型別>, Value:屬性值,注意屬性值可以有多個,比如例子中,定義了物體型別可以有攻擊力,值從1-3
[entities]
英雄
北歐英雄
希臘英雄
技能
戰斗技能
生活技能
采礦
種地
種白菜
種大米
[relations]
同盟Arg1:英雄, Arg2:英雄
擁有Arg1:英雄, Arg2:技能
[events]
1v1Participant1:英雄, Participant2:英雄
[attributes]
攻擊力Arg:, Value:1|2|3|4|5
選中要標注的文本,會彈出視窗,選中標注label,然后完成標注


標注配置
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


勾選這個,上傳的字體會更加清晰,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/378648.html
標籤:其他
上一篇:2021-12-09 Pandas—to_csv()寫入函式引數詳解
下一篇:python獲取日期相關方法
