Заветы фильма Терминатор-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 — там частенько идёт рекрутинг разработчиков разного калибра
Как вам статья?