Возможно, вы захотите проверить GoldParse
служебные функции , которые могут преобразовывать смещения объектов в теги 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
, вы можете разделить на -
, и у вас есть метка сущности для токена в этой позиции.