0
点赞
收藏
分享

微信扫一扫

NLP-信息抽取-NER-2015-BiLSTM+CRF(三):命名实体识别【实战】

一、项目步骤

1、读取数据集

数据集共三个文件,训练集,交叉测试集和测试集,文件中每一行包含两个元素,字和标识,每一句话间由一个空格隔开。

2、处理数据集

更新数据集中的标签【BIO转为BIOSE体系】

  • 单独的: B-LOCS-LOC;
  • 两个的:B-LOC,I-LOCB-LOC,E-LOC;
  • 三个的:B-LOC,I-LOC,I-LOCB-LOC, I-LOC, E-LOC;

给每个char和tag分配一个id,得到一个包含所有字的字典dict,以及char_to_id, id_to_char, tag_to_id, id_to_tag, 将其存在map.pkl中。

3、准备训练数据

  • 将训练集中的每句话变成4个list;
  • 第一个list是字,如[今,天,去,北,京];
  • 第二个list是char_to_id [3,5,6,8,9];
  • 第三个list是通过jieba分词得到的分词信息特征,如[1,3,0,1,3] (1,词的开 始,2,词的中间,3,词的结尾,0,单个词);
  • 第四个list是target,如0,0,0,2,3

4、BatchManager

  • 将训练集划分成若干个batch;
  • 每个batch有20个句子;
  • 划分时,是现按句子长度从大到小排列。

5、配置model的参数

6、构建模型

  1. input: 输入两个特征,char_to_id的list以及通过jieba得到的分词特征 list
  2. embedding: 预先训练好了100维词向量模型,通过查询将得到每个字的 100维向量,加上分词特征向量,输出到drouput(0.5)
  3. bi-lstm
  4. project_layer:两层的Wx+b 逻辑回归
  5. loss_layer:内嵌了CRF
举报

相关推荐

0 条评论