我有一个任务要计算inter-annotator agreement中的multi-label classification,对于每个示例,可以分配多个标签。我发现NLTK可以基于距离度量标准来度量一致性。

我正在寻找使用MASI距离计算krippendorff alpha的示例。

这就是我所拥有的。

import nltk
from nltk.metrics import masi_distance


toy_data = [['1', 5723, [1,2]],['2', 5723, [2,3]]]

task = nltk.metrics.agreement.AnnotationTask(data=toy_data, distance=masi_distance)
print task.alpha()


这段代码失败了

TypeError: unhashable type: 'list'


显然,以下操作无效。

toy_data = [['1', 5723, set([1,2])],['2', 5723, set([2,3])]]


你有一个可行的例子吗?
谢谢!

最佳答案

更确切地说,需要冻结的对象(如@alexis所指出的)只是三元组的第三个成员,这是分配给该商品的标签。

toy_data = [['1', 5723, frozenset(1,2)],['2', 5723, frozenset(2,3)]]

08-25 07:53