最近复习了命名实体识别的项目,做一下记录。
-
数据集
数据集使用的是人民日报已经标注好的新闻数据,概况:
主要的任务是识别人名(nr)、地名(ns)和组织结构名(nt)
项目使用的是字符级的embedding,因此在数据预处理的过程中,把句子切分成单个的字,仅保留nr,nt,ns这三种标识,如(中共中央/nt,变为: 中/E_nt,共/M_nt,中/M_nt,央/E_nt),其他的标识设为0,(如 同胞/n,变为: 同/0,胞/0),然后把标点符号去掉。 -
模型
模型使用的双向LSTM+CRF,首先使用双向lstm对句子进行编码,双向lstm的输出进全连接层,得到句子中每个字的预测tag,然后使用条件随机场CRF,最大似然估计计算损失函数以及viterbi算法给出最好的标签。如下图所示:
-
结果
使用的评价指标是,准确率,召回率以及F1值,其中f1值能达到89%。 -
总的来说模型很简单,重要的是对条件随机场的理解,后面会继续更新条件随机场的原理理解。
-
附录(项目过程中用到的一些不太会用的函数)
1、 Python中 sys.argv[]的用法简明解释
2、python ast语法分析
3、 如何使用Python 3替换不推荐使用的compiler.ast flatten函数?