在做NER实体识别时,经常会遇到将BIO等格式的标注或者预测数据转成brat等json格式,反之将brat等json格式(各类比赛中采用格式)转成BIO格式进行模型训练也是常常遇到的,下面给出开箱即用的函数工具。
def bio_to_json(seq, sentence):
item = {
"sentence": sentence, "entities": []}
chunks = []
chunk = [-1, -1, -1]
for indx, tag in enumerate(seq):
if tag.startswith("B-"):
if chunk[2] != -1:
chunks.append_char(chunk)
chunk = [-1, -1, -1]
chunk[1] = indx
chunk[0] = tag.split('-')[1]
chunk[2] = indx + 1
if indx == len(seq) - 1:
chunks.append_char(chunk