Token分类模型测试中的奇怪结果 - CamemBERT

问题描述 投票:0回答:2

我正在使用 camembert-base 模型和 Pytorch 进行 NER 任务进行微调,获得的模型目前没有给出好的结果,但至少训练语料库中的一些句子的标签被正确预测。

训练是使用这个数据集完成的,更多细节可以在这个笔记本中找到。

这个模型的奇怪之处在于,在测试阶段,一些标签的精度、召回率和 f1 分数都是空的!这很奇怪,因为我认为这意味着该模型无法预测该标签的任何实体,我认为这是不可能的,因为进行随机拍摄的模型可以正确预测至少一个标签。 我尝试在训练数据上测试模型,并得到以下结果,我不明白为什么模型已经看到的数据会发生这种情况。

{'age': {'f1': 0.9339622641509434,
         'number': 420,
         'precision': 0.9252336448598131,
         'recall': 0.9428571428571428},
 'anatomie': {'f1': 0.0, 'number': 1070, 'precision': 0.0, 'recall': 0.0},
 'date': {'f1': 0.0, 'number': 38, 'precision': 0.0, 'recall': 0.0},
 'dose': {'f1': 0.0, 'number': 102, 'precision': 0.0, 'recall': 0.0},
 'duree': {'f1': 0.0, 'number': 105, 'precision': 0.0, 'recall': 0.0},
 'examen': {'f1': 0.0, 'number': 721, 'precision': 0.0, 'recall': 0.0},
 'frequence': {'f1': 0.0, 'number': 77, 'precision': 0.0, 'recall': 0.0},
 'genre': {'f1': 0.5926748057713652,
           'number': 426,
           'precision': 0.5621052631578948,
           'recall': 0.6267605633802817},
 'issue': {'f1': 0.18621973929236502,
           'number': 285,
           'precision': 0.1984126984126984,
           'recall': 0.17543859649122806},
 'mode': {'f1': 0.0, 'number': 77, 'precision': 0.0, 'recall': 0.0},
 'moment': {'f1': 0.0, 'number': 174, 'precision': 0.0, 'recall': 0.0},
 'origine': {'f1': 0.49336283185840707,
             'number': 426,
             'precision': 0.4665271966527197,
             'recall': 0.5234741784037559},
 'overall_accuracy': 0.8862863686790967,
 'overall_f1': 0.21902729417050434,
 'overall_precision': 0.37072243346007605,
 'overall_recall': 0.15542802486848398,
 'pathologie': {'f1': 0.0, 'number': 211, 'precision': 0.0, 'recall': 0.0},
 'sosy': {'f1': 0.03614457831325302,
          'number': 1161,
          'precision': 0.03911735205616851,
          'recall': 0.03359173126614987},
 'substance': {'f1': 0.0, 'number': 371, 'precision': 0.0, 'recall': 0.0},
 'traitement': {'f1': 0.0, 'number': 254, 'precision': 0.0, 'recall': 0.0},
 'valeur': {'f1': 0.0, 'number': 355, 'precision': 0.0, 'recall': 0.0}}

有任何解决此问题的线索吗?这个问题是否可能来自数据集中使用标签的频率?或者可能是别的什么?我可以做什么来解决?

python nlp pytorch huggingface-transformers named-entity-recognition
2个回答
0
投票

此警告来自 您的笔记本的测试部分:

/usr/local/lib/python3.7/dist-packages/seqeval/metrics/v1.py:57: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.

请参阅 this 最近类似的 SE 帖子,了解为什么这会导致 F1、精确度和召回率分数不稳定。长话短说,这些指标依赖于数据分区中这些标签的真实阳性和预测阳性,因此如果没有这些阳性,指标就无法定义。


0
投票

从你的问题内容看不出来,但是你做NER的时候没有使用单字母标签吗?

我在使用 Seqeval pakcage 计算指标时遇到了类似的问题。事实证明,当我使用“U”或“0”等单字符标签进行 NER 时,

seqeval/metrics/sequence_labeling.py
脚本在处理过程中截断了一个字母,因此用于比较的标签为空。

将标签更改为“UU”和“00”解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.