Кар'єра в 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). «Я стежу за твіттера деяких топових людей у цій сфері: , , , , , а від них вже далі розходяться ниточки» (Всеволод Демкин, Software Developer в Franz, викладач в Projector School).Також фахівці з NLP радять ресурс Towards Data Science і наукові статті arXiv.org і Papers With Code (сюди потрапляють лише статті з кодом, який можна запустити і отримати ті ж результати, що і у авторів).
Будуть корисні книги:
- Information Retrieval by Cambridge UP;
- Speech and Language Processing by Dan Jurafsky and James H. Martin;
- Natural Language Processing with Python by Steven Bird, Ewan Klein, and Edward Loper;
- Neural Network Methods for Natural Language Processing by Graeme Hirst.
Що стосується кар'єрних перспектив, NLP-галузь постійно розвивається, тому зростання по горизонталі до нових технологій і завдань практично не обмежений.
«Хотілося б розвивати свої знання та вміння в напрямку NLP, попрацювати в різних доменах, поліпшити розуміння застосування тих чи інших методів. І в результаті стати фахівцем високого калібру» (Карім Лулу, Machine Learning Engineer в Galactica Labs).
«Можна стати, наприклад, Delivery Lead або R&D Director для проектів на основі NLP, а також CTO у стартапах на основі NLP. Варіантів безліч» (Костянтин Бохан, Tech Lead N-iX).
Опубліковано: 03/08/20 @ 10:00
Розділ Блоги
Рекомендуємо:
Як за допомогою тестів пришвидшити реліз
Що потрібно знати тестировщику про рецензування та як його використовувати в роботі
5 книжок, які допомогли зрозуміти зміни у світі, від Павла Кузнєцова, Sr. Product Manager Zalando
Українка – про роботу в Coca-Cola у Сингапурі: "Я відповідаю за Data Science в усьому регіоні Азії та Тихого океану"
Опановуємо основи алгоритмів, або Як прискорити код з 15 до 1000 запитів за секунду