项目介绍:distilcamembert-base-ner
DistilCamemBERT-NER 是一款专为法语命名实体识别(NER)任务而调优的模型。这款模型的基础是 DistilCamemBERT,它受 Jean-Baptiste/camembert-ner 的启发而创建,后者基于 CamemBERT 模型构建。CamemBERT 模型在大规模生产阶段可能会面临推理成本的问题,为了解决这一问题,开发者通过 DistilCamemBERT 将推理时间缩短了一半,但能耗不变。
数据集
本项目中使用的数据集为 wikiner_fr,其中包含约 17 万句带有以下五类标签的句子:
- PER:人物
- LOC:地点
- ORG:组织
- MISC:杂项实体(如电影名称、书籍等)
- O:背景信息(不属于实体)
评估结果
模型的整体表现优异,具体数据如下:
类别 | 精确度 (%) | 召回率 (%) | F1 值 (%) | 支持(#子词) |
---|---|---|---|---|
整体 | 98.17 | 98.19 | 98.18 | 378,776 |
人物 (PER) | 96.78 | 96.87 | 96.82 | 23,754 |
地点 (LOC) | 94.05 | 93.59 | 93.82 | 27,196 |
组织 (ORG) | 86.05 | 85.92 | 85.98 | 6,526 |
杂项 (MISC) | 88.78 | 84.69 | 86.69 | 11,891 |
背景 (O) | 99.26 | 99.47 | 99.37 | 309,409 |
基准测试
该模型的性能与 2 个参照模型进行比较,基于 f1 分数进行评估。所有测量在 AMD Ryzen 5 4500U @ 2.3GHz(6 核)上进行:
模型 | 时间 (ms) | 人物 (%) | 地点 (%) | 组织 (%) | 杂项 (%) | 背景 (%) |
---|---|---|---|---|---|---|
cmarkea/distilcamembert-base-ner | 43.44 | 96.82 | 93.82 | 85.98 | 86.69 | 99.37 |
Davlan/bert-base-multilingual-cased-ner-hrl | 87.56 | 79.93 | 72.89 | 61.34 | n/a | 96.04 |
flair/ner-french | 314.96 | 82.91 | 76.17 | 70.96 | 76.29 | 97.65 |
如何使用 DistilCamemBERT-NER
以下示例代码展示了如何在 Python 中使用:
from transformers import pipeline
ner = pipeline(
task='ner',
model="cmarkea/distilcamembert-base-ner",
tokenizer="cmarkea/distilcamembert-base-ner",
aggregation_strategy="simple"
)
result = ner(
"Le Crédit Mutuel Arkéa est une banque Française, elle comprend le CMB "
"qui est une banque située en Bretagne et le CMSO qui est une banque "
"qui se situe principalement en Aquitaine. C'est sous la présidence de "
"Louis Lichou, dans les années 1980 que différentes filiales sont créées "
"au sein du CMB et forment les principales filiales du groupe qui "
"existent encore aujourd'hui (Federal Finance, Suravenir, Financo, etc.)."
)
result
Optimum + ONNX 示例
下面的代码展示了如何使用优化后的 ONNX 模型:
from optimum.onnxruntime import ORTModelForTokenClassification
from transformers import AutoTokenizer, pipeline
HUB_MODEL = "cmarkea/distilcamembert-base-nli"
tokenizer = AutoTokenizer.from_pretrained(HUB_MODEL)
model = ORTModelForTokenClassification.from_pretrained(HUB_MODEL)
onnx_qa = pipeline("token-classification", model=model, tokenizer=tokenizer)
# 量化后的 onnx 模型
quantized_model = ORTModelForTokenClassification.from_pretrained(
HUB_MODEL, file_name="model_quantized.onnx"
)
DistilCamemBERT-NER 是一款高效而强大的模型,它在法语命名实体识别任务中提供了优秀的性能和快速的推理速度,非常适合需要处理大量数据和快速响应的应用场景。