一套针对中文实体识别的BLSTM-CRF解决方案,主要包括:
- 数据处理
- 模型构建
- 模型训练
- 模型测试
- 服务部署(thrift和flask)两种方式
实现过程的一些要点记录:
-
粒度的问题。
字符和词均有尝试,整体而言,差别不是太大,约%1左右,实际中应用中如果实体词比较长,词的效果稍微好点。
-
引入外部特征加入。
主要目的是丰富标准的blstm+crf中Word Embedding层的特征学习问题,实际过程中,加入词的特征、词性POS tag信息,会提高2%+的性能,整体看来,外部加入的特征越多,越要好一点,多多益善。
-
实体概率计算的问题。
主要解决应用的时候,用于某种程度的置信度的判断,主要计算方法: (输出标签概率之积)的1/len的幂。举例如下:
比如输出实体“刘德华”的实体计算概率如下: “刘德华”对应的输出标签为B-Per、M-Per、E-Per。 P(B-Per,M-Per,E-Per)=P(B-Per)*P(M-Per|B-Per)*P(E-Per|B-Per,M-Per)
考虑到实体长度的影响,进行求幂: Pr(B-Per,M-Per,E-Per)=pow(P(B-Per,M-Per,E-Per), 1/len(B-Per,M-Per,E-Per))