当前位置:   article > 正文

自然语言处理入门(一)--Keras实现BiLSTM+CRF中文命名实体识别_keras 中文实体识别

keras 中文实体识别

**

自然语言处理入门(一)–Keras实现BiLSTM+CRF中文命名实体识别

**

1. 这篇文章主要关于环境搭建以及遇到的一些bug等一些基础的梳理

  • 参照的开源项目进行学习,地址是https://github.com/F-debug/Medical-named-entity-recognition
  • 使用的python版本是3.6,keras版本是2.3.1,tensorflow版本是2.2.0
  • 版本真的很重要,之前的版本keras是2.4.3经常会出一些错误,后来重新开始搭建的环境参照的是https://docs.floydhub.com/guides/environments/

2. 正确使用版本后没有问题,项目可以跑通,这是利用lstm_train.py跑通的结果
结果图1-1
结果图1-2
但仍然存在问题,

plt.plot(history.history['accuracy'])
  • 1

这句代码里网络上给出的结果是将“accuracy”改为“acc”,但实际上仍有错误,不过暂时不影响模型的训练
3.现在整理一下研究思路
模型参考的这篇博文https://www.cnblogs.com/vipyoumay/p/ner-chinese-keras.html
其中BiLSTM+CRF的结构如下,很清晰
图2 BiLSTM+CRF模型图
将已经标注好的训练样本送入进行训练即可

4.一些常见bug

(1)TypeError: Tensors in list passed to ‘values’ of ‘ConcatV2’ Op have types [bool, float32] that don’t match

情况一:
keras=2.3.1,tensorflow=2.2.0,keras_contribute=2.0.8

这个是因为版本的修改问题,可以修改crf.py 516行:

mask2 = K.cast(K.concatenate([mask, K.zeros_like(mask[:, :1])], axis=1),
  • 1

修改为

mask2 = K.cast(K.concatenate([mask, K.cast(K.zeros_like(mask[:, :1]), mask.dtype)], axis=1),
  • 1

这个是有效的,我的问题就在这里

情况二:
keras=2.3.1,tensorflow=1.3.1,keras=2.0.8

同样可以修改516,517行

mask2 = K.cast(K.concatenate([mask, K.zeros_like(mask[:, :1])], axis=1),
                           K.floatx())
  • 1
  • 2

修改为

mask2 = K.cast(K.concatenate([tf.to_float(mask), K.zeros_like(mask[:, :1])], axis=1),
                           K.floatx())
  • 1
  • 2

这个不清楚效果,有问题的话可以适用一下
其他情况欢迎大家补充.
(2)keras加载模型load_model报错——ValueError: Unknown layer: CRF

from keras.models import load_model
model = load_model(model_path) 
  • 1
  • 2

会报错,但具体原因没有弄清楚,希望懂的朋友可以讲解一下需要在load_model函数中添加custom_objects参数,来声明自定义的层
(用keras搭建bilstm-crf,在训练模型时,使用的是:from keras_contrib.layers.crf import CRF)

from keras_contrib.layers.crf import CRF, crf_loss, crf_viterbi_accuracy
model = load_model(model_path, custom_objects={"CRF": CRF, 'crf_loss': crf_loss,
                                               'crf_viterbi_accuracy': crf_viterbi_accuracy})
  • 1
  • 2
  • 3

修改为这样的代码后即可解决问题,亲测是有效的
–to be continued

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/367996
推荐阅读
相关标签
  

闽ICP备14008679号