本文是对bilstm+crf模型中的crf进行讲解,并不是完整的条件随机场的讲解。
如果对命名实体识别还不清楚的同学,可以先看这篇文章。代码在这里。
模型如下图所示。
我们已知lstm的输出就是每个字标注的概率。假设lstm输出概率如下所示。这里为了方便,只写了 BMEO 4种标注结果。更多的话也是相同的。
而crf首先在每句话的前面增加一个<start>
字,在每句话的结尾增加一个<end>
字。
然后定义了一个转移矩阵,转移矩阵中的数值代表前面一个字标注结果到下一个字的标注结果的概率。比如下面矩阵中的第一行,代表的含义就是前一个字标注为start,下一个字标注为B 的概率是0.6,标注为O的概率就是0.4。这个矩阵是随机初始化的,里面的数值也是通过梯度下降自动更新的。