Natural Language Processing (NLP), или обработка естественного языка, — одно из направлений развития искусственного интеллекта, в котором машинные модели обучаются понимать и воспроизводить человеческую речь. Разработкой и обучением таких моделей занимаются отдельные специалисты — NLP-инженеры.
Спросили у дата-сайентиста и биоинформатика Марии Дьяковой, что входит в задачи NLP-инженера, какие компании нанимают таких сотрудников и как освоить новую профессию.
Что входит в задачи NLP-инженера
NLP-разработчики создают и настраивают модели искусственного интеллекта, обучают их на больших текстовых данных — чтобы те могли общаться с людьми. Эту большую задачу можно разделить на несколько этапов.
Подготовка данных. Языковые модели обучают на больших массивах текстов. Это могут быть книги и статьи, комментарии в интернете, научные публикации, отзывы, переписки с друзьями и многое другое. Но перед тем как загрузить тексты в модель для обучения, их нужно подготовить. От этого шага во многом зависит точность результатов модели.
NLP-инженер подготавливает данные так, чтобы алгоритм с их помощью научился выдавать верный результат:
- собирает с нуля или подбирает готовые датасеты для обучения;
- очищает данные от «мусора», например бранных слов или запрещенной информации, а также обезличивает — удаляет персональные данные людей;
- при необходимости размечает информацию — например, при создании классификаторов бывает нужно распределить входные данные по категориям;
- преобразует текст в вид, доступный для математических моделей, например с помощью лемматизации или стемминга, то есть «вырезания» окончаний и выделения грамматической основы.
Разработка моделей. Когда данные подготовлены, NLP-специалист может применить один из двух подходов:
- Использовать готовые алгоритмы. Чаще всего это большие языковые модели (LLM), например семейств GPT или BERT. Специалист подгружает готовую архитектуру с помощью фреймворков вроде TensorFlow или PyTorch. Эти модели уже предобучены на больших объемах данных и могут быть адаптированы к конкретной задаче.
- Разработать модель самостоятельно. NLP-инженер берет за основу архитектуру и сам пишет код модели под конкретную задачу. Это могут быть простые решения вроде цепей Маркова или мешка слов, или более сложные — рекуррентные или сверточные нейронные сети.
Чаще всего инженеры используют готовые алгоритмы. С нуля модели разрабатывают реже, в основном в рамках исследований или для решения специфических задач — например, обработки данных с высокими требованиями к приватности. Либо если задача слишком простая, чтобы использовать LLM.
Обучение моделей. Созданную модель обучают на большом объеме предобработанных данных.
- Если модель не обучалась ранее — сначала нужно научить ее в целом понимать человеческую речь. Для этого используют огромные массивы текстовой информации самых разных форматов: от литературы до отзывов в интернете.
- Готовые модели часто предобучены и уже понимают речь. Но даже в этом случае их нужно настроить на анализ конкретного типа данных — например, научных статей или математических формул. Для этого используют дообучение на специфических текстах, с которыми в будущем должна работать модель.
Оптимизация моделей. Для работы ML-моделей нужны большие мощности и дорогостоящие сервера. Поэтому после обучения модель оптимизируют — дорабатывают так, чтобы она потребляла меньше ресурсов. Для этого NLP-инженер может применять разные методы:
- использовать более эффективные архитектуры — изменять структуру модели, чтобы вычисления в ней отнимали меньше ресурсов;
- оптимизировать код — переписать его с применением других алгоритмов и команд, которые могут ускорить выполнение задач и снизить нагрузку на ресурсы;
- оптимизировать данные — например, с помощью кэширования или уменьшения выборки за счет создания искусственных, более информативных примеров.
Развертывание моделей. Последний шаг — развернуть и запустить модель на внутренних или внешних ресурсах. Например, загрузить в облако или на собственный сервер компании. Иногда развертыванием занимается DevOps-специалист, но чаще — сами NLP-инженеры. Для этого они пользуются фреймворками, которые предоставляют API для запуска модели: TensorGlow Service, PyTorch Service и др.
Какие задачи бизнеса решает NLP-инженер
«Сырые» текстовые данные сами по себе не несут ценности. Задача NLP-инженера — преобразовать их в полезные для бизнеса решения. Например, на основе данных о диалогах можно создать чат-бот, который сможет общаться с клиентами и снизит нагрузку на живых сотрудников. Вот в каких еще бизнес-задачах применяются NLP-технологии:
- Поиск информации. Модель можно обучить вычленять из массива данных нужную информацию и быстро передавать ее человеку. Например, так работают поисковые системы. Также алгоритмы могут выделять главные мысли из текста и составлять краткое содержание.
- Анализ данных. Сырые данные можно систематизировать, определить в какую-то категорию и пользоваться в будущем. Например, с помощью NLP автоматически создают базы данных (например, словарь терминов, список клиентов и т. д.) — модель сама разбирает массив неструктурированной информации и добавляет в базу.
- Автоматизация. Модели можно отдать рутинные задачи, с которыми она справится быстрее человека. Например, переводы текстов, прием заказов, общение с клиентами и так далее.
Как стать NLP-инженером
Для работы с искусственным интеллектом и NLP будет полезно высшее образование в области IT или математики. При этом многие работодатели предпочитают нанимать людей, которые прежде всего имеют опыт в нужной предметной области.
Например, если компания работает с биологическими текстами, она скорее наймет сотрудника с образованием биолога, чем того, кто работал только в IT.
В любом случае сотрудник должен разбираться в аналитике, машинном обучении и NLP. А понимание конкретных данных влияет на то, насколько качественно он сможет обучать узкоспециализированные модели.
Ключевые навыки NLP-инженера
- Понимание концепций ML и NLP. Нужно понимать, как работают ML-модели, включая нейронные сети, и как анализируются текстовые данные. А также — разбираться в математических методах, которые используются при создании, обучении и настройке моделей.
- Навыки программирования. Основные языки для работы с NLP — Python и Java. Понадобится уверенное знание хотя бы одного из них, а лучше — обоих. Несмотря на то что сейчас есть сервисы, где можно работать с моделями без написания кода, программирование остается важной частью работы. Также полезно уметь работать с командной строкой в среде Linux, потому что многие инструменты и библиотеки NLP разрабатываются и тестируются в этой ОС.
- Навык работы с ML-фреймворками. NLP-должен уметь работать с библиотеками и фреймворками, предназначенными для построения и обучения моделей. В первую очередь это TensorFlow и PyTorch. Для начинающих подойдет и Keras: он входит в состав TensorFlow, но проще в изучении.
- Основы статистики, теории вероятности и линейной алгебры. Эти дисциплины широко используются в ML. Их стоит изучить, чтобы лучше понимать, как работает модель, что означают ее результаты, как интерпретировать их и улучшить точность вычислений.
- Понимание процессов работы с текстом. Понадобится базовое понимание компьютерной лингвистики: как обрабатывать текст, чтобы его воспринимала модель, что такое стемминг, лемматизация, токенизация и другие процессы.
- Знание технологий MLOps. Этот навык не всегда нужен начинающему, но пригодится в дальнейшей работе. Важно понимать, как оптимизировать модель, а также как организован процесс доставки, развертывания и запуска модели на серверах.
- Навыки коммуникации. NLP-инженер часто взаимодействует с другими сотрудниками, такими как разработчики, дата-сайентисты, менеджеры проектов, а также с клиентами, которые заказывают разработку решений на основе NLP. Поэтому он должен уметь четко и понятно объяснять свои идеи, передавать техническую информацию и предоставлять конструктивную обратную связь.
Полезные материалы по профессии
Людям, которые интересуются NLP и хотели бы попробовать себя в этой отрасли, могут быть полезны следующие ресурсы:
- HuggingFace. Платформа, посвященная машинному обучению. Пользователи делятся готовыми моделями, датасетами, собственными проектами. Помогает познакомиться с ML-комьюнити и начать пользоваться инструментами.
- Рао Макмахан. Знакомство с PyTorch. Книга, которая знакомит с основными принципами работы с NLP на практике. Помогает разобраться, как использовать фреймворк PyTorch для обучения моделей и обработки естественного языка.
- Denis Rothman. Transformers for Natural Language Processing. Книга, которая подробно описывает архитектуру и работу современных NLP-моделей. Помогает разобраться, как современные алгоритмы устроены изнутри и по каким принципам они работают.
Где работают и сколько зарабатывают NLP-инженеры
Чаще всего специалистов по NLP нанимают два вида работодателей: разработчики ИИ-сервисов и компании, которые используют модели для внутренних нужд. При этом часто бывает, что одна компания относится сразу к двум категориям.
Компании, которые создают ИИ-сервисы. Такие работодатели часто ищут специалистов с глубокими знаниями в сфере IT и меньше привязываются к опыту в конкретной предметной области. Компании могут создавать собственные архитектуры, настраивать существующие, выпускать на рынок интеллектуальные модели и т. д. Как пример — нейросеть GigaChat от «Сбера».
Компании, которые используют NLP для внутренних задач, — например, банки, страховые или медицинские организации. Обработка естественного языка нужна им, чтобы решать внутренние задачи: систематизировать документы, реагировать на отзывы, собирать базы данных. Часто они ищут NLP-инженеров, которые разбираются в их предметной области.
Как и в большинстве сфер, заработная плата зависит от квалификации и опыта. Большинство работодателей не указывают точные цифры — о них договариваются на собеседовании. Но даже на уровне junior можно получать 90 000–100 000 рублей в месяц. На уровне middle зарплаты уже обычно больше 120 000–150 000. А senior-специалисты или тимлиды могут получать и по 500 000–600 000 рублей.
Специалист по NLP может со временем расширить область работы и заниматься также компьютерным зрением, бизнес-аналитикой либо другими направлениями ML. Можно перейти в маркетинг и продвигать ML-продукты. Либо расти вертикально — стать тимлидом, руководителем отдела или ML-архитектором.
Некоторые становятся исследователями — развивают отрасль NLP-инженерии, изучают модели и создают новые. Это уже деятельность на грани науки. Таких специалистов ищут исследовательские центры: как некоммерческие, так и принадлежащие крупным компаниям.
Как будет развиваться NLP-инжиниринг
Скорее всего, обработка естественного языка будет охватывать всё больше сфер. Со временем NLP-модели станут такой же привычной частью жизни, как сейчас — онлайн-переводчики и поисковики вроде Google.
Будут развиваться и сами модели: станут более глобальными, смогут решать большее количество задач. Уже сейчас GPT-4 во многом превосходит свою предшественницу GPT-3 — а будущие модели станут еще умнее и функциональнее.
Сами NLP-специалисты, скорее всего, в основном будут работать с интеграцией уже готовых продуктов, чем над созданием своих собственных. При этом исследователи продолжат совершенствовать модели и разрабатывать новые.
NLP-инженер: главное о профессии
Мария Дьякова отмечает следующие особенности работы NLP-инженера:
- Это специалист, который создает, настраивает и обучает языковые модели — учит искусственный интеллект распознавать человеческую речь.
- Главные задачи NLP-инженера — подготовить данные, настроить и обучить модель, оптимизировать ее для более эффективной работы. Иногда инженеры также занимаются развертыванием и запуском модели на сервере.
- Для работы NLP-инженерам нужны знания в области компьютерных наук и машинного обучения, а также умение программировать на Python или Java и навыки работы с ML-фреймворками. Пригодятся и математические познания, и базовое понимание компьютерной лингвистики.
- NLP-инженер может горизонтально развиваться в сфере дата-сайенс и осваивать другие отрасли машинного обучения. Либо продвигаться вверх по карьерной лестнице и вырасти в тимлида или руководителя отдела. Также он может выбрать путь исследователя и создавать новые модели.