首先如果我们想像一下,如果没有加crf,billstm能不能做序列标注,也可以。它其实就是转化为了一个多分类问题,但是加入了crf时,就加入了一个约束,效果会更准确。至于这个约束到底是什么?后文会提到。
围绕这两个问题来进行
- 效果为什么会更好?
- loss函数如何计算的?
- 线性crf又是什么?
问题1 看CRF的作用
以单词“中国”为例,它的真实标注应该是“B I",中国=“B I",但是经过lstm之后,选用得分最高对应的标签,得到的是”B B",这是通过得分的得到的标签,但这与实际的逻辑不符合。
在BIO问题下,i-organizatio和i-person显然是错误的。而CRF层能够学习到句子的前后依赖,从而加入一些约束来保证最终预测结果有效。
如何做到的?
通过引入转移分数来进行纠错。而不仅仅是根据lstm层的输出发射分数 去得到它的label。
转移分数是什么?
它表示的就是从标签B-PERSON到标签I-PERSON B-Organization I-Orgainization O END 标签的得分。
引入之后,词x的score=emit score+transimition score ,从而达到了纠错的效果。
定性分