fbpx
Зсередини

“Я створюю чат-боти й розробляю голосових помічників”. Історії NLP-інженерів 

Розповідаємо про професію, створення чат-ботів і комп’ютерні можливості
Ракша Лариса, 19.08.2022

Сфера програмування дуже швидко розвивається та поліпшує якість життя. Чи не щодня з’являються нові інструменти для роботи з комп’ютерами, а люди все більше часу приділяють вивченню мов програмування, можливостей штучного інтелекту й техніки.

Більшості з нас уже складно уявити своє життя без цифрових помічників. Та не всі знають, що для створення одного чат-бота або голосового асистента потрібно залучити команду професійних NLP-інженерів, комп’ютерних лінгвістів і data science.

Ми поспілкувалися з людьми, що мають досвід оброблення природної мови, та розповідаємо про їхню спеціальність, складнощі роботи й цікаві кейси. Також герої поділилися списком професійної літератури для перших кроків у NLP і дали поради, що допоможуть просунутись у цій сфері.


Аванесова Наталія, Head of NLP, Preste
Зуєв Костянтин, NLP-інженер
Вероніка Сніжко, менторка курсу NLP beginning у Projector, Data analyst Geocomply

Хто такий NLP-інженер і що входить до його обов’язків?

Наталія Аванесова:

NLP-інженер є спеціалістом, що працює з обробленням природної мови у письмовому та усному проявах. Спочатку може бути незрозуміло, що саме робить цей фахівець, але насправді всі ми щодня стикаємося з результатами його праці. Наприклад, можливість зробити будь-яке замовлення через чат-бот, поставити запитання Siri, прохання до Alexa ввімкнути музику, пошук інформації у Google, переклад іноземних слів у додатках — це все продукти роботи NLP-інженера.


Костянтин Зуєв:

Це програміст, що володіє підходами та практиками NLP (оброблення природної мови — англ. natural language processing). Часто на проєктах NLP-інженер і комп’ютерний лінгвіст є однією людиною, оскільки обов’язки цих спеціалізацій дуже подібні. Загалом вимоги можуть змінюватись залежно від компаній, з якими працюють спеціалісти, але головним їх завданням є реалізація, доведення до продакшену та супровід NLP-рішень.

Обов’язки NLP-інженера залежать від кількості людей у команді. Якщо працівник самостійно реалізує проєкт, то йому потрібно нести відповідальність за весь цикл дій (аналізування й чистку даних, їх анотацію, розроблення правил, вибір і навчання моделі). Коли ж разом з ним працюють data science або комп’ютерний лінгвіст, то інженеру потрібно імплементувати рішення, розроблене колегами, у систему та масштабувати на більшу кількість даних.


Вероніка Сніжко:

Усі процеси, пов’язані зі створенням продуктів за участю оброблення природної мови, виконує NLP-інженер. Завдання, з якими він працює, можуть відрізнятися залежно від продукту, над яким іде роботи. Це можуть бути завдання, спрямовані на аналіз даних і написання коду з використанням NLP-бібліотек, залучення моделей та їх налаштування для отримання результату, створення внутрішніх інструментів для роботи. Також усе залежить від команди: якщо в ній працюють розробники та комп’ютерні лінгвісти, то завдання здебільшого пов’язані з лінгвістичним аналізом; якщо лише NLP-інженер, то він займається повним циклом розроблення продукту.


Як ви почали працювати NLP-інженером?

Наталія Аванесова:

Я писала дисертацію з лінгвістики на тему компресії (опущення певних слів) у розмовній мові людей. Тоді ж, у процесі роботи, дізналася, що є напрям штучного інтелекту, який тримає фокус на аналізі, обробленні та синтезі машиною людської мови. Пам’ятаю, що мене вразила ця інформація і викликала сильне бажання самостійно перевірити, як можна передати комп’ютеру розмовні навички людини. Саме з цього інтересу й розпочався мій шлях у сферу NLP.


Костянтин Зуєв:

У 2018 році мені запропонували роботу програмістом у NLP-проєкті. На той час команда вже мала комп’ютерних лінгвістів, тому шукали людину, що реалізує їхні ідеї та напрацювання. Сфера NLP мені сподобалася, оскільки вона зменшує бар’єр між людиною та комп’ютером, а в наслідку полегшує використання техніки на користь людини.

Саме завдяки NLP ми можемо голосом додати у свій смартфон перелік покупок і поставити нагадування, без пошуку кнопок на екрані та віконець в інтерфейсі.


вероніка Сніжко:

Я познайомилася зі сферою NLP на тестовому дні у компанії, в якій проходила співбесіду. Моїм першим завданням було вигадати правила на основі граматики залежностей для оброблення великого об’єму даних. Коли я це почула, то не зрозуміла, що відбувається, оскільки у вакансії не було жодних вимог щодо знання цієї сфери. Коли шок минув, я просто почала шукати відповідні статті в інтернеті й розбиратися в усіх процесах для виконання поставленої задачі.

Мені щиро сподобалося розв’язувати це завдання, тому інтерес до сфери зростав. Роботу я врешті отримала, а разом з нею — можливість глибше вивчати тонкощі сфери NLP, лінгвістики та програмування.



Що вам подобається у вашій роботі найбільше, а що — викликає складнощі?

Наталія Аванесова:

  • Ця сфера дуже стрімко розвивається, що є водночас позитивним і негативним аспектом роботи з нею. Наприклад, у NLP майже щодня з’являються нові технології та інструменти, які викликають захоплення. Але щоб їх усі вивчати, потрібно працювати без відпочинку. Якщо цього не робити, то навряд чи буде можливість досягти результатів: інженер відставатиме від інших, не знатиме всі плюси та мінуси технологій, не залучатиметься у сферу.
  • NLP — це, звісно, про rocket science (ракетна наука, швидкий прогрес) та інноваційні результати. Мене завжди дуже тішить, коли я бачу в продакшені ідеї, які реалізували я та команда. Але 80% роботи займають усе-таки рутинні процеси (аналіз даних), які викликають не захват, а нудьгу. Проте без цієї частини роботи неможливо отримати класний результат, тому всі процеси варті витрачених зусиль.


Костянтин Зуєв:

  • Основна перевага — це постійний розвиток. У цій сфері завжди буде простір для цікавих рішень та інструментів розв’язання задач. Щодо недоліків, то для створення прогресивних ідей потрібно багато вчитися, самостійно аналізувати й анотувати великі об’єми даних. Зазвичай це доволі нудний процес, який мало хто з NLP-інженерів любить, проте без нього нічого не вдасться.


Вероніка СНІЖКО:

  • NLP поєднує лінгвістику та програмування, що робить процес роботи досить цікавим. Тобто ти не просто пишеш код, а реалізовуєш нові проєкти за допомогою кастомізації наявних інструментів під власну ідею. Таким чином, задачі завжди мають різний характер.
  • Зараз в Україні мало компаній залучають саме NLP (найчастіше це machine learning та штучний інтелект), тому пошук роботи може тривати досить довго. Але завжди є можливість працювати віддалено на американські та європейські компанії, не виїжджаючи з України, тож цю складність можна вирішити.
  • Сфера постійно розширюється, бізнеси з різних індустрій починають розуміти вигідність продуктів NLP (це і аналіз відгуків для поліпшення сервісу, створення ботів, голосових помічників, аналіз тексту), попит продовжує зростати, а технології швидко розвиваються. Тобто місць для роботи тут ще вдосталь.


Якими hard і soft skills повинен володіти NLP-інженер?

Наталія Аванесова:

Hard skills:

  1. Знати мову програмування та як її імплементувати для розв’язання конкретних завдань (бажано Python, оскільки більшість інструментів написана саме на ньому).
  2. Уміти використовувати найсучасніші NLP-бібліотеки та інструменти.
  3. Розуміти, що таке бази даних, якими вони бувають та як з ними працювати.
  4. Розуміти машинне навчання й мати досвід роботи з cloud-провайдерами (AWS, GCP, Azure).
  5. Знати іноземні мови: англійська + будь-яка інша, це буде перевагою.

Soft skills:

  1. Навичка концентруватися й готовність виконувати монотонну роботу.
  2. Уважність до деталей і готовність до стрімкої зміни виду діяльності (швидко перемикатися з однієї задачі та іншу).
  3. Логічне мислення та креативність.
  4. Уміння працювати в команді.


Костянтин Зуєв:

Я вважаю, що для хорошого старту вам потрібно освоїти найпопулярніші NLP-бібліотеки, володіти навичками машинного та глибинного навчання, Linux, Docker (програмне забезпечення для контейнеризації додатків). Також важливо мати досвід роботи з cloud-провайдерами (AWS, GCP, Azure) і досконало знати англійську мову.


Вероніка Сніжко:

Hard skills:

  1. Знання мови програмування (Python, R, C++, Ruby) та вміння працювати з базами даних.
  2. Робота з різними NLP-бібліотеками (як новими, так і базовими).
  3. Розуміння machine learning та AI (штучного інтелекту).

Soft skills:

  1. Уважність до деталей та готовність до різних типів задач (навіть нудних).
  2. Логічне та системне мислення.
  3. Креативний підхід до розв’язання задач.
  4. Не боятися помилок, визнавати їх і пропрацьовувати.

Улюблений кейс

Наталія Аванесова:

Чесно кажучи, я пишаюся абсолютно кожним продуктом, який реалізую, оскільки дуже люблю свою роботу й точно обрала її недарма. Але першим на думку спадає проєкт, що був створений усього за місяць з допомогою команди професіоналів. За цей строк нам вдалося втілити кастомізоване рішення, яке масово обробляло понад 30 000 000 речень і витягало з них необхідну інформацію з точністю 98%. Для нашої сфери це справді щось неймовірне та захопливе. І саме тоді я вкотре зрозуміла, що з класною командою можливо все, а комп’ютерні можливості ще неодноразово нас вразять.


Костянтин Зуєв:

У 2021 році ми з командою посіли перше місце з NLP-напряму на гакатоні March.AI Hackathon 2021 Online. Нам потрібно було створити прототип чат-бота від DOC.UA для рекомендації лікарів за симптомами користувача (а також надати перелік рекомендацій щодо аналізів).

Загалом у змаганнях брали участь 50 команд і 120 учасників, а на виконання завдання було 2 доби. До фіналу пройшли 16 команд, яких оцінювали за готовністю їхнього бота до використання.

Ми брали участь у змаганнях заради інтересу — хотілося перевірити нашу взаємодію у стресових умовах. І я дуже пишаюся, що нам вдалося перемогти.


Вероніка Сніжко:

Мій улюблений кейс — це те, що я почала працювати у сфері NLP без лінгвістичного та програмного бекграунду. Тобто я є прикладом того, що все можливо, якщо мати щирий інтерес і багато працювати.

Зараз мені пригадався один із проєктів, над яким я працювала, але деталі розповідати не можу, оскільки це NDA (договір про нерозголошення). Загалом кажучи, проєкт був пов’язаний з обробленням відгуків, і разом з командою ми реалізували приблизно 15 внутрішніх інструментів. У результаті отримали змогу обробляти мільйони відгуків, отримувати з них корисну інформацію та поліпшувати сервіс компанії, для якої працювали.


Поради початківцям

Наталія Аванесова:

 Розберіться, що таке NLP і які проблеми бізнесу воно розв’язує. Цей крок потрібно зробити першим і важливо його не пропускати. Я часто спостерігала за людьми, що плутають NLP з нейролінгвістичним програмуванням, яке немає нічого спільного з нашою роботою інженерами. Прочитайте багато інформації щодо цієї сфери й лише потім починайте заглиблюватись у її вивчення.

 Опрацюйте професійну літературу. Є базові книжки, які я раджу прочитати всім, хто починає вивчати NLP. Усі вони англійською, адже в цій сфері важливо нею володіти.

– Speech and Language Processing (Daniel Juraffsky and James H. Martin);

– Python Data Science Handbook (Jake VanderPlas);

– Analyzing Text with the Natural Language Toolkit (Steven Bird);

– Python Natural Language Processing Cookbook: Over 50 Recipes to Understand, Analyze, and Generate Text for Implementing Language Processing Tasks” (Zhenya Antić).

 Навчайтесь. Є багато хороших курсів на Coursera та Udemy, які можна переглянути й обрати за рейтингом. Також в української школи Projector є курс NLP — він сфокусований якраз на людях, що роблять перші кроки в цій галузі.

 Розвивайте навички нетворкінгу. Участь у профільних спільнотах і розширення кола людей для спілкування допомагає просунутися у сфері NLP. До речі, якщо потрібна допомога або консультація щодо кар’єри NLP інженером — можна звернутися до мене на благодійній платформі Projector.


Костянтин Зуєв:

 Раджу прочитати всі книжки, які порадила Наталія, та додам від себе ще декілька:

– Python Data Science Handbook (Jake VanderPlas);

– Applied Text Analysis with Python: Enabling Language Aware Data Products with Machine Learning”(Benjamin Bengfort, Rebecca Bilbro, and Tony Ojeda).

 Також можу трохи конкретизувати щодо курсів і порекомендувати пройти Machine Learning Specialization від Andrew Ng на Coursera та Data Science Fundamentals від DataRoot University.


Вероніка Сніжко:

 NLP є абревіатурою Natural Language Processing. Чомусь багато хто цього не знає, коли приходить у сферу. Тому спочатку вивчіть якомога більше інформації щодо процесів, які вам потрібно буде виконувати.

 Стежте за освітніми проєктами у сфері NLP та відвідуйте їх. Є чимало ефективних навчальних заходів у літніх школах і сезонні конференції.

 Постійний розвиток є обов’язковою умовою, тому література вам також знадобиться:

– Natural Language Processing with Python – Analyzing Text with the Natural Language Toolkit (Steven Bird, Ewan Klein, and Edward Loper);

– Foundations of Statistical Natural Language Processing (Christopher D. Manning and Hinrich Schütze);

– Practical Natural Language Processing (Sowmya Vajjala, Bodhisattwa Majumder, Anuj Gupta, Harshit Surana);

– Introduction to Information Retrieval (Christopher D Manning).

Інші статті за темами
Підписатися
Підпишись на нашу розсилку і будь в курсі всіх оновлень
Підпишись на нашу розсилку і будь в курсі всіх оновлень