Hugging face 模型微调 - 命名实体识别
任务目标
1、投入目标任务的文本数据集重新训练哈工大已完成MLM任务预训练的roberta模型
2、使其能够完成下游文本的命名实体识别(专业领域的实体如:面积、金额、户型等)
载入模型
模型下载地址,只需下载模型相关文件即可,config.json、pytorch_model.bin、vocab.txt
最后一层的num_labels为实体标记的总类数,每一类实体都有两种标记,一种代表实体开始,一种代表实体结束,在本文设计中实体结束的标记为实体开始的的序列+1的值
1 | from transformers import AutoTokenizer |
构建训练数据
本文训练数据参照数据集下载地址的结构进行构造,内部数据结构如下,具体信息可见下载链接中readme文件描述
1 | 现 O |
其中labeldic
存放的就是实体的开始标记,例如VALUE.AREA
的开始标记(B-VALUE.AREA
)为1,则结束标记以及中间标记(I-VALUE.AREA
)为2
1 | import numpy as np |
完成预处理的data变量中的训练样本数据格式如下:
1 | ([['现在住欧洲花园160左右房子也重新装修了'],[''],...], |
定义优化器和学习率
1 | import torch |
模型训练
1 | from tqdm import tqdm |
模型预测
1 | import numpy as np |
输出结果:
1 | [0 0 0 0 0 0 0 0 9 0 0 0 0 0 1 2 2 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 0 0 0 0 0 |