Предупреждение: [W030] Некоторые объекты не удалось выровнять в тексте.

TRAIN_DATA = [
    ("XYZxyzg hat die beste Camera für Selfies", {"entities": [(0, 7, "BRAND"), (23, 28, "CAMERA")]}),
]

При обучении я продолжаю получать ошибку в этой строке:

serWarning: [W030] Some entities could not be aligned in the text "XYZxyzg hat die beste Camera für Selfie" with entities "[(0, 7, 'BRAND'), (23, 28, 'CAMERA')]". Use `spacy.gold.biluo_tags_from_offsets(nlp.make_doc(text), entities)` to check the alignment. Misaligned entities ('-') will be ignored during training.
  gold = GoldParse(doc, **gold)

Что не так с моими индексами? Следует ли исключать пробелы? Я тоже пробовал, но, похоже, не работает. Как я могу использовать spacy.gold.biluo_tags_from_offsets(nlp.make_doc(text), entities) чтобы проверить индексы, как предлагает предупреждение?

2 ответа

spacy.gold.biluo_tags_from_offsetsустарело, я считаю.

Вы можете заменитьspacy.gold import biluo_tags_from_offsetsсspacy.training import offsets_to_biluo_tags

https://spacy.io/api/top-level#offsets_to_biluo_tags

Из вашего сообщения:

TRAIN_DATA = [
    ("XYZxyzg hat die beste Camera für Selfies", {"entities": [(0, 7, "BRAND"), (23, 28, "CAMERA")]}),
]

Смещения объекта должны быть выровнены по границам токена. Вы можете начинать / заканчивать объект в середине токена. В вашем случае похоже закралась небольшая ошибка, и я думаю, что смещения второй сущности должны быть (22, 28, "CAMERA") вместо.

Другие вопросы по тегам