train.txt
---
迈 v B N N N O
向 v E N N N O
充 nz B N N N O
满 nz M N N N O
希 nz M N N N O
望 nz E N N N O
的 uj W Y Y Y O
新 nz B N N N O
世 nz M N N N O
纪 nz E N N N O
— x W N N N O
— x W N N N O
一 m B N N N B_TIME
九 m M N N N M_TIME
九 m M N N N M_TIME
八 m M N N N M_TIME
年 m E N N N M_TIME
新 t B N N N M_TIME
年 t E N N N E_TIME
讲 n B N N N O
话 n E N N N O
( x W Y Y Y O
附 n B N N N O
图 n M N N N O
片 n E N N N O
1 m W Y N N O
张 nr W N N N O
) x W Y Y Y O
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 文件说明:
在每一个模板中,特殊宏 *%x[row,col]* 用于指定输入数据的token。*row* 从当前的token指定到相对的位置,*col*指定列的绝对位置。
![avtr](https://s1.ax1x.com/2018/08/22/Po5i2d.png)
* 假设当前token为第三行的 充 ,U00 -- U04,就是取到 迈 向 充 满 希[unigram]。
* U05-U09,它们其实就是像U00--U04这样的特征的组合。U08、U09这样的叫bigram(和下面的Bigram不同,一般而言比Bigram灵活一点),U05-U07叫trigram。其实CRF++工具根据模板生成的特征也不过是一些字符串和对应的编号,然后通过学习得到特征函数的权重。
* 模板怎么写,这取决于你,一般来说会有一个窗口(即考虑当前token前几个后几个),大小自定义,源码里好像限制窗口最大为17,如果你的特征有多列,可能要多写些像U00-U04这样的模板,不同的地方在于[,]里的第二项还有像U05-U09这样的组合特征模板,下面的Bigram特征一般没用,用的话也是最简单的B。
crf++ 工具 templates
最新推荐文章于 2022-04-12 18:44:34 发布