🚀 西班牙语TinyBERT + 命名实体识别(NER)
本模型是在我使用蒸馏法创建的西班牙语TinyBert基础上,针对NER-C数据集进行微调,以用于命名实体识别(NER) 下游任务。该模型的大小仅为55MB。
📚 详细文档
下游任务(NER)详情 - 数据集
我对数据集进行了预处理,并按照80/20的比例将其划分为训练集和开发集。
数据集 |
样本数量 |
训练集 |
8.7K |
开发集 |
2.2K |
B-LOC
B-MISC
B-ORG
B-PER
I-LOC
I-MISC
I-ORG
I-PER
O
评估集指标
指标 |
得分 |
F1 |
70.00 |
精确率 |
67.83 |
召回率 |
71.46 |
模型对比
模型 |
F1得分 |
大小(MB) |
bert-base-spanish-wwm-cased (BETO) |
88.43 |
421 |
bert-spanish-cased-finetuned-ner |
90.17 |
420 |
Best Multilingual BERT |
87.38 |
681 |
TinyBERT-spanish-uncased-finetuned-ner(本模型) |
70.00 |
55 |
💻 使用示例
基础用法
import torch
from transformers import AutoModelForTokenClassification, AutoTokenizer
id2label = {
"0": "B-LOC",
"1": "B-MISC",
"2": "B-ORG",
"3": "B-PER",
"4": "I-LOC",
"5": "I-MISC",
"6": "I-ORG",
"7": "I-PER",
"8": "O"
}
tokenizer = AutoTokenizer.from_pretrained('mrm8488/TinyBERT-spanish-uncased-finetuned-ner')
model = AutoModelForTokenClassification.from_pretrained('mrm8488/TinyBERT-spanish-uncased-finetuned-ner')
text ="Mis amigos están pensando viajar a Londres este verano."
input_ids = torch.tensor(tokenizer.encode(text)).unsqueeze(0)
outputs = model(input_ids)
last_hidden_states = outputs[0]
for m in last_hidden_states:
for index, n in enumerate(m):
if(index > 0 and index <= len(text.split(" "))):
print(text.split(" ")[index-1] + ": " + id2label[str(torch.argmax(n).item())])
'''
Output:
--------
Mis: O
amigos: O
están: O
pensando: O
viajar: O
a: O
Londres: B-LOC
este: O
verano.: O
'''
由 Manuel Romero/@mrm8488 创建
于西班牙用心打造 ❤️