8分钟

使用

1. CRF++ 并没有提供Python 的训练结构,只提供了Python 的测试接口。

2. CRFPP.Tagger 对象:调用解码器来解码。

CRFPP.Tagger("-m ../model -v 3 -n2")

创建对象,其中字符串中的内容就是crf_test 程序执行的参数(不包含测试文件)。

  • .add('line'):添加一行待解码的字段。
  • .clear():清除解码器的状态。
  • .parse():解码。它会修改解码器的状态。
  • .xsize():字段数量。
  • .size():样本行的数量。
  • .ysize():标记数量。

3. 使用示例:

import CRFPP
tagger = CRFPP.Tagger("-m ../model -v 3 -n2")
tagger.clear()
tagger.add("Confidence NN")
tagger.add("in IN")
tagger.add("the DT")
tagger.add("pound NN")
tagger.add("is VBZ")
tagger.add("widely RB")

​print "column size: " , tagger.xsize()
print "token size: " , tagger.size()
print "tag size: " , tagger.ysize()​

print "tagset information:"
ysize = tagger.ysize()
for i in range(0, ysize-1):
 print "tag " , i , " " , tagger.yname(i)​
tagger.parse()
print "conditional prob=" , tagger.prob(), " log(Z)=" , tagger.Z()
size = tagger.size()
xsize = tagger.xsize()

​for i in range(0, (size - 1)): 
 for j in range(0, (xsize-1)):  
  print tagger.x(i, j) , "\t", 
 print tagger.y2(i) , "\t",  
 print "Details", 
 for j in range(0, (ysize-1)):  
   print "\t" , tagger.yname(j) , "/prob=" , tagger.prob(i,j),"/alpha=" , tagger.alpha(i, j),"/beta=" , tagger.beta(i, j),  
   print "\n",
  
​print "nbest outputs:"
for n in range(0, 9): 
 if (not tagger.next()):  
  continue  
 print "nbest n=" , n , "\tconditional prob=" , tagger.prob()  
 # you can access any information using tagger.y()...