用BRAT进行中文情感分析语料标注
1.背景
情感分析是NLP中的一大分支,無論在學術界還是工業界都有廣泛的研究,在SemEval語義分析會議中有單獨的情感分析任務分支,其中最難的一個任務叫做ABSA:Aspect-Based Sentiment Analysis,面向方面的情感分析。舉例來說,就是對以下句子,
新版本英雄的皮膚很不錯,但是游戲經常出現掉線
要能識別出這樣的情感標注結果:<英雄,視覺性,正面>,<游戲,穩定性,負面>
而其中,[英雄,游戲]為實體(entity),[視覺性,穩定性]為方面(aspect),ABSA的任務就是識別句子中關于某些實體的某些方面的正負面情感。
從Semeval?2015的結果來看,目前沒有任何技術能夠做到無監督解決這一任務,既然需要監督學習就少不了標注。如果借助現有的工具來提高標注效率在工程上具有重要意義。
本文主要介紹如何利用BRAT進行針對ABSA問題的語料標注,后續如何利用這些標注構建模型來解決ABSA問題將在隨后的文章中介紹。本系列的所有的工作都來自企鵝風訊團隊的努力成果
(http://fsight.qq.com)。
2.BRAT簡介
BRAT是一個基于web的文本標注工具,主要用于對文本的結構化標注,用BRAT生成的標注結果能夠把無結構化的原始文本結構化,供計算機處理。利用該工具可以方便的獲得各項NLP任務需要的標注語料。以下是利用該工具進行命名實體識別任務的標注例子:
第一步:安裝BRAT
brat的安裝非常簡單,只需要unix-like系統和web server支持cgi環境即可,具體安裝流程官網寫的很清楚,http://brat.nlplab.org/installation.html,需要注意的是web server下各個路徑的權限需要設置好,python需要支持sqlite
第二步:標注配置
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]
同盟Arg1:英雄, Arg2:英雄
擁有Arg1:英雄, Arg2:技能
?
[events]
1v1Participant1:英雄, Participant2:英雄
?
[attributes]
攻擊力Arg:<ENTITY>, Value:1|2|3|4|5
?每個文件需要包含四類模塊:entities、relations、events、attributes。各個模塊都可以定義為空,其中
entities用來定義標注的實體名稱,其格式為每行一個實體類型,比如:人名、地名、英雄名、技能名等
relations用來定義實體間的關系,格式為每行定義一種關系,第一列為關系類型,隨后是用逗號分隔的ArgN:實體名,用來表示關系的各個相關者。比如例子中,同盟關系是存在于英雄之間
events用來定義事件,每行定義一類事件,第一列為事件名,隨后是用逗號分隔的Participant:實體名,用來表示事件的各個參與者。比如例子中,1v1事件需要多個英雄參加
attributes用來定義屬性,每行一個屬性,第一列為屬性名,隨后是用逗號分隔的Arg:<模塊類型>, Value:屬性值,注意屬性值可以有多個,比如例子中,定義了實體類型可以有攻擊力,值從1-3
特別說明:brat本身是不支持中文的,如果在配置文件里定義中文會報錯,解決辦法是修改./server/src/projectconfig.py文件的第163行,加上中文支持即可:
n??=?re.sub(u'[^a-zA-Z\u4e00-\u9fa5<>,0-9_-]', '_', n)
第三步:導入數據
brat將需要標注的數據放在data目錄下,每個子文件是一個項目,可以看到默認有examples和tutorials兩個目錄。里面放了各種教程和實例項目,你可以自己定義自己的項目,比如data/project/bee/,每個項目里需要至少包含一個txt文件和一個ann文件,其中ann是標注結果寫入的文件,txt是標注數據文件,另外自定義的配置文件也要放在項目目錄中,否則系統會采用默認的配置
第四步:標注數據
接下來就可以對語料進行標注了,在第一步安裝完成以后就應該可以在webserver配置的地址訪問到brat的首頁,默認情況下會提示你選擇項目路徑,如
你可以根據你的項目路徑定位到需要標注的文本文件,打開后,默認加載之前的標注結果,此時你可以對文本進行標注(注意要先登錄)
標注的方法很簡單直觀,首先選中需要標注的一段文本,然后會彈出對該段文本的標注類型:
這里可以選擇實體類型、事件類型和屬性,
對于兩個標注后的部分,可以從一端拖動到另一端,實現關系的標注:
3.ABSA標注結構
以上就是使用BRAT進行標注的方法,對于ABSA問題,需要標注各個文本片段的<實體,方面,情感值>,特別的對與semeval?2015中的ABSA問題的slot2,還需要標注文本的觀點片段,而我們利用BRAT解決這一標注的方案是:
定義實體為<實體,方面>對
定義實體具有屬性<情感>,其值域是[正面,負面,中立]
因此annotation.conf里的內容如下:
[entities]
角色,操作感
角色,視覺
?
[relations]
[events]
?
[attributes]
情感????Arg:<ENTITY>, Value:正面|負面|中立
?為了便于可視,我還特別定義的視覺配置visual.conf(這一部分規則不在此詳述,感興趣請參考官網說明):
[labels]
[drawing]
SPAN_DEFAULT????fgColor:black,?bgColor:lightgreen,?
? ? ? ? ? ? ? ? borderColor:darken
ARC_DEFAULT?color:black, arrowHead:triangle-5
角色,操作感?bgColor:#ffccaa
情感???
?最終的標注效果如下:
由此便可以對各個片段進行ABSA任務的標注,最終生成的標注結果格式如下:
T2角色,操作感?23?32艾瑞克,手感很不錯
A2情感?T2?正面
T3角色,操作感?36?44操作一般的用沃爾
A3情感?T3?中立
T4角色,操作感?44?54操作不錯的可以用隆多
A4情感?T4?中立
T5角色,操作感?59?66SG的精髓是準
A5情感?T5?負面
T1角色,視覺?1091?1102猛龍時期的啊,發型夠吊
A1情感?T1?正面
?以上是對標注工具BRAT進行ABSA問題的標注全過程,目前brat官網上并沒有關于情感任務的標注實例,故而有此文章幫助需要的人減少學習成本。
總結
以上是生活随笔為你收集整理的用BRAT进行中文情感分析语料标注的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习各种框架
- 下一篇: paddle一体安装