如果我的开源模型对您有所帮助,请考虑支持我为大家构建小型、实用的 AI 模型(也帮我负担医学院的学费/在经济上帮助我的父母)。谢谢!
distilbert-NER 是 DistilBERT 的微调版本,而 DistilBERT 是 BERT 模型的蒸馏变体。与 BERT 相比,DistilBERT 参数更少,因此体积更小、速度更快、效率更高。distilbert-NER 是专门针对命名实体识别(NER) 任务进行微调的。
该模型能准确识别与 BERT 同类模型相同的四种实体类型:地点(LOC)、组织(ORG)、人物(PER)和其他(MISC)。尽管是一个更紧凑的模型,distilbert-NER 在 NER 任务中表现出稳健的性能,在体积、速度和准确性之间取得了平衡。
该模型是在 CoNLL-2003 命名实体识别 数据集的英文版本上进行微调的,该数据集因其全面且多样化的实体类型而广受认可。
可通过 Transformers 的 pipeline 来使用此模型进行 NER,与 BERT 模型的使用方式类似。
import argparse
import torch
from openmind import pipeline,is_torch_npu_available
from openmind import AutoTokenizer
from openmind_hub import snapshot_download
from transformers import AutoModelForTokenClassification
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument( "--model_name_or_path", type=str, help="Path to model", default=None)
args = parser.parse_args()
return args
if __name__ == '__main__':
if is_torch_npu_available():
device = "npu:0"
else:
device = "cpu"
args = parse_args()
if args.model_name_or_path:
model_path = args.model_name_or_path
else:
model_path = snapshot_download(
"ChongqingAscend/distilbert-NER",
revision="main",
resume_download=True,
ignore_patterns=["*.h5", "*.ot", "*.msgpack"]
)
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForTokenClassification.from_pretrained(model_path).to(device)
nlp = pipeline("ner", model=model, tokenizer=tokenizer)
example = "My name is Wolfgang and I live in Berlin"
ner_results = nlp(example)
print(ner_results)
distilbert-NER 的性能与其在 CoNLL-2003 数据集上的训练紧密相关。因此,对于与该训练集存在显著差异的文本数据,其效果可能有限。用户应注意训练数据中固有的潜在偏差,以及在复杂句子中可能出现实体分类错误的情况。