我在spacy offset format中有一个标记数据集。
例如:
('I love Berlin!', {'entities': [(7, 13, 'CITY')]})
我的目标是将格式转换为CONLL列格式。
e.g.:
I O
love O
Berlin CITY
! O
有没有一种方法可以仅使用偏移格式的带标签数据来构造Spacy Doc对象?如果我可以构造Doc对象,则使用此code应该很容易实现我的目标。
提前谢谢
答案 0 :(得分:0)
您可能想检查一下GoldParse
utility functions,它可以将实体偏移量转换为BILUO标签或spaCy Span
对象。例如,biluo_tags_from_offsets
帮助器接受一个Doc
对象和一个实体偏移量列表,并返回令牌的BILUO标签。例如:
from spacy.lang.en import English # Or whichever language you need
from spacy.gold import biluo_tags_from_offsets
nlp = English()
YOUR_DATA = [
('I love Berlin!', {'entities': [(7, 13, 'CITY')]})
]
for text, annotations in YOUR_DATA:
offsets = annotations["entities"]
doc = nlp(text)
tags = biluo_tags_from_offsets(doc, offsets)
print([token.text for token in doc], tags)
['I', 'love', 'Berlin', '!'] ['O', 'O', 'U-CITY', 'O']
这已经非常接近您要寻找的输出。如果标签不是O
,则可以在-
上拆分,并且在该位置具有令牌的实体标签。