三、Python接口
3.1 安装
进入源码下的
python
目录,执行命令:python3.6 setup.py build
python3.6 setup.py install
如果希望安装到指定目录,则执行命令:
python3.6 setup.py install --prefix=PREFIX
3.2 使用
CRF++
并没有提供Python
的训练结构,只提供了Python
的测试接口。CRFPP.Tagger
对象:调用解码器来解码。CRFPP.Tagger("-m ../model -v 3 -n2")
创建对象,其中字符串中的内容就是
crf_test
程序执行的参数(不包含测试文件)。.add('line')
:添加一行待解码的字段。.clear()
:清除解码器的状态。.parse()
:解码。它会修改解码器的状态。.xsize()
:字段数量。.size()
:样本行的数量。.ysize()
:标记数量。
使用示例:
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()...