赞
踩
NER本质上是一个分类问题。利用bert对文本进行编码,对编码接入全连接或lstm+CRF,接入softmax即可得到每个类别的概率,最大概率对应的类别即为对应字的类别。
数据:病例本标签数据(数据在比赛https://www.biendata.com/competition/ccks_2020_2_1/)中,标签一共6类,分别为[‘药物’, ‘实验室检验’, ‘疾病和诊断’, ‘手术’, ‘影像检查’, ‘解剖部位’]。
本案例的代码是修改github上的项目而来:
https://github.com/ProHiryu/bert-chinese-ner
import bert import modeling
model = modeling.BertModel(
config=bert_config,
is_training=is_training,
input_ids=input_ids,
input_mask=input_mask,
token_type_ids=segment_ids,
use_one_hot_embeddings=use_one_hot_embeddings
)
#取出bert模型中的序列数据
output_layer = model.get_sequence_output()
4、bert中文预训练模型的加载
tf.train.init_from_checkpoint(init_checkpoint, assignment_map)
在bert模型中取出其中每一层的隐含层序列,组合后输入全连接层(或lstm+CRF层),经过softmax输出获得每一类的概率。
#对output_layer数据接入全连接层(或者lstm+CRF)
logits = tf.matmul(output_layer, output_weight, transpose_b=True)
logits = tf.nn.bias_add(logits, output_bias)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。