使用krippendorf-Alph的NLTK内部注释协议

2024-10-01 09:19:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用NLTK的nltk.metrics.agreement模块计算一个玩具示例上的注释器间的一致性。在

具体来说,我尝试使用alpha度量(Krippendorff)使用两个不同的距离度量(binary_distanceinterval_distance)来计算一致性。在

下面玩具示例1的预期结果是接近1的值,它几乎完全一致(只有一对不同意)。然而,在这两种情况下res都是0.0。为什么?在

我知道Krippendorff的alpha是为间隔而设计的,而不是像两个类别标签那样的二进制。但是,我不希望模块返回零协议值。作为背景,这个玩具示例只是一个较大数据集的特定子集,该数据集包含范围为[1,4]的注释分数。该子集属于该数据集中的特定总体。在

在玩具的例子中,间隔alpha看起来更好。二进制alpha可能会引发一个异常,因为现在数据中有三个标签。在

玩具示例1

from nltk.metrics.agreement import AnnotationTask
from nltk.metrics import interval_distance, binary_distance 

 annotation_triples = [('coder_1', '1', 4), 
                       ('coder_2', '1', 4), 
                       ('coder_1', '2', 4),
                       ('coder_2', '2', 4), 
                       ('coder_1', '3', 4), 
                       ('coder_2', '3', 4),
                       ('coder_1', '4', 4), 
                       ('coder_2', '4', 3)]

 t = AnnotationTask(annotation_triples, distance=binary_distance)
 result = t.alpha()

 t = AnnotationTask(annotation_triples, distance=interval_distance)
 result = t.alpha()

result binary: 0.0
result interval: 0.0

玩具示例2(用1代替4替换了第一对玩具)

^{pr2}$

Tags: 数据alpha示例agreementannotationresultmetricsdistance
2条回答

答案由Klaus Krippendorff提供

我不知道alpha的NLTK实现。从你复制的东西来看似乎没有错。在

为了澄清,α不是基于区间度量差。区间度量差分函数只是众多版本中的一种。它反映了有意义的代数差异,在名词范畴中没有。在

顺便说一句,当你有二进制数据时,所有的度量差都应该 产生相同的结果,因为只有两个值相同或不同。在

让我把重点放在你给出的两个数字例子上,两个编码器编码4个单位。在计算中,重合矩阵(将单位内所有可能值对的总和制成表格)和为n=8而不是10。它们看起来像:

enter image description here

是的,随着方差收敛到零,alpha也收敛到零。在第一个例子中,几乎没有差异,唯一偏离一致性的是不一致。这些数据不可能为 计算相关性,检验统计假设,提供有关感兴趣现象的信息来回答研究问题。等等,如果注释没有任何变化,可靠性数据就不能保证编码人员是否睡着了,为了达到100%的一致性,他们决定对所有内容进行相同的编码,他们使用的工具就坏了。数据需要变化。在

在第二个例子中,你有一个更大的方差。无论是用名义或区间度量来计算α,可靠性都必须更高。在

目前似乎有两个问题:

1)带有metric=interval_distance的Krippendorff alpha系数的NLTK实现使用了与在Krippendorff's paper中发布的不同的基础公式,或者代码中存在错误。在

  • 对于玩具示例1,标称alpha值应该是-0.125(而不是NLTK返回的0.0):

  • 类似地,对于玩具示例2,alpha值应该是0.36(而不是NLTK返回的0.93)。在

2)Krippendorff度量可以对输入数据进行假设,并且/或不是为处理具有少量观察结果和观察到的一致/不一致单位的玩具示例而设计的。在

实际上,对于玩具示例1,NTLK metric=binary_distance返回的α系数值0是通过手动计算确定的。在

二元α公式:

玩具示例1:

相关问题 更多 >