【发布时间】:2020-11-23 21:22:44
【问题描述】:
当我在 NLTK 中使用 MASI 作为距离函数计算一致性时,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 如此之低?
【问题讨论】:
-
这方面有什么进展吗?
-
我遇到了同样的问题,我使用 Jaccard 的分数在 3-rater、多标签集上明显高于 MASI。我发现了这个:github.com/nltk/nltk/issues/2049,它说 MASI 是加权 Jaccard,但不确定它在数据集中的重要性
标签: annotations nltk distance alpha