使用 MASI 距离的 NLTK 协议的 alpha 较低

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

当我使用 MASI 作为距离函数计算 NLTK 中的一致性时,我得到的 Krippendorff alpha 值非常低。

指示三名编码员(Inky、Blinky 和 Sue)根据文本的内容为两个文本(text01 和 text02)分配主题标签(爱情、礼物、史莱姆或游戏)。每篇文本可以涉及多个主题,因此编码人员可以为每篇文本分配多个标签。用于进行计算的数据和代码如下所示:

import nltk
from nltk.metrics import agreement
from nltk.metrics.distance import masi_distance
from nltk.metrics.distance import jaccard_distance

#(coder, item, label)
data = [('inky','text01',frozenset(['love','gifts'])), 
      ('blinky','text01',frozenset(['love','gifts'])), 
      ('sue','text01',frozenset(['love','gifts'])), 
      ('inky','text02',frozenset(['slime','gaming'])), 
      ('blinky','text02',frozenset(['slime'])), 
      ('sue','text02',frozenset(['slime','gaming']))]

jaccard_task = nltk.AnnotationTask(distance=jaccard_distance)
masi_task = nltk.AnnotationTask(distance=masi_distance)
tasks = [jaccard_task, masi_task]
for task in tasks:
    task.load_array(data)
    print("Statistics for dataset using {}".format(task.distance))
    print("C: {}\nI: {}\nK: {}".format(task.C, task.I, task.K))
    print("Pi: {}".format(task.pi()))
    print("Kappa: {}".format(task.kappa()))
    print("Multi-Kappa: {}".format(task.multi_kappa()))
    print("Alpha: {}".format(task.alpha()))
    print()

当我运行代码时,我得到以下结果:

Statistics for dataset using <function jaccard_distance at 0x09D26DB0>
C: {'inky', 'sue', 'blinky'}
I: {'text01', 'text02'}
K: {frozenset({'slime'}), frozenset({'love', 'gifts'}), frozenset   ({'gaming', 'slime'})}
Pi: 0.7272727272727273
Kappa: 0.7777777777777777
Multi-Kappa: 0.7499999999999999
Alpha: 0.75

Statistics for dataset using <function masi_distance at 0x09D26DF8>
C: {'inky', 'sue', 'blinky'}
I: {'text01', 'text02'}
K: {frozenset({'slime'}), frozenset({'love', 'gifts'}), frozenset({'gaming', 'slime'})}
Pi: 0.8172727272727272
Kappa: 0.8511111111111113
Multi-Kappa: 0.8324999999999998
Alpha: -1.5

我的问题是,与 Jaccard 相比,为什么使用 MASI 距离函数时 alpha 如此低?

annotations nltk distance alpha
2个回答
1
投票

在运行提供的代码时,我无法重现该错误并获得了 Krippendorff 的 alpha 与 MASI 距离的正确值。我使用Python 3.5.2、NumPy 1.18.2、NLTK 3.4.5。因此,最可能的答案是需要更新 NLTK。


0
投票

抱歉,我也无法重现该错误。这是我的结果,我很有趣 NLTK 3.7。

Statistics for dataset using <function jaccard_distance at 0x1619e5b80>
C: {'blinky', 'inky', 'sue'}
I: {'text02', 'text01'}
K: {frozenset({'gifts', 'love'}), frozenset({'slime'}), frozenset({'gaming', 'slime'})}
Pi: 0.7272727272727273
Kappa: 0.7777777777777777
Multi-Kappa: 0.7499999999999999
Alpha: 0.75

Statistics for dataset using <function masi_distance at 0x1619e5c10>
C: {'blinky', 'inky', 'sue'}
I: {'text02', 'text01'}
K: {frozenset({'gifts', 'love'}), frozenset({'slime'}), frozenset({'gaming', 'slime'})}
Pi: 0.6372727272727272
Kappa: 0.7044444444444444
Multi-Kappa: 0.6675
Alpha: 0.6781219748305904
© www.soinside.com 2019 - 2024. All rights reserved.