Эффективные конвейеры и рабочие процессы НЛП, часть 2

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

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

Загадочные мешки слов на предприятии 🔎

На практике НЛП обычно не выполняется с типами чистых наборов данных, которые вы можете найти в курсовой работе или опубликовать на соревнованиях Kaggle. НЛП в полевых условиях обычно сопровождается ошибками OCR (оптического распознавания символов), орфографическими орфографическими ошибками и острой терминологией, зависящей от предметной области, с которой многие нестандартные решения не могут справиться. Джастин Дж. Нгуен рассказал, как работать с темными данными в своем выступлении на PyData Miami 2019 (https://www.youtube.com/watch?v=iFgNcBahUAE).

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

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

Это была утечка времени и ресурсов, поскольку большинство ответов содержалось в документации и были решены ранее, поэтому эффективная система поиска информации (читай: поисковая система) по документации компании могла бы сделать проблему решаемой одним специалистом службы поддержки. :

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

  • Минимум помеченных данных
  • Машинное обучение с учителем может быть невозможно
  • Для извлечения функций требуются дополнительные усилия: немаркированные данные означают, что вы начинаете, не зная, какие функции актуальны.
  • Важность глубокого понимания корпуса: у документов много разных авторов, использующих разную терминологию и разные стили написания
  • Ненадежная грамматика, орфография, синтаксис и т. Д.
  • Модели последовательности ограничены, потому что предложения разнообразны по грамматике и синтаксису, а корпус может содержать необычные орфографические или орфографические ошибки.
  • Может потребоваться нечеткое сопоставление для правильного исправления орфографических ошибок, связанных с доменом.
  • Уникальная терминология
  • Терминология может быть уникальной для отрасли или компании, поэтому нет онтологий с открытым исходным кодом для использования.
  • Требуются индивидуальные онтологии, адаптированные для корпуса
  • Доступность обучения
  • Для начала не так много размеченных данных
  • У экспертов нет времени размечать ваши данные
  • Для развертывания решения необходимо быстрое улучшение моделей, но трудно понять, насколько хорошо вы справляетесь, если у вас нет экспертов в предметной области для оценки.

Чтобы учесть эти ограничения, важно иметь возможность быстро перебирать несколько типов методов извлечения признаков вместе с их комбинациями. Джастин приводит два примера конвейеров извлечения информации для разных корпусов нефтегазовой компании:

В «Предприятие 1: Технические отчеты» мы начинаем с предварительной обработки и извлечения признаков. Технические отчеты обычно имеют надежную грамматику и синтаксис, потому что они тщательно написаны и проверены, поэтому возможны более мощные методы извлечения функций, такие как тройки субъект-предикат-объект, для создания «намеренных» функций в дополнение к типичным функциям, которые вы можете извлекать, например сущностям и темам. . Отсюда вы можете сгруппировать свои векторы функций, применить модель машинного обучения и ранжировать наиболее релевантные документы. «Предприятие 2: вопросы и ответы» - это документы, в которых содержится широкий спектр ответов на технические вопросы, на которые может дать ответ любой человек и которые не проверяются экспертами. Эта проблема более сложна, поскольку существует более высокая вероятность ошибок в орфографии, грамматике и синтаксисе, поэтому функции «намерения» могут быть невозможны. В этих документах необходимо сделать упор на снижение шума без потери соответствующей информации. Выполнение итеративного процесса удаления зашумленных функций из текста до тех пор, пока не будут извлечены соответствующие функции, в этой проблеме требует больше времени и менее систематичен. Кроме того, неконтролируемые подходы, такие как скрытое распределение Дирихле, больше подходят для менее структурированного корпуса, подобного этому.

Все это, конечно, можно улучшить, сначала построив языковую модель для понимания корпусов вашей проблемы. Потребность в понимании корпуса, зависящего от предметной области, проиллюстрирован Джастином на двух примерах: в вашей модели может потребоваться понимание того, что «SEC» может означать «Юго-восточная конференция» в студенческом спорте или «Комиссия по ценным бумагам и биржам» в финансах. Кроме того, слова, которые, кажется, не имеют никакого отношения по написанию или длине, такие как «Fe» для «Iron», должны быть приравнены в вашем корпусе. Понимание корпусов существует в диапазоне от статистического / моделирования до ручного аннотирования и анализа человеком.

То, насколько вы будете опираться на ту или иную сторону этого спектра, в основном зависит от размера корпуса, который у вас есть. Для очень большого корпуса такие методы, как Word2Vec, могут неконтролируемым образом создавать значимые отношения между словами. Однако, если ваш корпус невелик и не поддается статистической модели, возможно, стоит вручную создать сопоставления словаря, чтобы зафиксировать знания, необходимые для понимания языка в вашем корпусе.

Систематизировать анализ того, как действовать в понимании корпусов, можно с помощью множества инструментов. Используя графики лексической дисперсии (привет доктору Билбро из части 1 https://www.scikit-yb.org/en/latest/api/text/dispersion.html), вы можете понять, сосредоточены ли определенные слова в определенных части тела или распространяться повсюду. Вложения слов могут позволить сопоставление сущностей через близость в тексте, чтобы обеспечить понимание близости слов и вероятности взаимосвязи. Скрытое распределение Дирихле обеспечивает неконтролируемый подход к кластеризации документов, а такие инструменты, как LDAvis (https://github.com/bmabey/pyLDAvis), позволяют просматривать словарь, содержащийся в тематических кластерах.

В конце концов, использование гибких конвейеров для опробования различных техник извлечения функций позволит вам итеративно понимать свой корпус (серьезно, посмотрите замечательный менеджер конвейеров nlp Захарии Миллера https://github.com/ZWMiller/nlp_pipe_manager). Это то, что требует вдумчивого рассмотрения и небольшого количества проб и ошибок для решения в немаркированных наборах данных для конкретной предметной области. Джастин дает полезную таблицу того, что доступно в различных типах корпусов, что сформирует ваш подход к пониманию корпусов:

Технические отчеты могут охватывать широкий круг тем и, таким образом, иметь высокую степень лексического разнообразия для сложных сопоставлений между объектами, в то время как форумы вопросов и ответов могут предлагать большой корпус с шумным языком. Справочные руководства будут очень хорошо структурированы по грамматике и орфографии, но ограничены по размеру корпуса. Подход к извлечению признаков в каждом из этих корпусов должен быть адаптирован к их характеристикам. Испытайте на себе систему поиска информации о нефти и газе Джастина на https://www.refiningonline.com/.

Заключение

Самое интересное в НЛП часто приписывают построению моделей и просмотру их прогнозов. Однако в большинстве проектов это небольшая часть работы. Преобразование ваших данных в соответствии с выбранной вами моделью - самая сложная и самая важная часть проекта НЛП, о чем говорилось в выступлениях Захарии Миллера, доктора Ребекки Билбро и Джастина Дж. Нгуена в PyData Miami. Модульные конвейеры и инструменты для извлечения функций могут сделать этот процесс увлекательным, эффективным и в конечном итоге привести к модели, которая работает оптимально.

Надеемся увидеть вас на PyData Miami 2020!

Https://pydata.org/miami2020/