ЦЕХ

Do you speak human language? Або хто такий NLP інженер та чим він займається

Усе більше компаній потребують обробки природної мови для своїх продуктів, а отже — все більше NLP інженерів потрібно ринку. Разом з Наталею Аванесовою, кураторкою курсу NLP Beginning, розповідаємо: хто такі комп'ютерні лінгвісти, чим вони займаються, які скіли потрібні й інші речі, що допоможуть зрозуміти суть професії.
Загалом, є дві назви однієї професії — NLP інженер та комп'ютерний лінгвіст. Якщо коротко — це люди, які займаються розробкою всіх продуктів, що пов'язані з обробкою природної мови.

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

З якими продуктами працює NLP інженер

Якщо говорити про реальні продукти, які потребують обробки природньої мови, то це можуть бути:

  • Машинний переклад.
  • Побудова чатботів (питання/відповідь).
  • Розробка різних голосових помічників на кшталт Alexa чи Siri.
  • Обробка великих об'ємів текстових даних і видобування з них необхідної інформації.
  • Аналіз відгуків користувачів. Їх класифікація: позитивний чи негативний, про сервіс чи про ціну тощо.

Будь-якого роду аналіз, розуміння, синтез природної мови (письмової чи усної) — це все natural language processing (NLP).

Hard skills NLP інженера

Знання мови програмування
Той, хто займається NLP, повинен знати мову програмування та як її імплементувати для розв'язання конкретних завдань. Для роботи з обробкою природної мови зокрема підходять Python, R, Ruby, C++. Проте найпопулярнішою все ж є Python, оскільки це більш високорівнева мова, яка інтуїтивно зрозуміла й легка в навчанні та реалізації.

Знання потрібних бібліотек
Якщо не знати найсучасніших NLP бібліотек на ринку, то важко буде далі рухатися в професії. Знання найвідоміших — обов'язкове, знання інших буде величезним плюсом. Серед найбільш відомих:
1
Одна з найстаріших NLP бібліотек.Її функції варіюються від токенізації, визначення коренів, тегування до аналізу та семантичного міркування. NLTK зрозуміла й швидка.
2
Одна із найпопулярніших та найзручніших бібліотек попередньої обробки тексту. Вона містить багато простих у використанні функцій для токенізації, тегування частин мови, розпізнавання іменованих об'єктів, чудове API та багато іншого. Spacy також підтримує понад 59 мов і кілька попередньо навчених векторів слів.
3
Фреймворк глибокого навчання для NLP. Його створили у Інституті Аллена для AI Lab. AllenNLP містить найсучасніші еталонні моделі, які можна швидко впроваджувати, а також підтримує широкий спектр завдань і наборів даних.
4
Забезпечує легкий доступ до великої кількості потужних моделей (на основі трансформаторів), які можна використовувати напряму або налаштовувати за допомогою PyTorch або TensorFlow.
nlp engineer
Вміння працювати з базами даних
Обов'язково з SQL, проте вміти працювати з не SQL теж було б добре.

Хоча б базове розуміння machine learning (ML)
Зараз у сфері все більше відходять від rule-based підходу, що базується на рукописних правилах. І переходять до більш високорівневих програм, де без машинного навчання ніяк не обійтися.

Бути в курсі трендових технологій
Чи не щодня з'являються нові нейронні моделі, мережі. Потрібно знати про них та як вони працюють, аби рухатися далі в розробці свого продукту.

Soft skills NLP інженера

Концентрація
Ця професія не потребує від людини весь час перебувати в динамічному русі, а навпаки — часто вимагає заспокоїтися і приділити увагу даним, бути готовим до монотонної роботи.

Швидка зміна діяльності
Незалежно від того, працюватимете ви з ML чи з rule-based проєктом, потрібно бути готовим до частої зміни діяльності. Це пов'язано з тим, що робота з NLP — циклічна.

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

Приклад 2. Якщо це rule-based проєкт, то спочатку NLP інженер вручну шукає патерни, створює правила для моделі, запускає ці правила й знову вручну оцінює результат. Якщо він незадовільний — повертається на етап написання правила й дописує, виправляє чи видаляє його. І так по колу до потрібного результату.
nlp course
Уважність
Це має бути надзвичайно уважна людина. Інколи потрібно знайти якусь дрібничку, яка тобі все псує. І щоб побачити її треба скрупульозно провалідувати великі об'єми текстових даних.

Логічне мислення
Без логічного мислення тут ніяк, оскільки потрібно на речі дивитися дуже широко, «зверху». Інакше ми не зможемо вигадувати уніфіковані речі, які допоможуть нам використовувати певне правило для, умовно, 300 тисяч речень, знаходячи щось спільне між ними.

Креативність
Це важливо, оскільки ми щоразу стикаємося з новим продуктом. Не буде такого, що приходиш на нове місце і «а я знаю як все треба робити, бо я вже сто таких продуктів зробив». Кожен продукт — унікальний і завжди треба бути готовим вчитися чомусь новому й шукати нові підходи.

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

Поширені міфи про роботу з NLP

Можна не знати мову
Ті, хто хочуть почати займатися NLP, але не мають академічного й лінгвістичного бекграунду, хотіли б вірити, що тут не потрібно знання теоретичної лінгвістики. Але ні. Треба знати лінгвістику не на рівні «я вмію спілкуватися, перекладати чи читати книги», а на рівні «що таке мова та як її можна формалізувати». Розуміти, як слова утворюються, видозмінюються залежно від відмінків, поєднуються між собою в речення, як вони між собою взаємодіють. Як взагалі всі мови світу групуються між собою, чи можна їх за певними параметрами об'єднати.

Тому що хороший NLP інженер і комп'ютерний лінгвіст не тільки досконало знає хоча б одну іноземну мову (зазвичай, англійську). Він також розуміє, як зможе імплементувати рішення, яке вже зробив для англійської, для інших європейських мов. Хоча б тих, які належать до спільної мовної групи. Є фахівці, які не можуть спілкуватися навіть про якісь побутові речі, але настільки добре знають теоретичну граматику, що з легкістю вибудовують алгоритми для опрацювання будь-якої європейської мови.
Можна не вміти програмувати
Деякі комп'ютерні лінгвісти воліли б не вивчати мову програмування і вірити в те, що можливо стати NLP інженером без її знання. Але, на жаль чи на щастя, це неправда.

Якщо ви займаєтеся обробкою природної мови, то вам необхідно знати, як її імплементувати. Тому вам все ж будуть необхідні знання Python, або ж іншої мови програмування, що підходить для роботи з NLP: R, Ruby, C++.
З першого дня — робота з найновішими технологіями
У когось можуть бути очікування, що з першого ж дня роботи вони будуть реалізовувати одразу всі найновіші технології, які є: GPT 2, GPT 3, GPT Neo. Звичайно не виключено, що на якомусь етапі ви їх дійсно використовуватимете в роботі. Проте починати доведеться з якихось базових речей. Зокрема це й дуже багато ручної роботи.

Насправді 80% свого часу комп'ютерний лінгвіст проводить за аналізом, підготовкою, обробкою текстових даних. Це може здаватися нудною частиною роботи, але без неї неможливі всі наступні кроки.

Де працювати

Є стандартні можливості для роботи: продуктова компанія, аутсорс/аутстаф або фриланс. Ідеального варіанту, як і завжди, не існує. У кожного своя специфіка, свої плюси та мінуси. Чудово було б попрацювати й в продукті, і в сервісі, оскільки це два абсолютно різні досвіди.

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

Працюючи в продукті, ви можете стати спеціалістом в певній сфері. Наприклад, продукт — це система машинного перекладу. Якщо ви певну кількість місяців чи років присвятите саме його розробці, то станете спеціалістом в цій сфері, знатимете як створюється машинний переклад «від А до Я». Але тоді втратите якісь знання в розробці сторонніх продуктів.

Аутсорс чи аутстаф
Тут ситуація інша. Три місяці можна працювати над одним продуктом, наступні три місяці над іншим і так далі. Потрібно бути завжди готовим до чогось нового. З плюсів — вміння працювати з широким спектром завдань. Для одного продукту можеш попрацювати з машинним перекладом, для іншого зробити екстракцію чи класифікацію даних. Мінус — не вдасться вивчити щось від початку й до кінця.

Фриланс
Насправді бути комп'ютерним лінгвістом на звичному фрилансі досить важко. Шукати замовників на UpWork чи інших біржах добре, якщо ви в процесі пошуку роботи або ж навчаєтеся і паралельно хотіли б спробувати вивчене на практиці та в роботі з реальним клієнтом. Бо в такому форматі обмежений час, обмежений бюджет і від спеціаліста вимагається обмежений функціонал.

Більш звичний варіант — консультування. Коли продукт звертається до тебе за допомогою в конкретних рішеннях.
natural language processing

Куди рости в NLP

Intern NLP Engineer
Інтерн повинен знати іноземну мову та мати базове розуміння про Python: що таке функція, які бувають python об'єкти. Це мінімум, більше — краще.

Junior NLP Engineer
До попереднього списку додається вміння робити якісь елементарні задачі: написати функцію, імпортувати бібліотеки, знати релевантні зовнішні бібліотеки і як ними користуватися. Загалом, треба просто вміти відкрити документацію і скопіювати сніпет коду, підлаштувавши його під свої дані. Жодних суперскілів, просто вміти шукати й знати, де шукати.

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

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

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

Teamlead/techlead
Відповідальний за всіх і за все: як рухається проєкт, куди він рухається, як виходити з кризових становищ. Вміє прогнозувати ризики й завчасно готувати рішення.

Head of NLP
Це вже не просто тімлід. Він знає не тільки всю технічну й лінгвістичну сторону, прораховує ризики, а ще й комунікує із клієнтом, встановлює пріоритети, контролює якість фінального продукту.
Починаючи з middle, важливо також вміти проводити дослідження. Тобто шукати інструменти та рішення, що допоможуть виконати конкретне завдання. Проаналізувати ринок, знайти рішення, розібратися в них, порівняти й запропонувати той варіант, який найрелевантніший для проєкту. Враховуючи при цьому потреби та бюджет.
Горизонтальний розвиток
Зазвичай, це галузі, що близькі між собою. Наприклад, можна перейти власне в Data Science і стати data аналітиком. Чи піти далі в професії й розвиватися в machine learning інженера для реалізації AI завдань. Це вже не тільки NLP, а й computer vision, optical character recognition тощо.

На більш високому рівні, наприклад Head of NLP можна перейти в AI продакт-менеджери. Там вже потрібно управляти й керувати командами з розробки всіх AI продуктів, а не тільки у сфері NLP.
Де навчатися
У Проджекторі ми маємо повноцінну NLP-лінійку для людей з різним досвідом й навичками. Зокрема:

NLP Beginning. Базовий курс, де студенти здобувають фундаментальні знання, щоб вирішувати завдання, пов'язані з обробкою текстової інформації.

Natural Language Processing. Professium. Для людей, що вже мають базу в роботі з обробкою природної мови й готові всерйоз взятися за покращення й розширення своїх практичних скілів. А також здобути експертизу щодо сучасних підходів вирішення NLP завдань.

Пошук першої роботи

Найкращі місця для пошуку роботи у сфері — LinkedIn та Джинні. Кілька порад щодо пошуку в LinkedIn. По-перше, не ігноруйте короткий опис (summary) в профілі, бо саме на нього першим звертають увагу. Там дуже стисло опишіть основний досвід та ваші сильні сторони.

По-друге, звичайно ж треба детально описати свій досвід. Якщо ви intern або junior, то записуйте всі свої проєкти, зокрема й хакатони чи змагання. Але не просто пишіть їх назви, а поясніть, чим саме ви займалися.

Можна також додавати сертифікати за проходження курсів. Наприклад, якщо ви здобули якісь знання SQL, пройшли курс NLP, або можливо по роботі з хмарними середовищами Microsoft, Amazon чи Google. Не зациклюйтеся на цьому, але й не забудьте вказати.

На Джинні теж коротко опишіть свій досвід, користуючись їх стандартною формою. Детально досвід розпишіть власне у резюме, яке прикріпите в профілі на сайті, або ж додайте посилання на LinkedIn.

Ще один варіант — нетворкінг. Зараз легко можна знайти на Facebook, LinkedIn чи DOU різні конференції або воркшопи, які плануються найближчим часом. Відвідуйте їх, залишайтеся на нетворкінг сесії й знайомтеся з новими людьми зі сфери. Ці знайомства допоможуть в перспективі знайти нову роботу.
Текст: Наталя Аванесова, Денис Пристай
Фото: Наталія Азаркіна
Цех
Сподобалась стаття?