Python中利用seqeval模块进行序列标注算法的模型评估

0. 概述

在NLP任务中,我们经常需要使用序列标注算法,为此,我们需要评估该模型在序列标注任务中的效果,这里使用了seqeval模块。

一般而言,序列标注算法的格式有BIO、IOBES、BMES等。

模型的评价指标有,一般只会注意英文,中文容易弄混:

1
2
3
真实值\预测值   |Positive       |Negative       |
Positive |True Positive |False Negative |
Negative |False Positive |True Negative |

Precision = TP/(TP+FP)
预测为正的样本中有多少预测对了

Recall = TP/(TP+FN)
真实为正的样本中有多少预测对了

Accuracy = (TP+TN)/(TP+TN+FP+FN)

F1 Score = 1/2(1/recall + 1/precision)
= 2Recall*Precision/(Recall+Precision)

1.样例

参考官网资料

1
2
3
4
5
6
7
8
9
from seqeval.metrics import accuracy_score,classification_report,f1_score

y_true = [['O', 'O', 'O', 'B-MISC', 'I-MISC', 'I-MISC', 'O'], ['B- PER', 'I-PER', 'O']]

y_pred = [['O', 'O', 'B-MISC', 'I-MISC', 'I-MISC', 'I-MISC', 'O'],['B-PER', 'I-PER', 'O']]

print(f1_score(y_true, y_pred))

print(classification_report(y_true, y_pred))