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进行中文情感分析语料标注相关推荐

  1. 毕业设计:微博语料中文情感分析

    向AI转型的程序员都关注了这个号???????????? 人工智能大数据与深度学习  公众号:datayx 微博的强大影响力已经深深的吸引了更多的人加入.而对微博的情感分析,不仅可以获取网民的此时的心 ...

  2. 利用Python实现酒店评论的中文情感分析,含数据集

    利用Python实现酒店评论的情感分析 完整代码下载地址:利用Python实现酒店评论的中文情感分析 情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析.归纳.情感极性分析主要有两种分类方法: ...

  3. python情感分析语料库_python 中文情感分析 Snownlp库的使用

    不甘心的时候,就是在进步:痛苦的时候,就是在成长. 文章目录 一.Snownlp 简介 SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于 ...

  4. 基于逻辑回归,支持向量机,朴素贝叶斯以及简单深度学习文本分类方法(BiLSTM、CNN)实现的中文情感分析,含数据集可直接运行

    基于逻辑回归,支持向量机,朴素贝叶斯以及简单深度学习文本分类方法(BiLSTM.CNN)实现的中文情感分析,含数据集可直接运行 完整代码下载地址:中文情感分析 中文情感分析 本项目旨在通过一个中文情感 ...

  5. 【中文情感分析】SO-PMI算法(HarvestText库的修正以及解析)

    简述 在最近的RA过程中,需要使用一个库,同时对其的原理需要理解.然后就研究了一些,发现了几个有趣的,其中一个HarvestText中文情感分析. 我研究了他的源码后,再结合理论知识发现了这个库在情感 ...

  6. 基于大连理工大学的情感词汇表的中文情感分析

    前言 为什么要写这篇文章? 前段时间帮人写了一个这样的小项目,在网上查找资料的过程中,有不少关于该项目的资料,由于各个博主写的代码不尽相同,且没有一个详尽的分析方法,所以我在完成该项目后,想到可以把该 ...

  7. scrapy 豆瓣短评 数据分析 + 中文情感分析 + 可视化 (一)

    scrapy 豆瓣短评 数据分析 + 中文情感分析 + 可视化 (一) 一.scrapy 爬取 豆瓣短评 本次爬取的是哪吒之魔童降世 短评 .本次爬取的是静态网页还是蛮简单的. 1.开始地址 http ...

  8. python中文情感分析分类和英文情感分析的库和方法汇总

    情感分析是自然语言处理中的一个常见任务.以下是用 Python 写的一个简单的情感分析分类函数的代码示例: import jieba import numpy as npdef sentiment_a ...

  9. tensorflow 实践(一)使用神经网络做中文情感分析

    本文使用哈工大做文本预处理: 两层隐层神经网络: 后注:不是标准的ann,做了去停用词和词性筛选,没有端到端. # -*- coding: utf-8 -*- # @bref :使用tensorflo ...

最新文章

  1. dataframe在groupby之后,选其中的某列作为画图的新index
  2. python请求post无返回结果_Python请求POST返回不完整的内容
  3. python如何计算个人gpa_使用While循环(Python)计算GPA
  4. C语言中连续两个printf,在C中两个连续的printf()调用的奇怪行为
  5. 吴恩达 深度学习 编程作业(1-2.1)- Python Basics with Numpy
  6. 在C#中嵌入Flash对象时遇到未能导入activex 控件的问题
  7. spark内核揭秘-06-TaskSceduler启动源码解析初体验
  8. yii2 html转换,能够将yii2的api以html文件导出,以及相关的测试
  9. ubuntu系统源码下载
  10. 网络管理与维护作业10
  11. rqnoj 2 开心的金明
  12. android 字体设置为中等粗细
  13. pta森森快递(线段树 + 贪心 + 区间修改)
  14. 基于W5500的嵌入式SNMP代理端实现
  15. 新中产人群生活态度及网络理财安全行为研究报告
  16. teamviewer检测为商业用途 5分钟后关闭解决方法
  17. MAC OS的HOME和END
  18. 高通sdx12 audio架构
  19. python小练习6--lambda表达式的使用
  20. BUCT数据结构——图

热门文章

  1. 在Dockerfile中设置G1垃圾回收器参数
  2. IDEA中将代码块封装为方法,IDEA代码重构快捷键
  3. 2021-2027年中国智能制造行业市场前景预测研究报告
  4. 2022-2028年中国纳滤膜产业发展态势及市场发展策略报告
  5. GCC 链接 xxx:No such file or directory 及运行可执行文件 error while loading shared libraries: xxx.so 解决方案
  6. 百度paddle学习笔记
  7. ResNet50结构
  8. MindSpore模型精度调优实践
  9. 反应式系统实现MQTT客户机
  10. [C] 深度优先搜索解决连通块/染色问题——求岛的个数