chunk_eval
该OP计算语块识别(chunk detection)的准确率、召回率和F1值,常用于命名实体识别(NER,语块识别的一种)等序列标注任务中。
语块识别的基础请参考 Chunking with Support Vector Machines
该OP支持IOB,IOE,IOBES和IO(plain)的标注方式。以下是这些标注方式在命名实体识别示例中的使用:
例中有PER(人名),ORG(机构名)和LOC(地名)三种语块类型(命名实体类型)。可以看到,一个完整的标签包括标注类型(tag type)和语块类型(chunk type),形式为 。
由于该OP在计算实现上使用的是标签id而非标签字符串,为使其能正确运行,标签id要能够转换为相应的标注类型(tag type)和语块类型(chunk type)。该OP使用了下面的方式完成映射转换:
其中num_tag_type是标注方式中的标签类型(tag type)数,各标注方式的tag type取值如下:
据此,在上面的NER例子中,若标注方式是IOB,语块类型包括ORG、PER和LOC三种,则所有标签及其对应id如下:
Variable的元组。元组中包含准确率、召回率、F1值,以及识别出的语块数目、标签中的语块数目、正确识别的语块数目。每个均是单个元素的Tensor,准确率、召回率、F1值的数据类型为float32,其他的数据类型为int64。
tuple