条件随机场在实体识别等序列标注任务具有广泛的应用,作为当前工业界最为流行的深度学习框架,tensorflow良心提供了条件随机场的API,使用简洁方便。keras以tensorflow、theano等为后端,也是深受广大深度学习爱好者喜欢的深度学习框架,并得到越来越多的支持者。那么,在使用keras训练序列标注的模型时,是否也有现成的条件随机场API呢?当然,今天笔者就带来大家安装、调用keras版本的CRF。
一.源码安装keras-contrib
keras-contrib提供了CRF相关接口,读者可前往github下载源码并进行安装。安装过程如下图:
二.keras版本CRF的调用
(一)导入接口
from keras.optimizers import Adam
from keras.models import Model
from keras_contrib.layers import CRF
from keras_contrib.losses import crf_loss
(二) 调用接口
1.建立逻辑关系
# 实例化一个条件随机场对象
crf = CRF(units=tags_num, name='ner_tag')
# 用LSTM、BERT等神经网络抽取的特征喂入crf实例
ner_tag = crf(feature)
# 计算损失
ner_loss = crf_loss
# 计算准确率
ner_metrics = crf.accuracy
备注:
1.tags_num是标注类型的数量。
2.抽取feature的过程省略。
2.建立映射关系
ner_model = Model(inputs, ner_tag)
# loss = ner_loss
# metrics = [ner_metrics]
optimizer = Adam(0.001)
ner_model.compile(optimizer, loss=ner_loss, metrics=[ner_metrics])
备注:inputs是输入序列,shape为[batch_size, max_seq_length]。