Можно ли обучить \ настроить пространственную модель NER с помощью «подсказок», основанных на правилах \ шаблонах? - PullRequest
0 голосов
/ 15 апреля 2019

Пустой пример: Я хочу, чтобы NER мог определять локации, животных и спортивные группы. Matcher \ PhraseMatcher \ EntityRuler (, который более подходит для этого варианта использования? ) может быть использован для добавления "простых" правил лайк: Места: Чикаго, Нью-Йорк животные: бык, курица группы: Чикаго Буллз

Слой NER должен быть в состоянии узнать, что Чикаго Буллз - это группа, а не локация и животное (как если бы использование одного совпадения дало бы) и что другие комбинации локации + животное являются спортивными группами, а не парами локационных животных (даже если конкретной комбинации не было в тренировочном наборе)

TLDR: я не хочу использовать извлеченные сущности на основе правил как есть, но как подсказки для другого слоя, который будет использовать их для улучшения извлечения сущностей

1 Ответ

1 голос
/ 16 апреля 2019

Копирование моего ответа от этой проблемы :

Да, использование шаблонов совпадений для улучшения статистических моделей имеет большой смысл, и на самом деле это один из подходов, которые мы используем в нашихинструмент аннотации Prodigy для упрощения сбора данных о тренировках.Неоднозначные примеры, когда правила терпят неудачу (например, «быки»), на самом деле действительно интересны, потому что это те, которые вы хотите, чтобы статистическая модель обрабатывала.

С точки зрения практической реализации, вы все равно хотели бы, чтобы ваш рабочий процессиметь два шага:

  1. Используйте сопоставление, чтобы извлечь примеры кандидатов и выбрать те, которые вы хотите использовать.
  2. Обучите / обновите модель с новыми примерами и оцените ее.

Ваша модель не будет просто обновляться во время выполнения, потому что это не так полезно - вам обычно всегда требуется отдельный этап обучения и оценки, чтобы вы могли использовать некоторые приемы машинного обучения, а также убедиться, что ваша модельна самом деле улучшается.

Также не забудьте включить сущности, которые ранее получили правильные модели - например, если ваше предложение с «Чикаго Буллз» также включает в себя имя человека, вы хотите, чтобы это было включено в тренингданные также.Таким образом, ваш рабочий процесс выглядит следующим образом:

  • Используйте правила шаблона для извлечения совпадений из ваших текстов.
  • Для каждого текста также отметьте doc.ents и получите существующие сущности.
  • Объедините оба и убедитесь, что они правильные.
  • Обновите вашу модель с помощью этих новых примеров.

Приятно то, что большинство из этого может бытьавтоматизировано скриптом Python.Также см. этот раздел документации для примера.

a Matcher \ PhraseMatcher \ EntityRuler (что более актуально для этого варианта использования?)

EntityRuler - это в основном компонент более высокого уровня, который использует Matcher и PhraseMatcher для поиска совпадений в Doc и автоматически добавляет их в doc.ents.Он также поддерживает подачу больших файлов шаблонов и сериализует их с моделью при сохранении.Он также обрабатывает тот факт, что именованные объекты по определению не могут перекрываться, поскольку один токен может быть только частью одного объекта.Так что, если вы знаете, что вы ищете сущности, EntityRuler может быть более удобным, потому что это означает, что вам придется самостоятельно писать меньше кода.

...