SampurNER Bengali MuRIL 是一个在孟加拉语 SampurNER 数据集上微调 MuRIL-large-cased(BERT-large 架构:24 层、隐藏维度 1024、词表大小 197285)的**细粒度命名实体识别(NER)**模型。该模型基于 EaMaTa 框架(AAAI-2026)与 Few-NERD 标签体系构建,共包含 133 个 BIO 标签,覆盖 8 大粗类实体:人物、地点、组织、建筑、艺术、产品、事件、杂项。模型参数量为 505.0M,在测试集上 F1 得分为 68.26。
原始模型:prachuryyaIITG/SampurNER_Bengali_MuRIL(MIT 协议) 数据集:prachuryyaIITG/SampurNER 论文:SampurNER(AAAI-2026)
加载方式:使用标准 transformers API(AutoModelForTokenClassification + AutoTokenizer)即可,无需自定义代码。
# 1. 克隆仓库
git clone https://gitcode.com/weasonlee/SampurNER_Bengali_MuRIL.git
cd SampurNER_Bengali_MuRIL
# 2. 安装依赖
pip install -r requirements.txt
# 3. 下载权重到 models/(已 .gitignore 排除;~2GB)
mkdir -p models
HF_ENDPOINT=https://hf-mirror.com python -c "
from huggingface_hub import snapshot_download
snapshot_download('prachuryyaIITG/SampurNER_Bengali_MuRIL', local_dir='models')"
# 4. 推理(NPU)
python inference.py --device npu
# 或 CPU
python inference.py --device cpu$ python inference.py --device npu
torch.npu.is_available() = True
torch.npu.device_count() = 2
[info] device = npu:0, torch = 2.9.0+cpu
[load] BertForTokenClassification (muril-large-cased): 505.0M params, 133 labels
[info] batch = 4 Bengali sentences, max_len = 17
[time] run 0: 16 ms
[time] avg: 16 ms (4 sentences)
[out ] sent0: entities = রবীন্দ্রনাথ(B-person-artist/author) ঠাকুর(I-person-artist/author) কলকাতায়(B-location-GPE)
[out ] sent1: entities = ঢাকা(B-organization-education) বিশ্ববিদ্যালয়(I-organization-education) বাংলাদেশের(B-location-GPE)
===== CPU vs NPU comparison (4 sentences, 133 labels) =====
cos_sim (logits) = 0.99999607
max_abs_err = 6.247e-02
mean_abs_err = 4.012e-03
argmax agreement = 100.00%输入:4 条含丰富实体的孟加拉语新闻风格句子(人名、地名、机构名、河流/海湾等,如“রবীন্দ্রনাথ ঠাকুর কলকাতায় জন্মগ্রহণ করেন。”);CPU 与 NPU 输入 token 完全一致。模型正确识别“রবীন্দ্রনাথ ঠাকুর”为 person-artist/author、“কলকাতায়”为 location-GPE 等。
| 指标 | 值 |
|---|---|
| cos_sim(token logits,133 类) | 0.99999607 |
| max_abs_err | 6.247e-02 |
| mean_abs_err | 4.012e-03 |
| argmax 标签一致率 | 100.00% |
| 单次批量耗时(4 句,含同步,3 次均值) | NPU ~16 ms vs CPU ~913 ms(~57× 加速) |
结论:NPU(Ascend 910, torch-npu 2.9.0.post1)与 CPU 的 logits 一致性达 0.99999+(fp32 正常差异水平),全部 token 的 NER 标签预测完全一致(100%),适配成功。
├── inference.py # 推理脚本(孟加拉语 NER + NPU/CPU 对比)
├── readme.md
├── requirements.txt
├── models/ # 权重目录(需自行下载,已 gitignore)
├── assets/ # 运行截图
│ ├── agent_workflow.png
│ ├── npu_device_call.png
│ └── model_result.png
└── results/ # 每次运行的 logits/标签/耗时产物(gitignore)Kaushik P. 等人著,《SampurNER:孟加拉语细粒度命名实体识别的综合基准》,AAAI-2026。