4分钟

Bigram 特征模板

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

func2 = if (output = LABEL2/LABEL1 and feature="U01:xx2") return 1 else return 0
func3 = if (output = LABEL3/LABEL2 and feature="U01:xx3") return 1 else return 0
func4 = if (output = LABEL4/LABEL3 and feature="U01:xx4") return 1 else return 0
....
funcM = if (output = LABELM/LABELM_1 and feature="U01:xxM") return 1 else return 0

其中:

  • LABEL1,...,LABELMfeature="U01:xx1",...,feature="U01:xxM" 的意义与Unigram 中的相同。
  • Bigram 中,特征函数中的output 是当前的输出标记和前一个输出标记的联合,这也是它称作bigram 的原因。 注意:它联合的是标记,而不是特征。特征的联合由宏语句来实现。

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

3. 当标记的种类 L 较大时, Bigram 会生成非常多的特征函数,其中非常多的特征函数在样本中的返回值只有少量的1 。 这中情况下,模型的训练和测试将会非常低效。

4. 如果某一行的内容只有一个字符 B,则它表示:由当前的输出标记和前一个输出标记的联合生成的特征函数。