Карьера в IT: NLP Engineer и NLP Researcher

В новой статье серии «Карьера в IT» поговорим об одной из специализаций Data Science — Natural Language Processing. NLP Specialist занимается обработкой естественного языка: это могут быть задачи по распознаванию речи, машинному переводу, определению эмоциональной окраски текста и так далее.

Об этой предметной области нам рассказали Всеволод Демкин (Franz, Projector School), Карим Лулу (Galactica Labs), Константин Бохан (N-iX), Роман Хабунь (FreySoft) и Сергей Сотник (Phase One Karma).

Задачи и обязанности

Специалист по NLP может заниматься преимущественно исследовательской или инженерной работой.

NLP Researcher — это исследователь, который отвечает за грамотную работу с данными и организацию корректных и воспроизводимых экспериментов. Такому специалисту полезно иметь глубокие знания по лингвистике или работать в тесной связке с компьютерным лингвистом.

NLP Research Engineer — разработчик с хорошими знаниями математики, алгоритмов, оптимизации, который может эффективно внедрять наработки исследователей и помогать им. Такому специалисту достаточно иметь базовое представление о лингвистике, семантике и лексике — понимать природу данных, с которыми работает.

«Исследователь должен найти метод решения задачи, сделать прототип. А инженер уже „вылизывает“ его, оптимизирует до состояния, когда он будет надежно работать на продакшене и не требовать чрезмерно большого (соответственно, дорогого) количества ресурсов. Но в небольших компаниях эти роли нечетки» (Сергей Сотник, Senior Data Scientist в Phase One Karma).

«В принципе, эти две роли могут совпасть в одном человеке. Но тогда это, как правило, уже уровень лида» (Всеволод Демкин, Software Developer в Franz, преподаватель в Projector School).

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

«Последнее время работаю над системой по разбору и извлечению информации из документов в legal tech домене. Наша основная цель — создать некую структуру данных из документа, с которой пользователю будет легко производить различные манипуляции: запросы, трансформации частей документа, слияние документов и так далее» (Карим Лулу, Machine Learning Engineer в Galactica Labs).
«На нашем проекте NLP используется в связке с CV (Computer Vision) и OCR для исправления ошибок OCR и верификации корректности документов, которые циркулируют в большой индустриальной системе. Я отвечаю за все этапы жизненного цикла сервиса: от проверки гипотез, поиска SOTA и POC на Kubeflow Notebook Services — до Helm для разворачивания микросервиса, юнит- и интеграционных тестов» (Константин Бохан, Tech Lead в N-iX).

«В мои обязанности входит спектр задач, начиная от проверки гипотез, сбора, очистки и препроцессинга данных, исследования и построения тестовых моделей и заканчивая реализацией и развертываниям модели в продакшн-среде с разработкой сопутствующих модулей» (Роман Хабунь, Data Science/NLP Engineer в FreySoft).

У каждого проекта есть свои этапы, которые в процессе разработки могут итеративно повторяться:

  • изучение предметной области;
  • подготовка данных;
  • проба адаптации различных алгоритмов;
  • доведение самого перспективного варианта до рабочего состояния.

От того, на каком этапе проект, как правило, зависит типичный рабочий день NLP-специалиста.

«Первый этап — поиск и чтение статей. Часто на это уходит не один день. Второй этап — данные. Очень редко, когда они есть, размеченные и в хорошем качестве. На подготовку данных могут уйти месяцы и огромный бюджет. Одновременно добавляются задачи по кодированию: нужно написать разные утилиты, которые скрейпят данные из разных источников, конвертируют, считают метрики, чистят код. Наконец, третий этап — обучение модели» (Сергей Сотник, Senior Data Scientist в Phase One Karma).

«Мое рабочее время распределяется примерно так: 30% — сбор данных, препроцессинг и исследования, 40% — реализация, 30% — оценка метрик модели» (Роман Хабунь, Data Science/NLP Engineer в FreySoft).

«У меня на написание кода обычно уходит 3-4 часа в день. Остальное время распределяется между различными задачами: ревью кода, оценка ошибок модели/системы „глазами“ с помощью реальных данных (текстов), определение перспективных направлений по улучшению системы, разметка данных (редко), очистка данных, планирование задач, развертывание или тестирование новой версии системы (редко), мониторинг или диагностика продакшн-систем (MLOps)» (Карим Лулу, Machine Learning Engineer в Galactica Labs).

В зарплатном опросе на DOU нет данных о зарплатах NLP-специалистов — только Data Scientists без деления на специализации. Средняя зарплата Data Scientist с опытом работы от трех лет — $3000, от четырех-пяти лет — почти $4000.

«Из личного опыта скажу, что у специалиста узкого профиля (будь то CV или NLP) зарплата будет в среднем выше, чем у General Data Scientist или General Machine Learning Engineer при похожем опыте и образовании» (Карим Лулу, Machine Learning Engineer в Galactica Labs).

Преимущества и недостатки

В основном специалисты выбирают направление NLP, потому что им это интересно:

«На одной из первых работ я был в роли аналитика данных. Однажды команда продаж попросила нас улучшить фильтрацию „похожих“ клиентов в Excel-таблице. Оказалось, что мы собираем много разных текстовых данных по клиентам, которые никак не используются в фильтрации. Мы применили базовые методы NLP — и существенно улучшили результаты. Этот случай помог оценить потенциал обработки текстовых данных, тогда и заинтересовался этим направлением.

Мне нравится, что индустрия стремительно развивается: постоянно на слуху релизы новых NLP-моделей от Google, Facebook, Open AI, интеграции различных моделей в опенсорсные библиотеки, достижения Human Performance или новые state-of-the-art показатели в NLP-задачах» (Карим Лулу, Machine Learning Engineer в Galactica Labs).

«Я попал в Grammarly на раннем этапе развития компании, и так вышло, что в какой-то момент пришло время сделать акцент на углубление NLP-экспертизы в ней. Я быстро понял, что это самая интересная из AI-сфер, так как язык — это способ описания логики и мыслей, а не более простых и абстрактных образов» (Всеволод Демкин, Software Developer в Franz, преподаватель в Projector School).
«Мне интересно все, что связано с машинным обучением. При этом NLP — настолько широкая область, что её подходы находят себя и в других местах. Например, генерация музыки может быть описана как процесс написания текста на специфическом языке. На конференции Data Science UA был хороший доклад о том, что изобретение новых лекарств происходило в пространстве специализированного языка описания химических формул, который позволяет описать и их 3D-структуру. И там применялось все то, с чем сталкиваюсь в своей работе» (Сергей Сотник, Senior Data Scientist в Phase One Karma).

Среди недостатков отмечают размытое распределение обязанностей на проектах NLP и небольшое количество вакансий как в мире, так и в Украине (на момент публикации на DOU открыто всего три вакансии).

«Что является недостатком NLP-сферы? Наверное, малое количество продуктов, которые люди придумывают в ней. К примеру, есть онлайн-переводчики (Google Translate), сервисы проверки и исправления текстов (Grammarly), чат-платформы (PandoraBots), сервисы по анализу текстов на такие вещи, как тональность (AlchemyAPI), маркетинговая бренд-аналитика (YouScan). Но спектр возможных NLP-powered продуктов, на мой взгляд, намного шире, так как с текстом приходится иметь дело всем и постоянно.


Соответственно, вакансий достаточно мало. Одна из причин — в Украине никогда не было NLP-школы, в отличие от того же CV. Мы, кстати, ставим себе целью изменить эту ситуацию: каждый год выпускаем на рынок примерно 10 подготовленных к работе в этой сфере специалистов» (Всеволод Демкин, Software Developer в Franz, преподаватель в Projector School).

«Для DS-специалиста всегда интереснее заниматься исследованиями и построением моделей, чем рутиной по внедрению и развертыванию. Пока что в специальности нет четкого разграничения активностей на проекте. Надеюсь, в будущем появятся четкие роли и границы ответственности» (Роман Хабунь, Data Science/NLP Engineer в FreySoft).

Также NLP-специалисты выделяют «нелюбимый» этап — разметку и очистку данных.

«Помимо самых лакомых кусочков, связанных с обучением, есть много скучных, но обязательных этапов. Прежде всего, это подготовка данных. Приятно, если и эту часть удается сделать для себя интересной, ведь появилось много подходов, позволяющих работать с неразмеченными данными. Но что-то, например разметка тестового датасета, останется в любом случае» (Сергей Сотник, Senior Data Scientist в Phase One Karma).

«Наверное, почти всем специалистам из ML/DS-индустрии не получается избежать процесса очистки данных. Но с текстами эта проблема усугубляется наличием опечаток, недопустимых символов и прочих артефактов. Иногда приходится подолгу писать кастомные модули именно для очистки данных» (Карим Лулу, Machine Learning Engineer в Galactica Labs).

Как стать специалистом по NLP и куда двигаться дальше

Прежде всего определитесь, в каком направлении хочется работать: исследовательском или инженерном.

«Как я не устаю повторять, в исследовательском мире нет мгновенного вознаграждения, которое дает обычное программирование. Можно сделать сотню провальных экспериментов и впасть в глубокую депрессию, не получив никакого положительного результата :) С другой стороны, в этой сфере, пожалуй, больше пространства для творчества.


Инженерам в какой-то степени легче. Работа Research Engineer находится на стыке разработки и исследований, тут большое поле для применения продвинутых знаний по алгоритмам и математике. Но есть и опасность почувствовать себя „недоисследователем“ и заработать комплекс неполноценности от этого :)» (Всеволод Демкин, Software Developer в Franz, преподаватель в Projector School).

Как базовое образование для будущего NLP-специалиста можно рассматривать IT-направления («Программная инженерия», «Компьютерные науки», «Прикладная математика» и так далее) или же специализацию «Компьютерная лингвистика».

Новичку важно знать статистику, линейную алгебру, а также один из высокоуровневых языков программирования — например, Python. Затем освоить сбор и препроцессинг данных, общие алгоритмы и методы машинного обучения. Наконец, получить знания в домене компьютерной лингвистики, выучить специфические NLP-модели глубокого обучения.

«Также важно иметь широкий спектр инженерных умений: написание качественного кода, покрытие кода тестами, развертывание систем, виртуализация, логирование, создание дашбордов и умение быстро работать с текстовыми данными в консоли (очень недооценено!)» (Карим Лулу, Machine Learning Engineer в Galactica Labs).

В обучении помогут онлайн-курсы Natural Language Processing на Coursera, Complete Data Science Bootcamp на Udemy, Natural Language Processing with Deep Learning от Stanford Online, курс CompLing Summer School от компании Grammarly, а также офлайн-курс Data Science. Natural Language Processing от Марьяны Романишин и Всеволода Демкина.

«Пройдите два-три онлайн-курса. Один по машинному обучению, далее — по нейросетям, а затем уже по NLP. Не знаю, стоит ли говорить, что они должны быть на английском. Кроме того, важно окружить себя информацией по специальности. Я читаю блог компании Hugging Face на LinkedIn, сейчас они со своей библиотекой Transformers находятся на острие прогресса» (Сергей Сотник, Senior Data Scientist в Phase One Karma).
«Я слежу за твиттерами некоторых топовых людей в этой сфере: Yoav Goldberg, Matthew Honnibal, Tal Linzen, François Chollet, Richard Socher, а от них уже дальше расходятся ниточки» (Всеволод Демкин, Software Developer в Franz, преподаватель в Projector School).

Также специалисты по NLP советуют ресурс Towards Data Science и научные статьи на arXiv.org и Papers With Code (сюда попадают только статьи с кодом, который можно запустить и получить те же результаты, что и у авторов).

Будут полезны книги:

Что касается карьерных перспектив, NLP-отрасль постоянно развивается, поэтому рост по горизонтали к новым технологиям и задачам практически не ограничен.

«Хотелось бы развивать свои знания и умения в направлении NLP, поработать в разных доменах, улучшить понимание применимости тех или иных методов. И в итоге стать специалистом более высокого калибра» (Карим Лулу, Machine Learning Engineer в Galactica Labs).

«Можно стать, например, Delivery Lead или R&D Director для проектов на основе NLP, а также CTO в стартапах на основе NLP. Вариантов множество» (Константин Бохан, Tech Lead в N-iX).

Похожие статьи:
Наш соотечественник Максим Плахотнюк (Винница) сейчас работает в датском нанокластере DanChip. Максим рассказывает, чем отличается...
Ник (Николай) Белогорский — эксперт по кибербезопасности с почти 20-летним стажем. Работал в Facebook главным антивирусным...
Апдейт 05.11.2020: статья обновлена («Этап третий — работа» и «Этап четвертый — повышение и увольнение»). [Богдан...
Летом прошлого года американская продуктовая компания Globality открыла в Киеве R&D-центр. Перед тем как это...
До вашої уваги дайджест навчальних програм для тих, хто починає свою кар’єру в ІТ. У цьому номері...
Яндекс.Метрика