一些实用的语义角色标注(SRL)工具使用方法

来源:互联网 发布:python实现rfm模型 编辑:程序博客网 时间:2024/05/17 23:34

不懂SRL的自己去扫盲吧,简言之就是predict-argument分析。找了一些工具,其中暂时调通两个

1. swirl

http://sourceforge.net/projects/swirl-parser/,可以从这下载,本工具里readme介绍较详细,主要是注意有多种输入格式。

带有名实体标注的可能效果比较好,什么都没有的效果比较差一点,下面就简单说一下什么都没有的输入格式。

格式:

0 Some O - countries O - are O be having O have difficulties O - in O - managing O manage a O - place O - to O - live O live for O - their O - citizen O - as O - they O - tend O tend to O - get O get overpopulated O - . O -


每一行一个句子,每个单词都是一个三元组(单词 O -),针对动词的srl,如果是动词,则最后的-要填上动词原形,如上例中的have,tend等,最前面的是一个0,类似于分类器的类别标签吧,不管它,加了便是。

这样使用swirl就可以parse了,命令行格式比较简单./swirl_parse ./swirl_model ./charniak_model input云云,有说明自己看吧。

缺点是有些特殊符号不识别,就会down掉,比如双引号、横线等,而且分析速度较慢,效果也一般。

2. mate-tools

由google code上下载 http://code.google.com/p/mate-tools/

需要下载srl的tar包,以及对应语言的各种model文件

暂时只调了英文的pipeline的形式,即输入单纯的英文的句子,就能输出诸如词性标注、句法、语义角色等信息,以conll2009的形式,见demo(http://barbar.cs.lth.se:8081/parse),中文等其他语言应该也类似吧。

输入格式按列来分布,只要保证第二列是单词即可,其他无所谓,如

-I  -

-am  -

-tied  -

该换句子的时候, 就加个空行。

需要修改script中的pipeline的sh文件中的内容,上面都有写,自己对应好就ok,下面贴一个自己的

#################################################### (1) The following needs to be set appropriately##################################################INPUT=data/eng/test.txtLANG="eng"LEMMATIZER_MODEL="models/CoNLL2009-ST-English-ALL.anna-3.3.lemmatizer.model"POS_MODEL="models/CoNLL2009-ST-English-ALL.anna-3.3.postagger.model"PARSER_MODEL="models/CoNLL2009-ST-English-ALL.anna-3.3.parser.model"SRL_MODEL="models/CoNLL2009-ST-English-ALL.anna-3.3.srl-4.1.srl.model"OUTPUT="$LANG.out"#################################################### (2) These ones may need to be changed##################################################JAVA="java" #Edit this i you want to use a specific JRE.MEM="4g" #Memory for the JVM, might need to be increased for large corpora.CP="srl.jar:lib/anna-3.3.jar:lib/liblinear-1.51-with-deps.jar:lib/opennlp-tools-1.5.2-incubating.jar:lib/opennlp-maxent-3.0.2-incubating.jar:lib/seg.jar"JVM_ARGS="-cp $CP -Xmx$MEM"


model对应好,jar里面对应好

 在根目录执行这个script就ok了。生成的结果文件会在当前目录保存。

mate-tool不会受什么符号影响,而且速度较快。

最后贴个结果吧

1OurourourPRP$PRP$__33NMODNMOD__A1_2currentcurrentcurrentJJJJ__33NMODNMOD__AM-TMP_3populationpopulationpopulationNNNN__44SBJSBJYpopulation.01A2_4isbebeVBZVBZ__00ROOTROOT____5666CDCD__66DEPDEP____6billionbillionbillionCDCD__77NMODNMOD____7peoplepeoplepeopleNNNN__44PRDPRD____8andandandCCCC__44COORDCOORD____9itititPRPPRP__1010SBJSBJ___A110isbebeVBZVBZ__88CONJCONJ____11stillstillstillRBRB__1010TMPTMP___AM-TMP12growinggrowgrowVBGVBG__1010VCVCYgrow.01__13exponentiallyexponentiallyexponentiallyRBRB__1212MNRMNR___A214.....__44PP____


0 0
原创粉丝点击