序列模型性能评估工具-conlleval.py
使用 conlleval.py 评估模型
conlleval.py 是一个常用的 Perl 脚本(后来也有 Python 实现版本),用于评估序列标注模型(如命名实体识别 NER、词性标注等)的性能。以下是使用 conlleval.py 评估模型的基本步骤:
基本使用步骤
-
准备预测结果文件:
• 模型预测结果需要保存为特定格式,通常是每行包含:单词、真实标签、预测标签
• 格式示例:word1 O O word2 B-PER B-PER word3 I-PER I-PER word4 O O
-
运行评估脚本:
perl conlleval.pl < predictions.txt
或对于 Python 版本:
python conlleval.py < predictions.txt
输出解释
典型输出包含以下指标:
processed 1000 tokens with 120 phrases; found: 100 phrases; correct: 80.
accuracy: 95.00%; precision: 80.00%; recall: 66.67%; FB1: 72.73
PER: precision: 85.00%; recall: 70.00%; FB1: 76.74 20
ORG: precision: 75.00%; recall: 60.00%; FB1: 66.67 15
LOC: precision: 80.00%; recall: 70.00%; FB1: 74.67 25
• accuracy: 所有token级别的准确率
• precision/recall/F1: 实体级别的精确率、召回率和F1值
• 按类别统计: 每个实体类别的单独统计
注意事项
-
输入格式要求:
• 每行三个字段用空格或制表符分隔
• 句子之间用空行分隔
• 标签格式通常为BIO或BIOES -
常见问题:
• 确保预测文件和真实文件的行数一致
• 检查标签格式是否一致
• 注意脚本对大小写的敏感性(有些版本区分大小写) -
高级选项:
• 有些版本支持-r
选项显示混淆矩阵
•-l
选项可以指定要评估的特定标签
Python 替代方案
如果你更倾向于使用纯Python环境,可以考虑以下替代方案:
from sklearn.metrics import classification_report
from seqeval.metrics import classification_report as seqeval_report
# token级别评估
print(classification_report(true_tags, pred_tags))
# 实体级别评估
print(seqeval_report(true_entities, pred_entities))
conlleval.py 仍然是序列标注任务评估的黄金标准,特别是在学术论文中报告结果时。