用深度学习做命名实体识别(二):文本标注工具brat
本篇文章,将带你一步步的安装文本标注工具brat。
brat是一个文本标注工具,可以标注实体,事件、关系、属性等,只支持在linux下安装,其使用需要webserver,官方给出的教程使用的是Apache2。
使用示例
下载brat
建议下载brat的release版本,地址:https://github.com/nlplab/brat/releases/tag/v1.3p1
安装环境
本文将在Ubuntu18.04操作系统下介绍brat的安装过程。
安装过程
首先,安装apache2,使用命令:
sudo apt-get install apache2
安装完成后会在 /var 目录下生成一个www/html目录,进入该目录:
cd /var/www/html
将下载的brat-1.3p1.zip文件移动到该目录下,使用 如下命令解压到当前目录:
unzip brat-1.3p1.zip
在当前目录下使用如下命令将brat-1.3p1重命名为brat
mv brat-1.3p1 brat
使用 如下命令对brat目录授权:
sudo chmod 777 -R /var/www/html/brat
进入brat目录
cd /var/www/html/bratsudo ./install.sh
执行以下命令,根据提示输入用户名、密码、管理员邮箱
./install.sh
现在开始配置apache2.conf文件: 执行命令:
vim /etc/apache2/apache2.conf
在文件末尾加入如下内容,注意缩进,(如果后面重启apache2服务的时候报错“...the control process exited with error code....”,可以看看是不是这里的缩进有问题,可以试试手动敲下面的配置,而不是直接复制粘贴):
<Directory /var/www/html/brat> AllowOverride Options Indexes FileInfo Limit Require all granted AddType application/xhtml+xml .xhtml AddType font/ttf .ttf Options +ExecCGI AddHandler cgi-script .cgi </Directory>
重新启动apache2:
sudo service apache2 restart
然后打开 http://xxx.xxx.xxx.xxx/brat , xxx是你brat所在主机的ip,默认80端口。
打开网页后,会发现报错,是关于协议什么的错误,这就是坑的地方,我们还需要一个步骤,如下:
cd /etc/apache2/mods-enabled sudo ln -s ../mods-available/cgi.load
只有这样才能使用cgi模块,而这步在brat的官方文档中貌似没有提及。但是在issue的#1141中提到了这点。
接下来,重新加载apache2的配置:
sudo service apache2 reload
此时再访问 http://xxx.xxx.xxx.xxx/brat,就能看到下面的界面了:
然后,用之前输入的用户名、密码登录后,就可以使用了,使用教程可以参考官方文档: http://brat.nlplab.org/configuration.html
最后,我们看看如何添加多个用户:
找到/var/www/html/brat/config.py 对应的行,增加:
USER_PASSWORD = { 'admn': 'admin', 'test': 'test', # (add USERNAME:PASSWORD pairs below this line.) }
重新启动apache2后,使用test就可以登录了。
补充说明:
- brat默认不支持中文标注,需要手动修改brat主目录/server/src路径下的projectconfig.py文件的第162行代码,注释源代码,然后另起一行加入新代码(修改之后记得重启apache2服务):
# n = re.sub(r'[^a-zA-Z0-9_-]', '_', n) n = re.sub(u'[^a-zA-Z\u4e00-\u9fa5<>,0-9_-]', '_', n)
- 如果已经配置了支持中文,但是仍然报不支持的字符的问题,可能是你的配置里面有中文标点符号,要么全部改成英文标点,要么修改上面的正则,如下(修改之后记得重启apache2服务):
# 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加载本地文件的时候报错“unable to read text file xxx/xxx/xxx/xxx.txt ”,请确保你的txt文件和ann文件已经授权给当前linux系统的登录用户,授权方式可以参考如下方式:
sudo chmod 777 xxx.txt sudo chmod 777 xxx.ann
- 请确保python2环境存在,并且python软连接指向的是python2,否则brat可能运行报错(最新的release版本只支持python2),如果需要安装python3可以建立新的软连接,名字叫python3即可;当然这只是参考处理方案,也可以采用虚拟环境的方式在python2下运行brat。
ok,工具搭建好了,下一篇《用深度学习做命名实体识别(三):文本数据标注过程》 将介绍如何标注我们的数据,本篇就这么多内容啦~,感谢阅读O(∩_∩)O,88~