天天看点

自然语言处理 crf++命名实体识别

自然语言处理的方法有很多种,crf++是也是使用比较多的一种方法,关于crf++ 的详细解释可以参考网上的资料,这里不再做介绍,这里直接说的就是用crf++进行命名实体识别。

crf++ 进行自然语言处理的时候需要下载一个crf工具包,然后使用工具包进行处理,我使用的是CRF++ 0.58版本的,这个在网上都可以搜到下载,压缩后这个是里面的内容

自然语言处理 crf++命名实体识别

将crf_learn和crf_test复制到这个路径

自然语言处理 crf++命名实体识别

然后需要新建一个训练命名实体的模板template,这里是常用的一个命名实体的特征模板template,我自己学习的时候用的就是这个

# Unigram 
U00:%x[-2,0] 
U01:%x[-1,0] 
U02:%x[0,0] 
U03:%x[1,0] 
U04:%x[2,0] 
U05:%x[-2,0]/%x[-1,0]/%x[0,0] 
U06:%x[-1,0]/%x[0,0]/%x[1,0] 
U07:%x[0,0]/%x[1,0]/%x[2,0] 
U08:%x[-1,0]/%x[0,0] 
U09:%x[0,0]/%x[1,0]

#Bigram 
B
           

新建特征模板template文件,如图

自然语言处理 crf++命名实体识别

这个template使用的过程中一定要使用相对应的train.data,训练的格式为

调	O
查	O
范	O
围	O
涉	O
及	O
故	B-LOC
宫	I-LOC
、	O
历	B-LOC
博	I-LOC
、	O
尤	O
以	O
收	O
录	O
周	B-PER
恩	I-PER
来	I-PER
总	O
理	O
、	O
马	B-PER
骏	I-PER
烈	O
士	O
的	O
《	O
南	B-ORG
开	I-ORG
中	I-ORG
学	I-ORG
同	O
学	O
录	O
           

上面的这个是train.data 的训练格式,

在这个chunking里面打开cmd

敲入以下代码,这便是开始训练模型

crf_learn -a MIRA template train.data model
           

template就是我们上面定义的特征模板

训练好之后会产生一个model文件(产生的一个新文件)

model训练出来后进行测试,需要用到test.data 文件,训练的格式如下:

调	O
查	O
范	O
围	O
涉	O
及	O
故	O
宫	O
、	O
马	O
骏	O
烈	O
士	O
的	O
《	O
南	O
开	O
中	O
学	O
同	O
学	O
录	O
           

在chunking里面打开cmd

敲入以下代码,这便是开始模型预测

crf_test -m model test.data >> output.txt
           

这个时候会对test.data里的语句进行处理,并且将处理结果输出到output.txt文件夹下,处理结果如下

调	O	O
查	O	O
范	O	O
围	O	O
涉	O	O
及	O	O
故	O	B-LOC
宫	O	I-LOC
、	O	O
马	O	B-PER
骏	O	I-PER
烈	O	O
士	O	O
的	O	O
《	O	O
南	O	B-ORG
开	O	I-ORG
中	O	I-ORG
学	O	I-ORG
同	O	O
学	O	O
录	O	O
           

因为训练的语句只是一部分,所以测试的数据要是里面的一部分。上面只是简单的例子说明,适用于这方面的初学者,我也是边学边记录自己的学习过程。

接下来就要训练更多的数据语料了,用的多的就是人民日报的语料,比较实用。训练语料下载都需要积分,如果有需要的可以直接留言联系我,看到就回复了。新手,勿喷,谢谢。

cr F