def evaluate(path):
system = systems[path]
measure, scores, clusters_gold, clusters_system = 0., OrderedDict(), [], []
for lemma in lemmas:
instances = sorted(gold[lemma].keys())
senses_gold = {sid: i for i, sid in enumerate(sorted(set(gold[lemma].values())))}
senses_system = {sid: i for i, sid in enumerate(sorted(set(system[lemma].values())))}
clusters_gold = [senses_gold[gold[lemma][instance]] for instance in instances]
clusters_system = [senses_system[system[lemma][instance]] for instance in instances]
if 'vmeasure' == args.measure:
if 'instances' == args.average:
measure += v_measure_score(clusters_gold, clusters_system) * len(instances) / total
else:
measure += v_measure_score(clusters_gold, clusters_system)
scores[lemma] = (
homogeneity_score(clusters_gold, clusters_system),
completeness_score(clusters_gold, clusters_system),
v_measure_score(clusters_gold, clusters_system)
)
else:
scores[lemma] = adjusted_rand_score(clusters_gold, clusters_system)
if 'instances' == args.average:
measure += scores[lemma] * len(instances) / total
else:
measure += scores[lemma]
if 'words' == args.average:
measure /= len(lemmas)
return measure, scores
评论列表
文章目录