介绍下BiLSTM+CRF吧
Q1、为啥搞一个LSTM+CRF的hybrid model?
用LSTM,整体的预测accuracy是不错indeed, 但是会出现上述的错误:在B之后再来一个B。这个错误在CRF中是不存在的,因为CRF的特征函数的存在就是为了对given序列观察学习各种特征(n-gram,窗口),这些特征就是在限定窗口size下的各种词之间的关系。然后一般都会学到这样的一条规律(特征):B后面接E,不会出现E。这个限定特征会使得CRF的预测结果不出现上述例子的错误。
那就把CRF接到LSTM上面,把LSTM在timestep上把每一个hiddenstate的tensor输入给CRF,让LSTM负责在CRF的特征限定下,依照新的loss function,学习出一套新的非线性变换空间。
Q2、CRF++源码
- 输入
He reckons the current account deficit will narrow to only #1.8 billion in September .”代表一个训练句子xx,而CRF++要求将这样的句子拆成 每一个词一行并且是固定列数的数据,其中列除了原始输入,还可以包含一些其他信息,比如第二列包含了POS信息,最后一列是Label信息。而不同的训练序列与序列之间的相隔,就靠一个空白行来区分。
- 特征模版
1、“%x[row, column]” 代表获得当前指向位置向上或向下偏移|row|行,并指向第column列的值。
2、CRF++中主要有两种特征模版,Unigram和Bigram 模版,注意Unigram和Bigram是相对于输出序列而言,而不是相对于输入序列。对于”U01:%x[0,1]”这样一个模版,上面例子的输入数据会产生如下的特征函数:
3、
本文链接: https://satyrswang.github.io/2021/04/14/CRF后续/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!