自然语言处理的方法有很多种,crf++是也是使用比较多的一种方法,关于crf++ 的详细解释可以参考网上的资料,这里不再做介绍,这里直接说的就是用crf++进行命名实体识别。
crf++ 进行自然语言处理的时候需要下载一个crf工具包,然后使用工具包进行处理,我使用的是CRF++ 0.58版本的,这个在网上都可以搜到下载,压缩后这个是里面的内容
将crf_learn和crf_test复制到这个路径
然后需要新建一个训练命名实体的模板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文件,如图
这个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
因为训练的语句只是一部分,所以测试的数据要是里面的一部分。上面只是简单的例子说明,适用于这方面的初学者,我也是边学边记录自己的学习过程。
接下来就要训练更多的数据语料了,用的多的就是人民日报的语料,比较实用。训练语料下载都需要积分,如果有需要的可以直接留言联系我,看到就回复了。新手,勿喷,谢谢。