Ontonote5.0数据集获取与处理
最近为了跑一个Baseline需要用到Ontonote5.0数据集,结果网上基本没有什么靠谱的获取和处理教程,明明简单的一笔的处理进程我用了一星期才处理干净,在这里就做个小总结。
一、数据获取
Ontonote5.0数据集只能在LDC(Linguistic Data Consortium, https://www.ldc.upenn.edu/)获得,LDC语料库包括阿拉伯语、汉语和英语新闻文本、布朗语料库全文、来自交换机与费舍库(Fisher Collection)数以百万计的英语电话语音以及美国英语口语词汇。LDC的数据版权年自1993年起,每年增加30-36个新的资源。
包括许多NLP领域的重要数据集,如图:
LDC上大部分数据都要收费,从数百美元到数千美元不等,但也有一些免费数据。但无论需求数据是否免费,都需要在网站上注册并加入组织。因为LDC的宗旨是“Data is licensed to organizations, rather than individuals”,数据应在组织间共享而非个人。一般国内的科研机构和大学都在LDC上有组织(但是国内好像没多少人了解这个)。
1.1 注册
注册地址:
https://catalog.ldc.upenn.edu/signup
怎么注册应该不用写什么教程吧。
不过需要注意的是,Organization那里需要检索自己学校的组织,这个很重要,选错了组织他们管理员不让你进可别赖我没提醒过。说回组织,一般国内高校都已经注册过了,举个例子: 北京大学已注册组织
注册完之后自动成为guest,此时主界面应该类似这样:
打码部分是你的个人信息
他会提醒你的申请信息已经发给管理员。这时候只需要联系本校管理员帮你通过验证加入组织即可。
1.2 通不过验证怎么办
前面我也说过,国内基本对LDC没什么概念,可能大多数学校注册成为LDC会员也只是图书馆方面的例行订阅,这时候你显然不能指望图书馆的人会上这么一个外文网站通过你的申请(这方面浙大就做的特别好,只有他们图书馆说明了LDC的注册方式和通过方法)。
所以在长时间没有人通过你的申请之后,你可以选择给LDC官方发邮件,说明没有人通过你的申请,一般LDC会在24小时回复,通过你的申请并告知你你们管理员的情况。比如我校是管理员毕业了,然后他们会请你推荐一位教授作为新的管理员,推荐谁由你个人选择,但不管怎么样你现在已经通过验证可以获取数据了。
1.3 请求数据
以Ontonote为例,将页面拉到最下面,可见:
选择request data即可,后面就是填填申请表什么的没有什么操作难度。
二、数据处理
通过上述一番操作,我们总算获取了数据的压缩包,你以为可以直接用了?naive。你获取的只是数据的一半,要想使用还需要进一步处理。
http://cemantix.org/data/ontonotes.html
我们follow这个网站的教程,获取专门的脚本用于处理数据集。
而最坑的事出现了,这个网站的script下载链接没了(我就问你心态崩不崩,反正我当时走到这里心态都炸了)。
所幸的是github上还有副本,你可以在这里获取处理用的script。
还要注意的一点是,这个脚本是python2.7写的,所以记得在python2下面运行,脚本需要同时复制进源文件夹和目标文件夹里面。
三、数据使用
经过上述一番折腾,我们可以获取可用的Conll数据文件了。
如果需要一个整体的train/test.conll 可以直接使用如下命令:
find . -name "*.gold_conll" -exec cat {} ;>train.conll
跑Baseline需要这么来回折腾真的麻烦。
四、总结
本文主要是笔者在获取和处理Ontonote5.0数据踩的坑。希望以后有人找数据把心态找崩了的时候看到这个能有点帮助。
最后给说一句,(可能会看到的)SDU的同学们需要数据请使用学校给的edu邮箱注册并提交注册申请并私信我,我已经推荐了新的SDU组织管理员可以通过大家的申请。