引言
最近在了解使用SRL(Semantic Role Labeling)任务,学习Tagger代码的过程中,准备需要的数据集花了很多时间和精力,这里来记录下,为日后对新任务的学习积累经验~
流程再现
这个项目需要用到的数据集是CoNLL-2005,但是非常神奇,从这个链接中只能下载到对单词的标注,没有单词。给各位放张图感受一下这个大无语事件:
也就是对于SRL这个任务而言,训练模型需要的是对谓词的指定(最左一栏的comment
和produce
),以及对谓词相关论元的标注(第二、三、四栏),然而数据集提供了这两部分,却没有公开标注对象(最左一栏中的-
,此时我已经满脸问号)
无奈只能去搜原本的单词。下图也证明了PTB dataset是not available的,需要跟随deep_srl的指示去准备CoNLL-2005数据集:
于是我们找到deep_srl中的指示,如下图:
结合上面三张图,我们大概了解了生成CoNLL-2005数据集的方式:1)收集PTB dataset,获得original words 2)使用deep_srl项目中的./scripts/fetch_required_data.sh
准备好srlconll(这一步其实是在准备对PTB中句子的ground truth标注)3)使用deep_srl项目中的./scripts/fetch_and_make_conll05_data.sh /path/to/ptb/
将PTB dataset和CoNLL-2005对SRL任务的标注,生成最终可以使用的dataset,形式如下:
PTB Dataset
我想了,无非就是一个官方不公开的数据集嘛,凭借功能强大的百度和google,肯定能找到它的盗版(当然不提倡盗版,手动狗头保命),然而,所有能找到的ptb数据集,都在执行./scripts/fetch_and_make_conll05_data.sh /path/to/ptb/
时报这样的错:
去看fetch_and_make_conll05_data.sh
文件的源代码,发现这部分来源于:
这部分的意思是说,ptb数据集中有许多WSJ(Wall Street Journal)的section{WSJPATH}/parsed/mrg/wsj/$s/*
,我们用循环逐一将每个section中的单词提取出来,放入{CONLL05_PATH}/train/words/train.$s.words.gz
中,所以如果{WSJPATH}/parsed/mrg/wsj/$s/
不存在的话,就会报上述错误,有理由猜测,盗版数据集不足以完成数据的生成
于是只能去官方下载ptb数据集,但是更无语的事出现了,这个数据集竟然要成为LDC组织会员才能获得(2400刀/年,或者不成为会员直接购买,也要1700刀),关于这个组织和成为会员的方式可以参考这两个链接:
LDC注册&数据获取|ACE2004, ACE 2005,OntoNotes等数据
Linguistic Data Consortium (LDC)
我只能说,这是我第一次遇到数据集还需要购买(而且还需要这么多钱)的情况,虽然是屁股决定脑袋的发言,但我认为相对于模型这类能直接作用于生产力的东西,数据集的公开并不会对某个创建数据集的人造成特别大的损失,反而会更好的推动社区的研究…
而我的学校没有购买这个资源,向学校图书馆的资源荐购打电话了,得知是今年经费少了几百万,可能不会再考虑订阅这个资源,最后的办法只能是与身边其他学校的朋友合作(比如浙大),共同使用数据集
结束语
这篇文章主要是吐槽吧,搞了两天数据集,实在是有点耽误进度,希望其他组织者考虑下穷学生,别学LDC