NLP-разработчик: кто такой и чем занимается?

Are you ready for pain?

РубрикаМатериал обновлен:
22.11.2020
Время на чтение11 минут

Ingredients

Directions

NLP-разработчик: кто такой и чем занимается?

Заветы фильма Терминатор-2 гласили, что судный день должен был случиться еще 29 августа 1997 года — в этот день Скайнет выходит из-под контроля и начинает ядерную войну. Восстания машин тогда не получилось, но, судя по развитию искусственного интеллекта, оно еще впереди. Договориться с теперешними железками куда сложней — нужны специалисты высшего математического дана. Именно поэтому нам нужны эти славные ребята — NLP-разработчики

Кто такой NLP-разработчик?

NLP (Neuro-Linguistic Processing) расшифровывается как обработка естественного языка. Это относительно новое направление в machine learning, которое призвано найти «общий язык» человеку и бездушной машине для решения самых разнообразных задач: оптимизация бизнес-процессов с помощью машинного обучения, поиск и работа с негативными отзывами для повышения NPS, текстовый анализ и модерация непопадающего контента (абьюз, буллинг и т.п.), прогнозирование и построение математическое модели для классификации текста, распознавание устной речи, обучение и программирование голосовых помощников на основе нейросетей (привет, Олег!).

Задачи и стек технологий в NLP часто пересекаются со смежной областью — Data Scienсe. Пока что NLP — это как дополнительная специализация хорошего дата саентиста, но так как запрос на NLP-разработку растёт, то в скором времени это будет полноценное отдельное направление. В любом случае, разработчику, как NLP так и DS, придётся работать с огромным массивом данных и находить в них определенные закономерности, просто в случае с NLP это больше работа именно с текстовыми данными, семантическим анализом, тематическим моделированием и т.д

Не путайте с НЛП головного мозга

У многих людей срабатывает неправильный триггер на аббревиатуру NLP (НЛП) — спам и шарлатанство. Действительно, такое направление как нейролингвистическое программирование существует, но никакого отношения к нашей теме не имеет. НЛП в этом понимании — это техника влияние на подсознание человека, изменение процессов на подкорке, чтобы яснее мыслить, прокачать коммуникабельность и контролировать перепады в настроении и вообще горя не знать.

Базовые скиллы

В первую очередь потребуется хорошая математическая база: если ты прогуливал в ВУЗе матанализ, линейную алгебру и теорию вероятностей, придётся всё навёрстывать, т.к. потребуются хорошие (мы бы сказали фундаментальные) знания в математической статистике, формуле Байеса и принципов максимума правдоподобия. Далее по порядку

Программирование

Нужен опыт разработки от года или двух, скорее всего, это будет Python —  основа основ для Data Science, здесь тоже понадобиться в полном объеме на уровне хорошего мидла. Так же потребуется экспириенс работы с библиотеками numpy (числовые массивы), scipy (инжиниринг), matplotlib (визуализация данных)

Плюс работа с фреймворками Flask или Django Rest Framework

Машинное обучение

Теория и практика в области машинного обучения: сбор данных, постановка задач и понимание алгоритмов (логистическая регрессия, boosting, random forest). Для этого используют библиотеки scikit-learn и LGBM

Основы NLP

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

Базы данных

Помимо программирования необходим скилл работы с базами данных и уметь в синтаксис SQL и структуру данных. Может потребоваться опыт работы не только с реляционными базами данных, вроде MySQL, но и их NoSQL-аналогов (классика жанра — MongoDB)

Хай левел

Если ты целишь на сеньора, то стоит основательно подготовится — просьба убрать детей от экрана.

Продвинутый NLP

Умение работать с долгой краткосрочной памятью LSTM (Long short-term memory) — архитектура рекуррентных нейронных сетей,  BERT (Bidirectional Encoder Representations from Transformers) — техника машинного обучения для предварительного обучения обработке естественного языка, разработанная Google, GPT-2 — нейросеть для генерации связного текста, word2vec или glove — модели для получения и распределения векторных представлений слов

Пригодятся навыки работы с библиотеками nltk (Natural Language Toolkit) — символьная и статистическая обработка естественного языка, StanfordNLP — токенизация, лемматизация, gensim — неконтролируемого моделирования тем и обработки естественного языка, bigartm — тематическое моделирование, fasttext — классификация текста

Продвинутый ML / Deep Learning

Имплементация моделей ML для классификации текста с помощью архитектуры LSTM / GRU / CNN. Опыт работы в DL-фреймворках: pytorch (компьютерное зрение, обработка естественного языка), tensorflow (построение и тренировка нейросети)

Знание и умение пользоваться такими инструментами, как yargy (извлечение фактов и сущностей), pymorphy (морфологический анализ)

Дополнительно может пригодится

Если умеешь с этим работать, то это будет твоим преимуществом:

  • Протокол сериализации структурированных данных Protobuf (Protocol Buffers)
  • Библиотека для написания параллельного кода с использованием синтаксиса asyncio (Asynchronous Input/Output)
  • Поисковой движок Elasticsearch
  • Брокер сообщений с открытым исходным кодом RabbitMQ (или ZeroMQ)
  • Стэк Hadoop

Что может входить в обязанности?

На данный момент одно из перспективных направлений в NLP — интерактивные голосовые сервисы и помощники. По итогу вышеперечисленных навыков в твой воркфлоу может входить следующее:

  • Написание программного кода, проведение code review, создание MVP
  • Тематическое моделирование, построение векторных моделей текста
  • Создание и обучение нейросетей, исследование исходных данных, нахождение идеи по их препроцессингу/аугментации;
  • Построение и имплементация ML-моделей для классификации и кластеризации текста и создание MVP на их основе
  • Анализ неструктурированных текста, поиск сущностей, паттернов, закономерностей

Где искать вакансии NLP-разработчика?

Хороший NLP-разработчик сейчас на вес золота. Советуем чекать такие ресурсы, как: Хабр.Карьера и яразработчик.рф. Так же можно пропарсить такие социальные сети как Linkedin и Twitter — там частенько идёт рекрутинг разработчиков разного калибра