如何使用序列标签/ IOB标签对NER进行分类?

时间:2015-06-03 02:34:12

标签: python nlp text-classification named-entity-recognition crf

我试图根据IOB /序列标签识别和分类实体类型。

例如:

Alex  B-PER
Tan   I-PER
is O
a O
president O
. O

我只能通过令牌对其进行分类,这意味着它将Alex B-PER和Tan I-PER归类为不同的类/实体类型。

所以我的问题是如何将Alex B-PER和Tan I-PER归类为PERSON的同一类?

谢谢。

1 个答案:

答案 0 :(得分:3)

所有必需的信息已包含在BIO encoding

您只需要遍历所有令牌标签对:如果您找到BX标签,那么它是X实体的开头(在您的示例中 - 它是对var smooth = getSmooth(evo, meteo, usage); function getSmooth(evo, meteo, usage){ evo *= 100; meteo *= 100; usage *= 100; var meteo_decimal = meteo % 1; var usage_decimal = usage % 1; evo = Math.round(evo); if( meteo_decimal > usage_decimal ) { meteo = Math.ceil(meteo); usage = Math.floor(usage); } else { meteo = Math.floor(meteo); usage = Math.ceil(usage); } return { evo: evo / 100, meteo: meteo / 100, usage: usage / 100 }; } ),因此创建新实体, token是带有B_X标签的令牌;当下一个标签是I-X时,将相应的标记附加到创建的X实体(在您的示例中 - 它是对[Alex_B-PER]] - 所以您的实体是[Tan_I-PER)。如果下一个标签是B-Y,则像以前一样创建新实体;如果下一个标签是O,那就再往前走吧。