我们知道在序列标注可以做的任务中,一般有如下定义(以 NER 任务为例):
t
a
g
_
n
u
m
:
样
本
实
体
(
需
要
被
标
注
)
的
个
数
p
r
e
d
_
n
u
m
:
预
测
中
标
注
的
实
体
个
数
c
o
r
r
e
c
t
_
n
u
m
:
预
测
正
确
的
个
数
tag\_num:样本实体(需要被标注)的个数 \\ pred\_num:预测中标注的实体个数 \\ correct\_num:预测正确的个数
tag_num:样本实体(需要被标注)的个数pred_num:预测中标注的实体个数correct_num:预测正确的个数
而我们一般利用序列标注解决 NER 任务使用的 precision、recall、F1 评价指标的计算方法如下:
p
r
e
c
i
s
i
o
n
=
c
o
r
r
e
c
t
_
n
u
m
/
p
r
e
d
_
n
u
m
r
e
c
a
l
l
=
c
o
r
r
e
c
t
_
n
u
m
/
t
a
g
_
n
u
m
f
1
=
(
2
∗
p
r
e
c
i
s
i
o
n
∗
r
e
c
a
l
l
)
/
(
p
r
e
c
i
s
i
o
n
+
r
e
c
a
l
l
)
precision = correct\_num / pred\_num \\ recall = correct\_num / tag\_num \\ f1 = (2*precision*recall) / (precision + recall)
precision=correct_num/pred_numrecall=correct_num/tag_numf1=(2∗precision∗recall)/(precision+recall)
但是这里出现了一个问题,为了引出这个问题,先来看一下 precision 和 recall 的定义:

由定义结合一开始说的,我们可以知道
p
r
e
d
_
n
u
m
=
T
P
+
F
P
(1)
pred\_num = TP+FP \tag1
pred_num=TP+FP(1)
t a g _ n u m = T P + F N (2) tag\_num = TP+FN \tag2 tag_num=TP+FN(2)
那么现在我说出问题:该如何理解序列标注完成 NER 任务时的 TP、FN、FP、TN 呢?换句话说如何理解这种情况下的正例和负例呢?
事实上在这个情况下,因为我们任务本身只预测正例,所以我们不关心反例,反例是隐性存在的,即其实没有明确的反例。
基于上述,我们预测的都是正例,那么当然 p r e d _ n u m = T P + F P pred\_num = TP+FP pred_num=TP+FP,标签也都是正例的,所以 t a g _ n u m = T P + F N tag\_num = TP+FN tag_num=TP+FN。
至于 FN、FP、TN ,因为反例在这个任务中不被关注,那么这些也没有十分明确的表示(当然也是可以解释的,但是确实没有必要)。TN 无法依靠上面统计的个数算出,而 FN、FP 分别可以根据 (1)、(2) 式求出。
1万+

被折叠的 条评论
为什么被折叠?



