我正在尝试将Stanford CRFClassifier输出的Precision&Recall分数与通过手动评估标准输出的结果得到的结果相吻合。
我从this answer中注意到,对于没有正确标记标签的实体中没有正确标记的实体,该结果是按全部或全部计算的。但是,当我尝试以此为基础从输出中计算全有或全无时,我的结果仍然与CRFClassifier所输出的分数相去甚远。
当我从输出中计算全有或全无时,我得到0.6870的精度和0.4520的召回率。这与分类器返回的0.6090精度和0.3987召回率的4倍平均得分形成鲜明对比。
要手动计算实体分数,我从分类器中获取标准输出,并遍历每个单词。为了获得相关实体的数量,我采用带有相同正确标签的任何单词序列并将其称为实体。我检查了每个单词的返回标签,如果其中任何一个都不匹配,则该实体将被标记为标签不正确。
要获得返回的实体的数量,我需要对单词进行迭代,并类似地对具有相同返回标签的序列进行分组。这样便得到了相关实体的总数,正确标记的实体的数量以及返回的实体的总数,并使用它们来计算实体的精度和召回率。
比较.ann文件中的实体总数(2,169)和上面计算的相关实体总数(2,146),表明这种计数实体的方式相当准确。
问题在于,以这种方式获取精度和召回分数会导致结果与分类器返回的结果不太接近。我在计算中没有考虑其他标签。在计算分数时,我还应该考虑其他因素吗?有没有办法让分类器输出它认为是实体的东西与我拥有的东西进行比较?