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

不懂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.txt
LANG="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不会受什么符号影响,而且速度较快。

最后贴个结果吧

1	Our	our	our	PRP$	PRP$	_	_	3	3	NMOD	NMOD	_	_	A1	_
2	current	current	current	JJ	JJ	_	_	3	3	NMOD	NMOD	_	_	AM-TMP	_
3	population	population	population	NN	NN	_	_	4	4	SBJ	SBJ	Y	population.01	A2	_
4	is	be	be	VBZ	VBZ	_	_	0	0	ROOT	ROOT	_	_	_	_
5	6	6	6	CD	CD	_	_	6	6	DEP	DEP	_	_	_	_
6	billion	billion	billion	CD	CD	_	_	7	7	NMOD	NMOD	_	_	_	_
7	people	people	people	NN	NN	_	_	4	4	PRD	PRD	_	_	_	_
8	and	and	and	CC	CC	_	_	4	4	COORD	COORD	_	_	_	_
9	it	it	it	PRP	PRP	_	_	10	10	SBJ	SBJ	_	_	_	A1
10	is	be	be	VBZ	VBZ	_	_	8	8	CONJ	CONJ	_	_	_	_
11	still	still	still	RB	RB	_	_	10	10	TMP	TMP	_	_	_	AM-TMP
12	growing	grow	grow	VBG	VBG	_	_	10	10	VC	VC	Y	grow.01	_	_
13	exponentially	exponentially	exponentially	RB	RB	_	_	12	12	MNR	MNR	_	_	_	A2
14	.	.	.	.	.	_	_	4	4	P	P	_	_	_	_


你可能感兴趣的:(自然语言处理,nlp,machine,learning,Linux)