情感分析系列之《利用BRAT进行中文情感分析语料标注》

来源:互联网 发布:什么叫淘宝直通车 编辑:程序博客网 时间:2024/04/16 17:20

1.背景

情感分析是NLP中的一大分支,无论在学术界还是工业界都有广泛的研究,在SemEval语义分析会议中有单独的情感分析任务分支,其中最难的一个任务叫做ABSA:Aspect-Based Sentiment Analysis,面向方面的情感分析。举例来说,就是对以下句子,

新版本英雄的皮肤很不错,但是游戏经常出现掉线

要能识别出这样的情感标注结果:<英雄,视觉性,正面>,<游戏,稳定性,负面>

而其中,[英雄,游戏]为实体(entity),[视觉性,稳定性]为方面(aspect),ABSA的任务就是识别句子中关于某些实体的某些方面的正负面情感。

从Semeval 2015的结果来看,目前没有任何技术能够做到无监督解决这一任务,既然需要监督学习就少不了标注。如果借助现有的工具来提高标注效率在工程上具有重要意义。

本文主要介绍如何利用BRAT进行针对ABSA问题的语料标注,后续如何利用这些标注构建模型来解决ABSA问题将在随后的文章中介绍。本系列的所有的工作都来自WeTest舆情团队的努力成果(http://wetest.qq.com/bee/)。

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:darkenARC_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官网上并没有关于情感任务的标注实例,故而有此文章帮助需要的人减少学习成本。本文和后续的ABSA研究工作主要用于WeTest舆情系统的风向标功能以及后续新增功能,详情请见http://wetest.qq.com/bee/?action=DataOverview&tag=overview

著于2015/11/11

1 0