命名实体识别(NER)实战demo-LSTM+CRF

命名实体识别(Named Entity Recognition,简称NER),又称作“专名识别”,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。

该篇面向的更多是开始做命名实体识别的小白,推荐几篇对NER介绍非常详细的文章
流水的NLP铁打的NER:命名实体识别实践与探索
命名实体识别的一点经验

目录

  • 简介
  • 项目资源
  • 项目文件
  • 代码运行过程中的问题
    • 环境配置
    • 报错及解决方法

简介

最开始接触知识图谱的时候可能更多理解的是概念,对实战没有很多认识,之后慢慢有开始学习知识图谱的构建。认识到其实命名实体识别本质是多分类任务(定义好实体类别后,对每个字词进行分类),具体的分类基于标签体系(常见的标签体系有IO,BIO,BMEWO,BMWEO+),一般标签体系越复杂,准确性越高。

命名实体识别时,网上找了大量资源,但最初的学习效果并不好,看了很多内容还是不知道真正该怎么做。直到b站看到一个视频TensorFlow:BERT框架项目实战,其中一节内容是医学糖尿病数据命名实体识别,详细介绍了code和模型,让我收获很多。具体资源可以在自然语言处理实战项目(基于深度学习)找到,唐宇迪老师讲的真的很清晰透彻!之前很多东西都是跟着老师视频学的(PS:b站有很多视频,因为直接买课程的话会比较贵)。

命名实体识别(NER)实战demo-LSTM+CRF_第1张图片
命名实体识别(NER)实战demo-LSTM+CRF_第2张图片

于是乎找到NER的code后拿来开始跑,但其中碰到了许多问题,最终解决后想把整个过程记录下来,感兴趣的uu可以一起学习呀~

项目资源

来自唐宇迪老师的项目资源 NLP通用框架BERT

可以直接在百度网盘下载

链接: https://pan.baidu.com/s/13SrM1V08eeVeFfgRbqWe_w 提取码: uphm

项目文件

用的是tensorflow,主要是keras做

  • data
    – test_data.data
    – train_data.data
  • model
    – config.pkl
    – crf.h5
  • train.py(主函数)
  • bilsm_crf_model.py(LSTM+CRF模型)
  • process_data.py(数据处理函数)
  • val.py(预测函数)

代码运行过程中的问题

环境配置

TensorFlow 1.14.0 + Keras 2.2.5 on Python 3.6.

我用的IDE是Pycharm,用的是anaconda下新建的环境(也可以用已有的编译器,但是相关库的版本对应问题可能不太好解决,对于NER任务的话,主要是python、tensorflow、keras版本)

1、对于版本对应问题,可以看这篇文章 tensorflow + python + keras 版本对应关系

2、对于pycharm中配置anaconda,可以看这篇文章 Anaconda+pycharm+tensorflow安装和环境配置(win10)

  • cmd输入conda create --name ner python=3.6创建一个环境,ner是环境名,名字起什么都可以,这里选择的是python3.6
  • 输入conda info --envs看我们现有的环境(ner是否创建成功)
  • 输入activate ner激活环境
  • 输入pip install命令安装相应版本的tensorflow和keras
  • pycharm中新建project项目,选择interpreter时选anaconda下的python.exe

3、需要下载CRF相关库,这里直接根据 keras-contrib : Keras community contributions 进行即可,命令“pip install git+https://www.github.com/keras-team/keras-contrib.git”

这里需要注意要提前下载git,直接pip install会报错,需要用conda install git

报错及解决方法

1、TypeErmor: Tensors in list passed to ‘values’ of ‘ConcatV2’ 0p have types [bool,float32] that don’t all match.
请添加图片描述
解决方法:将mask_zero=True删除 ,因为只有第一次运行会报这个错误,之后再运行就不会了,所以第一次可以删除后再恢复

2、importEPror: Failed to impont 'pydot '. Please install 'pydot '. For example with 'pip install pydot .
请添加图片描述
解决方法:

conda install graphviz
conda install pydotplus
pip install pydot

3、AttributeError: ‘str’ object has no attribute 'deco
请添加图片描述
找到对应文件,例如下图中所示的就是saving.py文件
请添加图片描述
找到所有的decode相关代码,将decode改为encode即可,例如:

将query = query.decode(errors=‘replace’)改成query = query.encode(errors=‘replace’)

你可能感兴趣的:(知识图谱,命名实体识别,NER,LSTM,CRF,实战demo)