1:如何在电脑上运行Pocket CRF
⑴:Windows环境
下载Pocket CRF包,解压,同dos进入解压的目录。
使用如下命令学习模型:crf_learn chunking_template chunking_train model
在学习后,使用如下命令测试:crf_test model chunking_key result
当你看到标注精度:0.936,的时候,说明工具包在你的电脑上正确运行。
⑵:Linux环境
生成crf_test的命令:make
mv crf crf_test
修改main.cpp,将391行的 “returnmain_test(argc,argv);”修改为 “return main_learn(argc,argv);”
使用如下命令生成crf_learn:make
mvcrf crf_learn
训练和测试的命令如下:
./crf_learnchunking_template chunking_train model
./crf_test model chunking_key result
2:训练文件的格式
训练数据在文件中排列成表格的样式。每一个表格包含一个标注的序列。使用输入的特征区分各个表格。表格中的每一行包含观察值,标注,他们之间用tab分隔符隔开。列的数量在整个文本中都是固定的,最后一列是标注序列。每行的每一项是一个观察值,用空格分开。线面是一个例子:
· At IN IN DT JJ O
· the DT IN DT JJ NN B
· same JJ IN DT JJ NN , I
· time NN DT JJ NN , PRP I
· , , JJ NN , PRP VBZ O
· he PRP NN , PRP VBZ RB B
· remains VBZ , PRP VBZ RB JJ O
· fairly RB PRP VBZ RB JJ IN O
· pessimistic JJ VBZRB JJ IN DT O
· about IN RB JJ IN DT NN O
· the DT JJ IN DT NN IN B
· outlook NN IN DT NN IN NNS I
· for IN DT NN IN NNS , O
· imports NNS NN IN NNS , VBN B
· , , IN NNS , VBN VBD O
· given VBN NNS , VBN VBD JJ O
· continued VBD ,VBN VBD JJ NN B
· high JJ VBN VBD JJ NN CC I
· consumer NN VBD JJ NN CC NN I
· and CC JJ NN CC NN NNS I
· capital NN NN CC NN NNS NNS I
· goods NNS CC NN NNS NNS . I
· inflows NNS NN NNS NNS . I
· . . NNS NNS . O
·
:如果你使用的时实数类型的特征,每个观察值就需要格式化为:FeatureStrin:FeatureValue,的形式;例子
· At:1 IN:1 DT:1 IN:1 JJ:1 O
· the:1 DT:1 DT:1 IN:1 JJ:1 NN:1 B
· same:1 JJ:1 ,:1 DT:1 IN:1 JJ:1 NN:1 I
· time:1 NN:1 ,:1 DT:1 JJ:1 NN:1 PRP:1 I
· ,:1 ,:1 ,:1 JJ:1 NN:1 PRP:1VBZ:1 O
· he:1 PRP:1 ,:1 NN:1 PRP:1 RB:1VBZ:1 B
· remains:1 VBZ:1 ,:1JJ:1 PRP:1 RB:1 VBZ:1 O
3:特征模板的格式
特征模板文件的每一行包含一个模板。每一模板的设计需要符合如下格式:%x[i1,j1]%x[i2,j2]... %x[im,jm]%y[k1]%y[k2]...%y[0]
加粗的部分是自定义参数。x的第一个参数(i1,i2,…,im)是相对于当前词的相对位置,第二个参数(j1,j2,j3…,jm)是列的绝对位置。Y的索引(k1,k2,…km)必须按升序排列。
4:crf_learn 参数选项的意义
-h 显示帮助信息
-c 训练优先级,如果选项是“-a 0“,那么就是一个高斯平滑因素,对于较小的值,CRF趋向(underfit)从左侧符合训练实例,对于较高的值,CRF trend to overfit。
“-a 2“:是一种被动入侵式的学习(训练)方式。
-f 频率阈值。出现的特征如果小于这个阈值,将被忽略。通常,设置“-f 1“来使用所有的特征值。当特征太多无法读入内存的时候,设置较高的值去除稀有特征。
-p 训练时使用的线程的数量。
-I 最大迭代次数,默认值10000
-e 训练精度
-d LBFGS的迭代深度。
-a 训练的算法。0:CRFs ;1:averaged perceptron;2:passive aggressive algorithm;3:L1 CRFs
-m crf训练的效率,0:把所有的数据保存在内存中,确保快速训练;1:将部分数据存放在磁盘上,减少内存使用。
5:crf_test参数含义
-h 帮助信息
-m 0 或者1,“-m 1“CRF将计算每个标记的边缘概率
-p 取值0或1,“-p1“crf将计算标注序列的概率
-n 显示n最佳输出