与距离度量的NLTK协议

时间:2015-09-23 07:28:10

标签: machine-learning nlp nltk

我有一个任务来计算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])]]

你有一个有效的例子吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

更确切地说,需要冻结的东西(正如@alexis指出的那样)只是三元组的第三个成员,这是分配给该项目的标签。

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

答案 1 :(得分:0)

我认为数据应该是元组列表,而不是列表列表(元组是可以删除的,列表不是),请尝试:

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

(在可能存在问题的情况下,我也将值组成了元组而不是列表)