Open jiesutd opened 5 years ago
感谢使用我们的论文和数据。
我发现你的评估函数中 precision/recall/F1 是所有tag 的平均值,然而实际的NER 的评估是以entity 为单位的而不是以tag 为单位。举个例子:
美 B-LOC 国 E-LOC 的 O 华 B-PER 莱 I-PER 士 E-PER
我 O 跟 O 他 O 谈 O 笑 O 风 O 生 O
这里实际上我们只关心美国(LOC) 和 华莱士(PER) 这两个entity 有没有预测对。 因此评估时需要先把识别出的entity的位置及其种类抽取出来,如果其中有任何一个不一致就得当作这个预测是错的。
可以参考https://github.com/jiesutd/NCRFpp/blob/master/utils/metric.py 对NER评估函数的实现。
@jiesutd 你好,这种序列标注的ensemble,应当是针对每一个tag(每一个字)去投票吗,还是说应当对识别出实体投票,只是简单的取交集的话,不是会丢弃很多有可能正确的数据吗,这方面有没有什么资料呢?感激不尽
同意,单纯某个标签预测准确是无太大意义的。要完整实体识别出来并正确分类,才是最终要的结果。
这个问题(评价标准)改了吗?
感谢使用我们的论文和数据。
我发现你的评估函数中 precision/recall/F1 是所有tag 的平均值,然而实际的NER 的评估是以entity 为单位的而不是以tag 为单位。举个例子:
美 B-LOC 国 E-LOC 的 O 华 B-PER 莱 I-PER 士 E-PER
我 O 跟 O 他 O 谈 O 笑 O 风 O 生 O
这里实际上我们只关心美国(LOC) 和 华莱士(PER) 这两个entity 有没有预测对。 因此评估时需要先把识别出的entity的位置及其种类抽取出来,如果其中有任何一个不一致就得当作这个预测是错的。
可以参考https://github.com/jiesutd/NCRFpp/blob/master/utils/metric.py 对NER评估函数的实现。