一、BiLSTMCRF模型介绍BILSTM是双向的LSTM,本身是做信息捕获的,需要在上面加一层线性层进行输出标签的概率分布只用BILSTM可以做NER任务可以用发射分数最高的作为标签但是效果可能不是最佳的,因为他只考虑词的局部最高概率,不会考虑考虑整个语义.CRF模型负责生成转移分数,我们训练CRF也是为了获取转移分数矩阵Decoding Process 通过相加发射分数和转移分数,获取最佳的路径.CRF输出的是转移分数矩阵二、线性链条件随机场线性链输入序列x和输出标签序列y都是线性序列条件随机给定x的条件下输出y的条件概率分布需要满足马尔可夫性质场用图结构来描述概率依赖关系马尔科夫性质生成的标签只和前一个标签和后一个标签有关系与其他标签或者序列无关。线性链条件随机场图示三、发射分数和转移分数3.1发射分数发射分数由BILSTM线性层产生主要用于生成标签权重。执行流程用户输入序列进来首先进行向量化然后经过BILSTM的隐藏状态处理因为BILSTM是双向的LSTM所以得到的维度要乘以2最后经过一个线性层把维度转换为标签数即可。3.2转移分数转移分数越高转移的概率越大转移矩阵是线性CRF生成的转移分数矩阵:转移矩阵是可以学习的矩阵,可以通过训练得到准确的结果四、CRF最优序列计算方式发射分数根据标签的位置选择比如B-Person位置是0,1那么他的发射分数是E00转移分数则是根据标签的上下文来选择比如B-Person的下一个是I-Person那么就在第二个矩阵中选择0.93.五、Viterbi解码CRF输出的是转移分数矩阵需要使用viterbi解码的方式获取最终的最优路径原始结算最短路径的方法分别计算每条路径的长度然后比较大小Viterbi算法解决最短路径的先计算第一列所有的节点和第二列B1的和然后得到一个最小的只保留这一条然后B3计算的方法类似然后计算最后选出最短的即可