使用标记的偏移量数据构造Doc对象

时间:2019-05-22 14:44:20

标签: python-3.x nlp spacy ner

我在spacy offset format中有一个标记数据集。

例如: ('I love Berlin!', {'entities': [(7, 13, 'CITY')]})

我的目标是将格式转换为CONLL列格式。

e.g.: I O love O Berlin CITY ! O

有没有一种方法可以仅使用偏移格式的带标签数据来构造Spacy Doc对象?如果我可以构造Doc对象,则使用此code应该很容易实现我的目标。

提前谢谢

1 个答案:

答案 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,则可以在-上拆分,并且在该位置具有令牌的实体标签。