NER — Должен ли я включать общие префиксы в помеченные объекты

#spacy #named-entity-recognition

#spacy #распознавание именованных объектов

Вопрос:

Я пытаюсь распознать объекты в наборе текстов OCR по изображениям документов. Поскольку текст обычно some_label: value находится в форме документа, он часто (но не всегда) встречается и в тексте OCR.

Мой вопрос в том, допустим, я пытаюсь аннотировать даты в своих текстовых файлах OCR, и в 80% случаев дата указана в формате Date: xx/xx/xxxx ; было бы лучше, если бы я…

  1. Помечен только xx/xx/xxxx как объект «Моя дата»
    • Представляет истинную сущность
    • Было бы репрезентативно для 100% данных
  2. ИЛИ пометил весь Date: xx/xx/xxxx объект как мою дату
    • Воспользовался бы часто встречающимся Date: префиксом для большей точности?

Еще один пример:

Суммы обычно представляются в виде $xxxxxx5.37 и $ 63.75

  1. Выберите 5.37 и 63.75
  2. Выберите $xxxxxx5.37 и $ 63.75 (воспользовавшись знаком $)

Какой из них было бы лучшей практикой следовать / привести к лучшей модели?

(PS: я использую Prodigy для аннотирования своих данных)

Ответ №1:

Это зависит от используемой вами архитектуры нейронной сети.

Давайте предположим, что вы используете spaCy v2 и его нейронную архитектуру по умолчанию, которая является CNN. В этом случае архитектура будет скользить по вашему тексту в соответствии с определенным окном (т.е. x количество слов перед date объектом и x количество слов после date объекта).

При таком подходе каждый раз, когда маркер Date: появляется в тексте, вполне вероятно, что нейронная сеть распознает, что объект date находится рядом с ним.

В этом случае мое предложение состояло бы в том, чтобы включить только аннотацию даты xx / xx / xxxx в качестве объекта. Это даст модели больше гибкости в определении того , что такое дата entity . Однако тестирование всегда является лучшим способом выяснить, что лучше. Итак, попробуйте 🙂