🚀 ScandiNER - 斯堪的纳维亚语言命名实体识别模型
ScandiNER是一款专为斯堪的纳维亚语言设计的命名实体识别模型,能够精准识别丹麦语、挪威语、瑞典语、冰岛语和法罗语中的人名、地名、组织机构名等实体,同时在英语句子上也有不错的表现。
你可以点击这里查看该模型的演示。
🚀 快速开始
你可以在脚本中按如下方式使用该模型:
基础用法
>>> from transformers import pipeline
>>> import pandas as pd
>>> ner = pipeline(task='ner',
... model='saattrupdan/nbailab-base-ner-scandi',
... aggregation_strategy='first')
>>> result = ner('Borghild kjøper seg inn i Bunnpris')
>>> pd.DataFrame.from_records(result)
entity_group score word start end
0 PER 0.981257 Borghild 0 8
1 ORG 0.974099 Bunnpris 26 34
✨ 主要特性
- 多语言支持:支持丹麦语、挪威语(书面挪威语和新挪威语)、瑞典语、冰岛语和法罗语,对英语句子也有一定的识别能力。
- 精准识别:能够预测人物(
PER
)、地点(LOC
)、组织(ORG
)和其他杂项(MISC
)四类实体。
- 性能优越:相比之前的先进模型,该模型不仅准确率高,而且体积更小、速度更快。
📦 安装指南
文档未提及具体安装步骤,故跳过该章节。
💻 使用示例
基础用法
>>> from transformers import pipeline
>>> import pandas as pd
>>> ner = pipeline(task='ner',
... model='saattrupdan/nbailab-base-ner-scandi',
... aggregation_strategy='first')
>>> result = ner('Borghild kjøper seg inn i Bunnpris')
>>> pd.DataFrame.from_records(result)
entity_group score word start end
0 PER 0.981257 Borghild 0 8
1 ORG 0.974099 Bunnpris 26 34
高级用法
文档未提及高级用法代码示例,故跳过该部分。
📚 详细文档
识别实体类型
该模型将预测以下四种实体:
标签 |
名称 |
描述 |
PER |
人物 |
人物的名字(例如,Birgitte 和 Mohammed) |
LOC |
地点 |
地点的名称(例如,Tyskland 和 Djurgården) |
ORG |
组织 |
组织的名称(例如,Bunnpris 和 Landsbankinn) |
MISC |
杂项 |
其他类型的命名实体(例如,Ūjķnustu pund 和 Mona Lisa) |
性能表现
以下是该模型在斯堪的纳维亚命名实体识别测试数据集上的Micro-F1性能,并与当前的先进模型进行了比较。这些模型在测试集及其9个自举版本上进行了评估,此处显示的是平均值和95%置信区间:
模型ID |
DaNE |
NorNE-NB |
NorNE-NN |
SUC 3.0 |
WikiANN-IS |
WikiANN-FO |
平均 |
saattrupdan/nbailab-base-ner-scandi |
87.44 ± 0.81 |
91.06 ± 0.26 |
90.42 ± 0.61 |
88.37 ± 0.17 |
88.61 ± 0.41 |
90.22 ± 0.46 |
89.08 ± 0.46 |
chcaa/da_dacy_large_trf |
83.61 ± 1.18 |
78.90 ± 0.49 |
72.62 ± 0.58 |
53.35 ± 0.17 |
50.57 ± 0.46 |
51.72 ± 0.52 |
63.00 ± 0.57 |
RecordedFuture/Swedish-NER |
64.09 ± 0.97 |
61.74 ± 0.50 |
56.67 ± 0.79 |
66.60 ± 0.27 |
34.54 ± 0.73 |
42.16 ± 0.83 |
53.32 ± 0.69 |
Maltehb/danish-bert-botxo-ner-dane |
69.25 ± 1.17 |
60.57 ± 0.27 |
35.60 ± 1.19 |
38.37 ± 0.26 |
21.00 ± 0.57 |
27.88 ± 0.48 |
40.92 ± 0.64 |
Maltehb/-l-ctra-danish-electra-small-uncased-ner-dane |
70.41 ± 1.19 |
48.76 ± 0.70 |
27.58 ± 0.61 |
35.39 ± 0.38 |
26.22 ± 0.52 |
28.30 ± 0.29 |
39.70 ± 0.61 |
radbrt/nb_nocy_trf |
56.82 ± 1.63 |
68.20 ± 0.75 |
69.22 ± 1.04 |
31.63 ± 0.29 |
20.32 ± 0.45 |
12.91 ± 0.50 |
38.08 ± 0.75 |
除了高精度之外,它还比之前的先进模型明显更 小 且更 快:
模型ID |
每秒样本数 |
模型大小 |
saattrupdan/nbailab-base-ner-scandi |
4.16 ± 0.18 |
676 MB |
chcaa/da_dacy_large_trf |
0.65 ± 0.01 |
2,090 MB |
训练过程
训练超参数
训练期间使用了以下超参数:
- 学习率:2e-05
- 训练批次大小:8
- 评估批次大小:8
- 随机种子:42
- 梯度累积步数:4
- 总训练批次大小:32
- 优化器:Adam,β=(0.9,0.999),ε=1e-08
- 学习率调度器类型:线性
- 学习率调度器热身步数:90135.90000000001
- 训练轮数:1000
训练结果
训练损失 |
轮数 |
步数 |
验证损失 |
Micro F1 |
Micro F1(不包括杂项) |
0.6682 |
1.0 |
2816 |
0.0872 |
0.6916 |
0.7306 |
0.0684 |
2.0 |
5632 |
0.0464 |
0.8167 |
0.8538 |
0.0444 |
3.0 |
8448 |
0.0367 |
0.8485 |
0.8783 |
0.0349 |
4.0 |
11264 |
0.0316 |
0.8684 |
0.8920 |
0.0282 |
5.0 |
14080 |
0.0290 |
0.8820 |
0.9033 |
0.0231 |
6.0 |
16896 |
0.0283 |
0.8854 |
0.9060 |
0.0189 |
7.0 |
19712 |
0.0253 |
0.8964 |
0.9156 |
0.0155 |
8.0 |
22528 |
0.0260 |
0.9016 |
0.9201 |
0.0123 |
9.0 |
25344 |
0.0266 |
0.9059 |
0.9233 |
0.0098 |
10.0 |
28160 |
0.0280 |
0.9091 |
0.9279 |
0.008 |
11.0 |
30976 |
0.0309 |
0.9093 |
0.9287 |
0.0065 |
12.0 |
33792 |
0.0313 |
0.9103 |
0.9284 |
0.0053 |
13.0 |
36608 |
0.0322 |
0.9078 |
0.9257 |
0.0046 |
14.0 |
39424 |
0.0343 |
0.9075 |
0.9256 |
框架版本
- Transformers 4.10.3
- Pytorch 1.9.0+cu102
- Datasets 1.12.1
- Tokenizers 0.10.3
🔧 技术细节
该模型是 NbAiLab/nb-bert-base 的微调版本,用于丹麦语、挪威语(书面挪威语和新挪威语)、瑞典语、冰岛语和法罗语的命名实体识别。它在 DaNE、NorNE、SUC 3.0 和 WikiANN 数据集的冰岛语和法罗语部分的拼接数据上进行了微调。由于预训练模型也在英语数据以及斯堪的纳维亚语言数据上进行了训练,因此该模型在英语句子上也能有较好的表现。
📄 许可证
本项目采用MIT许可证。
数据集信息
属性 |
详情 |
模型类型 |
斯堪的纳维亚语言命名实体识别模型 |
训练数据 |
DaNE、NorNE、SUC 3.0和WikiANN数据集的冰岛语和法罗语部分 |