Обработка естественного языка (NLP) является частью многих повседневных приложений, которые мы используем. Популярное описание НЛП наполнено различными алгоритмами, современными архитектурами нейронных сетей и так далее. Хотя это недалеко от реальности, это также дает неполную картину.

Типичный конвейер разработки системы НЛП может выглядеть так, как показано на рисунке ниже:

(источник: рис. 2–1, глава 2 на сайте www.practicalnlp.ai)

Как видно из рисунка, отправной точкой любой системы НЛП являются данные. Однако во многих исследованиях и реальных сценариях, когда мы сталкиваемся с новой проблемой, у нас нет таких готовых наборов данных, которые соответствуют нашим потребностям. Что же нам делать? В любом случае, какие данные нам действительно нужны для НЛП? Как мы собираем такие данные?

Какие данные нам действительно нужны для НЛП?: Разным типам систем НЛП нужны разные типы данных. Иногда все, что нам нужно, — это большие коллекции документов без какой-либо дополнительной информации (например, такие задачи, как моделирование языка, моделирование темы и т. д.). Но во многих случаях нам нужны большие наборы размеченных данных, то есть пары вход->выход. Вот некоторые примеры:

  1. пары предложений с переводом предложений (машинный перевод)
  2. электронные письма со спамом/не спамом (пример классификации текста)
  3. пары вопрос-ответ
  4. предложение $-›$ имена входящих в него сущностей, отношения между ними и т. д. (извлечение информации)

Итак, нам действительно нужны размеченные данные для НЛП, но что нам делать, когда мы сталкиваемся с новой проблемой НЛП и у нас нет данных для начала? Поставщики облачных услуг, такие как Google, Microsoft, Amazon и IBM, предлагают широкий набор услуг НЛП. Это всегда хорошая отправная точка для изучения. Если одно из их предложений удовлетворит наши потребности, нам, возможно, не придется создавать собственный конвейер НЛП. Однако часто проблемы, с которыми мы сталкиваемся, являются нестандартными проблемами, требующими нестандартных решений. Итак, мы вернулись к нашему предыдущему вопросу: как мне начать собирать данные? Давайте рассмотрим некоторые возможные пути:

  • Используйте общедоступные ресурсы. Иногда такие наборы данных используются другими компаниями или другими исследовательскими группами. Мы также можем просмотреть данные из Интернета, в зависимости от наличия таких данных, которые соответствуют нашим потребностям.
  • Вмешательство продукта. Команда ИИ может работать вместе с командой продукта, чтобы собирать реальные данные, соответствующие их потребностям.
  • Ручное аннотирование данных. Вы можете проводить небольшие эксперименты по сбору данных, когда группа аннотаторов (1–3 человека и более) маркирует ваши данные вручную или выбираете краудсорсинг, в зависимости от характера вашей задачи. механизмы обмена данными.
  • Автоматическая маркировка данных.Можно подумать о «самозагрузке» помеченного набора данных, используя некоторые знания предметной области и эвристики, написав некоторые функции пометки, которые создают зашумленные/несовершенные помеченные данные. Существуют методы эффективного обучения на таких зашумленных данных.

Что делать, если у вас есть небольшой объем размеченных данных?

Часто данные, созданные с помощью описанных выше средств, могут быть недостаточно большими для самостоятельного построения сложной модели. Итак, какие у нас есть варианты?

  • Слабый контроль создает зашумленные помеченные данные с помощью эвристики и изучает с их помощью надежную модель прогнозирования. Snorkel — популярный инструмент для обучения моделей слабого контроля, и вот статья, где они объясняют больше о том, как и почему работает слабый контроль.
  • Обучение с переносом использует существующую модель, которая изучает некоторые другие похожие задачи и адаптирует ее к текущему сценарию данных/проблем. HuggingFace — популярная библиотека НЛП с некоторыми простыми в использовании вариантами обучения переносу. Вот статья, в которой объясняют, как это работает.
  • Полууправляемое обучение использует небольшой объем помеченных данных для построения не очень хорошей модели и итеративно обучает модель с использованием все большего количества данных, беря их из наиболее достоверных прогнозов предыдущей модели. . Вот недавняя статья о том, как Google использует частично контролируемое обучение в масштабе.
  • Активное обучение вовлекает человека в процесс и отправляет некоторые прогнозы вашей модели на маркировку человеком, что постепенно повышает производительность модели. Я нашел эту книгу Роберта Манро очень полезной по этой теме. Вот статья о том, как Amazon использует активное обучение для повышения производительности Alexa.

Все вышеупомянутые стратегии обычно используются в сценариях исследований и приложений НЛП, наряду с современными методами машинного/глубокого обучения.

Вот полезная статья Юджина Яна о различных стратегиях решения этого сценария отсутствия помеченных наборов данных, рассматривая более общие варианты использования, выходящие за рамки НЛП.

Примечание редактора: Совмя будет спикером на ODSC APAC 2021! Посмотрите их доклад «Как заниматься НЛП, если у вас нет помеченного набора данных?» там! Подробнее об этом сеансе работы без готовых наборов данных НЛП:

Отсутствие готовых наборов данных НЛП — часто встречающийся сценарий в отраслевых проектах, связанных с НЛП. Это также ситуация, с которой часто сталкиваются исследователи, исследующие новые проблемы или новые языки. Однако как традиционные учебники, так и учебные пособия и семинары в основном сосредоточены на моделировании и развертывании моделей. На этом семинаре я расскажу о некоторых стратегиях создания помеченных наборов данных для новой задачи и создания ваших первых моделей с этими данными. Ожидается, что в конце этой сессии участники получат некоторые идеи по устранению узких мест в данных в их организации. Целевой аудиторией являются специалисты по данным, а также те, кто занимается сбором требований для конкретной задачи НЛП.

Об авторе работы без готовых наборов данных НЛП:

Sowmya Vajjala работает исследователем НЛП в Национальном исследовательском совете Канады и является соавтором книги Практическая обработка естественного языка: комплексное руководство по построению реальных систем НЛП опубликовано O'Reilly Media (2020).