CRF++ 0.58 在Windows中 运行与安装

CRF++ 0.58 在Windows中 运行与安装


可以选择example里的某个例子做测试,比如选chunking。将crf_learn.exe;crf_test.exe;libcrfpp.dll三个文件复制到到,含有exec.sh;template;test.data;train.data的文件夹(chunking)里。

cmd

cd进入该文件夹

c:\>F:  (直接写硬盘名字即可进入该盘)

F:\>cd CRF++0.58\example\seg

F:\CRF++0.58\example\seg>crf_learn template train.data model 

  训练数据

这个训练过程的时间、迭代次数等信息会输出到控制台上(感觉上是crf_learn程序的输出信息到标准输出流上了),如果想保存这些信息,我们可以将这些标准输出流到文件上,命令格式如下:

% crf_learn template_file train_filemodel_file >> train_info_file


% crf_learn -f 3 -c 1.5 template_filetrain_file model_file

-a CRF-L2 or CRF-L1

规范化算法选择。默认是CRF-L2。一般来说L2算法效果要比L1算法稍微好一点,虽然L1算法中非零特征的数值要比L2中大幅度的小。

-c float

这个参数设置CRF的hyper-parameter。c的数值越大,CRF拟合训练数据的程度越高。这个参数可以调整过度拟合和不拟合之间的平衡度。这个参数可以通过交叉验证等方法寻找较优的参数。

-f NUM

这个参数设置特征的cut-off threshold。CRF++使用训练数据中至少NUM次出现的特征。默认值为1。当使用CRF++到大规模数据时,只出现一次的特征可能会有几百万,这个选项就会在这样的情况下起到作用。

-p NUM

如果电脑有多个CPU,那么那么可以通过多线程提升训练速度。NUM是线程数量。


crf_test -m model test.data >output.txt   测试数据

% crf_test -m model test.data

可以使用重定向,将结果保存下来

% crf_test -m model_file test_files >result_file

-v可以显示预测标签的概率值,-n可以显示不同可能序列的概率值,


conlleval.pl < output.txt   评估效果

.pl后缀为Perl文件,所以需要安装Perl

conlleval.pl为http://www.cnts.ua.ac.be/conll2000/chunking/conlleval.txt将这个贴到txt,然后重命名为conlleval。我当时这么做的。

特别注意:output.txt在CRF++输出中空格为TAB键,需要全部替换为真正空格键。conlleval.pl识别的是空格键。


train.data和test.data的格式

每行的格式为:分词后的词词性标注 标签

中间是空格隔开;空行表示句子的边界;分词后的词和词性标注是NLPIR(原ICTCLAS)生成的结果;标签O表示不是目标值,PLACE表示目标值,若一个词被分开了,则B-PALCE为第一个词,I-PLACE为接着的词

train.data的格式

Confidence NN B-NP
in IN B-PP
the DT B-NP
pound NN I-NP
is VBZ B-VP
widely RB I-VP
expected VBN I-VP
to TO I-VP
take VB I-VP
another DT B-NP
sharp JJ I-NP
dive NN I-NP
if IN B-SBAR
trade NN B-NP
figures NNS I-NP
for IN B-PP
September NNP B-NP
, , O


即第一列和第二列都是已知的数据,第三列是要预测的标注

test.data的格式

Rockwell NNP B
International NNP I
Corp. NNP I
's POS B
Tulsa NNP I
unit NN I
said VBD O
it PRP B


result.data的格式

Rockwell NNP B B
International NNP I I
Corp. NNP I I
's POS B B
Tulsa NNP I I
unit NN I I
said VBD O O
it PRP B B
signed VBD O O
a DT B B


template格式

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


U10:%x[-2,1]
U11:%x[-1,1]
U12:%x[0,1]
U13:%x[1,1]
U14:%x[2,1]
U15:%x[-2,1]/%x[-1,1]
U16:%x[-1,1]/%x[0,1]
U17:%x[0,1]/%x[1,1]
U18:%x[1,1]/%x[2,1]
U20:%x[-2,1]/%x[-1,1]/%x[0,1]
U21:%x[-1,1]/%x[0,1]/%x[1,1]
U22:%x[0,1]/%x[1,1]/%x[2,1]
# Bigram
B


其中Unigram/Bigram是指输出token的Unigram/Bigrams,而不是特征。

i. 其中#开头的行不起作为,为注释;

ii. 行与行之间可以有空行;

iii.Unigram的特征前使用字母U,而Bigram的特征前使用字母B。



你可能感兴趣的:(机器翻译,数据挖掘,CRF,自然语言处理,词性标注,中文分词工具)