nlhappy中以文档(Doc)为文本数据的基本承载形式,实体抽取的目标就是将原始数据通过doc.add_ent方法添加进文档中。
在全部实体保存进文档中之后,需要将文档保存进文档箱(DocBin),文档箱是保存文档的类它负责将所有的文档转换为特定的数据集。
下面以CBLUE排行榜实体识别数据集CMeEE为例进行简单演示。
from nlhappy.data import Doc, DocBin, DatasetDict
# 读取数据
train_data = load_your_data(train_path)
val_data = load_your_data(val_path)
# 制作数据集
def make_ds(data):
db = DocBin()
for d in data:
doc = Doc(text=d['text'])
for e in d['ents']:
text = e['text']
indices = e['indices']
label = e['label']
doc.add_ent(text=text,indices=indices,label=label)
db.append(doc)
return db.to_ner_dataset()
train_ds = make_ds(train_data)
val_ds = make_ds(val_data)
ds = DatasetDict({'train':train_ds, 'validation':val_ds})
# 可以上传到huffingface
ds.push_to_hub(rep_name='your_rep_name', token='your_token')