基于 bi-LSTM和CRF的中文命名实体识别

测试网址

47.93.47.154:5000/txt/委托辩护人秦前坤,湖北尚卓律师事务所律师。指定辩护人钟翠芳,新疆星河律师事务所律师。

基于 bi-LSTM和CRF的中文命名实体识别

 

 

 

中文分词、词性标注、命名实体识别是自然语言理解中,基础性的工作,同时也是非常重要的工作。在很多NLP的项目中,工作开始之前都要经过这三者中的一到多项工作的处理。在深度学习中,有一种模型可以同时胜任这三种工作,而且效果还很不错--那就是biLSTM_CRF。

 

biLSTM,指的是双向LSTM;CRF指的是条件随机场。

基于 bi-LSTM和CRF的中文命名实体识别

biLSTM词性标注

本文是以字为单位进行处理。从下往上看,w0,w1...表示句子里面的字,经过biLSTM处理,输出每个字对应每个标签的分数,我们将最大数值表示对该字预测的标签。既然,biLSTM已经能够进行满足词性标注,那为什么还要再最后加上CRF层呢?

基于 bi-LSTM和CRF的中文命名实体识别

biLSTM词性标注

 

从这幅图中,可以看出,预测结果明显是错的,那为什么会出现这种错误呢,因为biLSTM只能够预测文本序列与标签的关系,而不能预测标签与标签之间的关系,标签之间的相互关系就是CRF中的转移矩阵。

基于 bi-LSTM和CRF的中文命名实体识别

biLSTM_CRF词性标注

这就是完整的biLSTM_CRF的模型图,文本序列经过biLSTM模型处理,输出结果传入CRF层,最后输出预测结果。
下面,进入正题,biLSTM_CRF模型在tensorflow中的实现。

作者:Nlp_小菜

运行环境

python 3.6
tensorflow 1.4