NLP-инженер (NLP от англ. natural language processing) — специалист, обладающий компетенциями в сферах прикладной математики, лингвистики и разработки программного обеспечения. Сегодня предлагаем поближе познакомиться с профессией NLP-инженера, узнать об основных задачах и роли в компании. Помог разобраться в непростой теме Иван Харченко, руководитель математико-лингвистического отдела системы управления репутацией и медиа анализа «СКАН-Интерфакс».
Кто такой NLP-инженер и чем он занимается в компании
Как технический специалист NLP-инженер отвечает за расширение возможностей бизнеса при обработке информации на естественных языках. NLP-инженер реализует наукоёмкие правила и алгоритмы и применяет инструменты машинного обучения. NLP-инженер решает задачи по анализу и извлечению информации из текстов, в том числе методами ML.
Иван Харченко
Руководитель математико-лингвистического отдела системы управления репутацией и медиа анализа «СКАН-Интерфакс»
Однако его задачи могут не ограничиваться только сферой машинного обучения, так как некоторые из них требуют углублённых знаний математики, лингвистики и теории алгоритмов. Ну и, конечно же, NLP-инженер должен быть неплохим программистом. Чтобы анализировать и извлекать данные из текстов, необходимо не только отвечать на множество инженерных вызовов, но и уметь правильно готовить такие данные.
В 2017 году в области искусственного интеллекта и машинного обучения произошла революция. Появилась нейросетевая архитектура «трансформер». Она позволила добиться невероятных результатов в решении задач автоматизированной обработки текстовых данных. NLP-инженеры получили в свои руки инструменты, которые в короткие сроки значительно повышают качество анализа неструктурированной информации.
Взаимосвязь математики и лингвистики
Скажем сразу: в данной специальности одно без другого существовать не может.
В работе NLP-инженера две противоположных науки связаны через необходимость создания математической модели естественного языка.
Современные компьютеры способны понимать только числа и логические операции. Для обработки текстов требуется описать лингвистические закономерности и правила на понятном машине языке. Многие задачи невозможно решить, опираясь только на знания математики и программирования. Разработчик обязан владеть предметной областью, с которой работает — лингвистикой.
Другими словами, если математик-лингвист не понимает русский язык, то он не сможет написать правило, которое будет действовать на обработку падежей в тексте.
Старт профессии: где учиться и куда пойти работать
В российских университетах много программ бакалавриата и магистратуры в различных отраслях Data Science. В МГУ имени М. В. Ломоносова на механико-математическом и филологическом факультете есть:
«Фундаментальная и прикладная лингвистика»
«Математика»
«Прикладная математика и информатика»
«Фундаментальная информатика и информационные технологии»
«Математика и компьютерные науки»
В ВШЭ — «Прикладной анализ данных и искусственный интеллект», «Компьютерные науки и анализ данных», «Компьютерные системы и сети». В МГТУ имени Н. Э. Баумана — «Информатика, искусственный интеллект и системы управления», «Системы обработки информации и управления», «Фундаментальная и компьютерная лингвистика» и другие.
Чтобы определиться с направлением обучения, необходимо понять, какая из областей вас интересует:
Если в ваши цели входит самостоятельное изобретение инновационных технологий в ИИ, то в университете нужна профильная математика с углублённым изучением Data Science и Deep Learning.
Если же вы стремитесь к решению прикладных и бизнес-задач и готовы использовать уже существующие решения, то предпочтение сто́ит отдать разработке программного обеспечения и ML-инфраструктуры. К промышленным языкам разработки относим: C++, C#, Java и другие. Область знаний — разработка распределённых систем. Средства MLOps — инфраструктура для автоматизации работы с машинным обучением: MLFlow, AirFlow и так далее.
Но и в первом, и втором случае необходимо хорошо знать и чувствовать русский язык. Качество работы логических правил, алгоритмов и моделей машинного обучения невозможно оценить без базовых знаний в области лингвистики. Специалисту важно понимать природу данных, с которыми он работает. Любой естественный язык, в том числе русский, непрерывно развивается — появляются новые слова и понятия, устойчивые словосочетания, меняется информационный фон, и многие ранее важные контексты становятся статистически незначимыми. Из-за этого необходимо постоянно адаптировать лингвистическую логику, алгоритмы и статистические модели к изменчивости языка. Помимо грамотности, важно, чтобы человек ориентировался в соответствующем бизнес-контексте и понимал, что и как ему оценивать. Само понятие качества решения задачи не всегда ограничивается только точностью и полнотой. Можно оценивать ещё ресурсоёмкость и скорость работы, а для этого уже нужны инженерные знания.
Чтобы быстро углубить свои знания в специальности, можно пройти дополнительное обучение. У «Нетологии» есть несколько курсов в области Data Science, которые подходят даже начинающим.
Важно понимать, что не все компании готовы брать к себе специалистов без практического опыта. Например, СКАН — большой и логически нагруженный проект со сложной инженерной структурой и высоким порогом входа. Поэтому при найме разработчиков мы ориентируемся как на их теоретическую базу, так и на практический бэкграунд. Отдаём предпочтение тем, кто ранее был связан с обработкой текстов. При этом мы с радостью берём ребят из вузов в отдел лингвистической обработки — они работают над качеством разметки текстов. Там студенты учатся специальности и осваивают инструменты.
Личные качества и профессиональные навыки, которые нужны NLP-инженеру
Профильные навыки, без которых специалист не сможет выполнять поставленные задачи:
Знание профильной математической базы.
Базовое понимание русского языка (морфология, семантика, падежи).
Знание программирования на уровне middle и выше.
Знание Python, в особенности для NLP-инженера.
Умение находить самое простое решение — оно всегда лучшее.
Понимание алгоритмов машинного обучения: нейронные сети, алгоритмы кластеризации, логистическая регрессия.
Знание промышленных языков разработки: C++, C#, Java.
Личные качества позволяют эффективно выполнять рабочие задачи и продвигаться вверх по карьерной лестнице. Самые основные:
Умение работать с людьми.
Лидерские качества.
Внимательность.
Желание углублять знания в разных областях IT.
Стрессоустойчивость: работа не из простых.
Ответственный подход к работе.
Повышение компетенции — один из ключевых моментов в работе IT-специалистов. У NLP-специалистов это происходит в процессе работы. Для достижения результатов необходимо осваивать новые инструменты и улучшать уже существующие алгоритмы и правила. Специалисты повышают квалификацию непрерывно. Для реализации новых функций и решения задач нужны знания в смежных областях. А это приводит к вертикальному и горизонтальному карьерному росту. Безусловно, уровень заработной платы напрямую зависит от опыта работы и от специализации: чем уже профиль, тем выше востребованность сотрудника.
Работа NLP-инженера на практике
NLP-инженеры могут поделить свою работу на две сферы:
Плановые задачи по разработке и поддержке существующих функций системы.
Факультативные исследовательские задачи. В их рамках разрабатывают стратегию улучшения бизнес-процессов, проверяют аналитические гипотезы, ищут новые подходы к решению разных задач.
Если говорить о СКАНе, то мы делим работу на несколько блоков.
Первый блок — это поддержка логического ядра системы. СКАН исторически построен на системе логических правил, оперирующих моделями естественных языков. Правила и языковые модели описаны на высокоуровневом промышленном языке программирования и позволяют извлекать из текстовых документов те знания, которые мы предоставляем клиентам.
Есть задача определения прямой речи. Прямая речь в СКАНе — не только прямая, но и косвенная, то есть всё, что может считаться «голосом компании». Для определения прямой речи на основе анализа корпуса новостных текстов описано множество паттернов. Они содержат различные части речи и конструкции, которые могут быть семантически интерпретированы как речевые маркеры: сообщил, сказал, заявил, по сообщению, по информации, согласно исследованию.
Для определения границ прямой речи необходима точная работа синтаксического анализатора. Помимо непосредственно определения прямой речи и её границ требуется произвести ещё ряд специализированных действий над сущностями, которые являются авторами прямой речи. Например, снять с них тональность — если организация является автором исследования, в рамках которого делается негативный вывод, то на эту компанию не должен ставиться негатив, даже контекстный. Всё это требует разработки специальной логики и инструментов работы с лингвистическими моделями документов.
Второй блок — применение искусственного интеллекта для решения бизнес-задач. Инженеры отвечают за разработку новых подсистем, использующих как нейросетевые технологии Deep Learning, так и алгоритмы классического машинного обучения от сбора и анализа тестовых данных до проверки гипотез и поставки обученных моделей в промышленную эксплуатацию.
Для повышения точности связывания именованных сущностей из текста с организациями из базы данных СПАРК необходимо было реализовать механизм классификации контекстов упоминания этих сущностей по видам экономической деятельности в соответствии с ОКВЭД. То есть если в тексте упоминается некая компания ООО «Рога и Копыта» в следующем контексте: «За прошлый год ООО „Рога и Копыта“ закупило 200 единиц сельскохозяйственной техники, поэтому в этом году полностью готово к началу посевной кампании», — то мы должны по этому предложению определить, что ООО «Рога и Копыта», скорее всего, соответствует коду 01 ОКВЭД, а именно «Растениеводство и животноводство, охота и предоставление соответствующих услуг в этих областях». Это позволило бы в дальнейшем при решении задачи связывания сущностей — идентификации по СПАРК — отсеять варианты с неподходящим кодом экономической деятельности.
Вот что мы сделали для решения этой задачи:
Для каждого кода ОКВЭД верхнего уровня собрали новостные документы с упоминаниями компаний, у которых в уставных документах указан соответствующий вид экономической деятельности как основной.
Из этих документов собрали контексты упоминания организаций: 1–2 предложения до упоминания и 1–2 предложения — после упоминания.
На основе выделенных контекстов составили словари ключевых слов для каждого из видов экономической деятельности.
Взвесили их с помощью меты Tf*Idf.
Для каждого вида экономической деятельности обучили модель SVM-классификатора методом ONE-vs-ALL.
Откорректировали параметры классификаторов для достижения требуемой точности 95%.
Реализовали REST-сервис, использующий обученные модели для multilabel-классификации контекстов.
Захостили сервис в k8s и реализовали его вызов в пайплайне обработки документа.
Для оценки качества решения задач NLP-инженеры используют множество показателей. Основные — точность и полнота. Вычисляют их на основе специально подготовленной выборки данных.
Допустим, нужно провести классификацию новостей и разделить их на технические — сводки финансовых рынков — и нетехнические:
Собираем новости с упоминаниями акций, котировок, тикеров.
Размечаем эту выборку вручную: помечаем документы, которые точно являются техническими, и те, которые ими не являются.
Делим полученную выборку на две части: обучающую и тестовую в соотношении 70 на 30.
Обучаем модель на обучающей выборке, тестируем на тестовой.
Смотрим на показатели качества и проводим кросс-валидацию.
Проводим экспертное тестирование на промышленных данных.
Делаем выводы.
Почему NLP-инженеры — это будущее сервисов информационного поиска?
Бизнесу, связанному с обработкой текстовой информации, особенно необходимы такие специалисты. Необходимо постоянно адаптироваться к изменчивости естественных языков и информационного фона. Поэтому инженерные усилия концентрируются на создании максимально универсальных технологических решений. А они зачастую представляют собой симбиоз различных технологий. Люди, которые ими владеют, будут всегда в топе.