Какой объем обучающих данных необходим для дополнительного распознавания именованных объектов с помощью spaCy? - PullRequest
0 голосов
/ 31 августа 2018

Я использую модуль spaCy для поиска имен объектов для ввода текста. Я тренирую модель, чтобы предсказать медицинские условия. В настоящее время у меня есть доступ к 2 миллионам медицинских заметок, которые я написал для аннотации.

Я сопоставляю медицинские записи с заранее определенным списком из ~ 90 тысяч терминов, который используется для задачи аннотации. При нынешнем темпе аннотации требуется около полутора часов, чтобы аннотировать 10 000 заметок. То, как в данный момент работает аннотация, в итоге около 90% заметок не имеют аннотаций (сейчас я работаю над получением лучшего списка терминов перекрестных ссылок), поэтому я беру ~ 1000 аннотированных заметок и обучаю модель на этих.

Я проверил, и модель как бы реагирует на известные аннотированные термины, которые она видела (например, термин tachycardia был замечен ранее из аннотации, и иногда поднимает его, когда термин появляется в тексте). ).

Этот фон, возможно, не слишком уместен для моего конкретного вопроса, но я подумал, что немного расскажу о моей текущей позиции.

Мне было интересно, может ли кто-нибудь, кто успешно обучил новую сущность в spaCy, дать мне некоторое представление о своем личном опыте в объеме обучения, который был необходим, чтобы иметь хотя бы несколько надежное распознавание сущности.

Спасибо!

1 Ответ

0 голосов
/ 07 октября 2018

Я обучил распознаватель греческого языка Named Entity Recognizer с нуля, потому что данных не было, поэтому я постараюсь дать вам краткое изложение того, что я заметил для своего случая.

Я обучил NER с помощью инструмента аннотирования Prodigy . Ответ на ваш вопрос из моего личного опыта зависит от следующих вещей:

  • Количество меток, которое вы хотите, чтобы ваш распознаватель мог прогнозировать. Имеет смысл, что когда количество меток (возможных выходных данных) увеличивается, вашей нейронной сети становится все труднее различать их, поэтому объем необходимых вам данных увеличивается.
  • Насколько отличаются этикетки. Например, теги GPE и LOC довольно близки и часто используются в одном и том же контексте, поэтому нейронная сеть вначале сильно их запутывала. Желательно предоставить больше данных, связанных с ярлыками, которые расположены близко друг к другу.
  • Способ обучения. Здесь есть две возможности:
    • Полностью аннотированные предложения. Это означает, что вы сообщаете своей нейронной сети, что в ваших аннотациях нет пропущенных тегов.
    • Частично аннотированные предложения. Это означает, что вы сообщаете своей нейронной сети, что ваши аннотации верны, но, возможно, некоторые теги отсутствуют. Это усложняет для сети возможность полагаться на ваши данные, и по этой причине необходимо предоставлять больше данных.
  • Hyper-параметры. Очень важно точно настроить вашу сеть, чтобы получить максимум от вашего набора данных.
  • Качество набора данных. Это означает, что если набор данных является представителем того, что вы собираетесь попросить, чтобы ваша сеть предсказала, требуется меньше данных. Однако, если вы строите более общую нейронную сеть (которая будет правильно отвечать в разных контекстах), для этого потребуется больше данных.

Для греческой модели я попытался предсказать из 6 достаточно отличительных меток, я предоставил около 2000 полностью аннотированных предложений и потратил много времени на тонкую настройку.

Результаты: 70-процентная F-мера, что достаточно для сложности задачи.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...