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,...,LABELM
、feature="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
,则它表示:由当前的输出标记和前一个输出标记的联合生成的特征函数。
学员评价