4分钟

Unigram 特征模板

1. 给定一个Unigram 特征模板 U01:%x[0,1],它会生成 个特征函数,其中 为训练数据的行数(剔除空白行,因为空白行是sentence 的分隔符)。 每个特征函数为:

func1 = if (output = LABEL1 and feature="U01:xx1") return 1 else return 0
func2 = if (output = LABEL2 and feature="U01:xx2") return 1 else return 0
func3 = if (output = LABEL3 and feature="U01:xx3") return 1 else return 0
....
funcM = if (output = LABELM and feature="U01:xxM") return 1 else return 0

其中:

  • LABEL1,...,LABELM 就是训练文件中,每一行的标记。
  • feature="U01:xx1",...,feature="U01:xxM" 就是训练文件中,每一行由 U01:%x[0,1] 指定的、从该行提取到的特征。

2. 事实上,上述生成的特征函数会有大量重复。 假设标记的种类一共有 L 个,由 U01:%x[0,1] 指定的、从该行提取到的特征的种类一共有 N 个, 则特征函数的种类一共有 L × N个。 CRF++ 会按照 L 种标记, N 种特征来自动生成 L × N 个特征函数。