Вопрос или проблема
Я хочу добавить новые сущности в модуль NER python spacy. У меня есть несколько сомнений по этому поводу.
-
Возможно ли удалить некоторые из уже существующих сущностей и добавить новые к оставшимся.
-
Во время обучения новых сущностей я обнаружил, что нам нужно предоставлять обучающие данные в определенном формате. Например,
data = [
(“Мне нравится курица”, [(8, 13, “FOOD”)]),
…
]
Вместо предложений типа “Мне нравится курица”, возможно ли предоставить данные, как
data = [
("курица", [(1, 8, "FOOD")]),
...
]
Повлияет ли это на точность.
Это не то, как работает NER:
- NER не предназначен только для распознавания фиксированного набора сущностей, он предназначен для обнаружения любой сущности в тексте. Например, он должен распознавать сущность в “Г-н Х сказал …”, независимо от того, является ли X “Джоном Смитом” или “Дональдом Даком”.
- Это подразумевает, что NER использует подсказки из предложения, чтобы обнаруживать сущности, в отличие от простого пометки известных из обучения сущностей.
Поэтому
- Возможно ли удалить некоторые из уже существующих сущностей и добавить новые к оставшимся.
Нет, потому что модель NER не является списком сущностей, это сложная модель, использующая текстовые признаки.
- Возможно ли предоставить данные, как […]
С технической точки зрения вы можете предоставить такие данные, но это не то, как это должно работать.
Вы, кажется, заинтересованы в точном соответствии с заранее определенным набором сущностей, NER не является подходящим инструментом для этого. В этом сценарии гораздо проще хранить ваши сущности в списке и применять сопоставление строк к тексту.
Ответ или решение
Обучение нового сущностей в модели Named Entity Recognition (NER) с использованием библиотеки SpaCy – это задача, которая требует внимания к деталям и понимания того, как работает NER. Давайте ответим на два ваших вопроса и проясним некоторые моменты.
1. Удаление существующих сущностей и добавление новых
Первое, что необходимо понимать, это то, что модели NER не представляют собой простой список известных сущностей. Вместо этого, они функционируют как сложные алгоритмы машинного обучения, которые используют текстовые признаки для распознавания и классификации сущностей. Это означает, что невозможно просто удалить некоторые существующие сущности и добавить новые, не затрагивая всю модель в целом.
Если вы хотите улучшить модель под ваши специфические нужды, лучший подход — это дообучение уже существующей модели, добавление новых данных для тренировки и корректировка результата с помощью меток для определенных сущностей. Обычно это делается с помощью процесса, известного как "fine-tuning", при котором модель обучается с учетом как старых, так и новых сущностей.
2. Формат обучающих данных
Относительно вашего вопроса о формате обучающих данных:
Вы предложили использовать примеры, которые содержат только сущности, без контекста, например:
data = [
("chicken", [(1, 8, "FOOD")]),
...
]
Технически, возможно использовать такой подход для тренировки модели, но он не соответствует концепции работы NER. Модели NER предназначены для проверки контекста, чтобы правильно идентифицировать сущности в текстах: связь между словами, грамматические структуры и синтаксические паттерны играют ключевую роль в определении того, что является сущностью.
Если вы используете только именованные сущности без контекста, есть риск значительно ухудшить точность модели. Fundación и интенсивное изучение других предложенных предложений (как в вашей первом примере "I love chicken") помогут модели не только классифицировать сущности, но и делать выводы на основе контекста, что является важным аспектом NER.
Рекомендации и Альтернативы
Если ваша задача заключается в том, чтобы распознавать только фиксированный набор сущностей, и обеспечивать их высокую точность в рамках специальных доменов, целесообразно рассмотреть альтернативные подходы к решению задачи. Один из них — это использование простых методов сопоставления строк, когда все сущности предварительно хранятся в списке, а затем применяется поиск по тексту. Это может быть значительно проще и быстрее, чем обучение модели NER.
В заключение, при работе с моделью NER в SpaCy важно помнить, что успех в распознавании сущностей во многом зависит от качества и структуры обучающих данных, а также от подхода к самой задаче. Моши оптимизируя обучение, вы сможете улучшить точность и производительность вашей NER модели.