Карьера в 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).

Похожие статьи:
В рубриці DOU Labs ми запрошуємо IT-компанії ділитись досвідом власних цікавих розробок та внутрішніх технологічних ініціатив. Питання...
Айтівці з невеликим досвідом роботи — найбільш вразливі до коливання ринку вакансій після початку війни рф проти України. Тож яка...
The gig economy has been celebrated in many ways, claiming to offer freedom to workers everywhere. However, there is a darker side to the gig economy which mustn’t be ignored. As it has grown, various stories have been upheld as noble...
Одна з найбільших українських IT-компаній ZONE3000 оголосила про співпрацю з фахівцями з Європи, зокрема з Польщі. Це можуть бути...
Після трирічної перерви ми відновлюємо рейтинг шкіл для сфери ІТ. До повномасштабного вторгнення редакція DOU разом...
Яндекс.Метрика