- Що таке NLP?
Це загальний напрям штучного інтелекту, який навчає комп’ютери розуміти й розпізнавати текст та мовлення приблизно так само, як це роблять люди. Тобто це сфера, яка поєднує в собі комп'ютерну лінгвістику та статистичні моделі, а також моделі машинного та глибинного навчання. Завдяки цим технологіям комп'ютери обробляють людську мову, як у форматі аудіо, так і тексту. Зрештою, розуміють повне значення, наміри й настрій автора.
Часто ми навіть не замислюємось над тим, що NLP оточує нас майже всюди: чат-боти, голосові помічники, фільтрація електронних листів, розумні годинники й будинки. Тобто там, де ми бачимо текст і мовлення, які опрацьовує комп’ютер.
- Яка різниця між NLP інженером та комп'ютерним лінгвістом?
Спектр задач, з якими працюють як інженери, так і лінгвісти, не дуже відрізняється. Відмінністю є те, що комп'ютерний лінгвіст зазвичай працює з теоретичними аспектами функціонування мови, а NLP інженер реалізує й використовує практичне застосування теорії. Однак кожна компанія, яка шукає спеціаліста у свою команду, сама визначає вимоги до досвіду кандидатів і на свій розсуд називає позицію.
Можна натрапити на таку вакансію, як аналітичний лінгвіст. Утім, читаючи перелік обов’язків спеціаліста, розумієш, що його задачі більш наближені до зони відповідальності NLP інженера. І навпаки. Буває, скажімо, роботодавці шукають інженера, але, спілкуючись з рекрутером, з’ясовується, що насправді в компанії вже працює достатня кількість таких програмістів. Натомість роботодавцю потрібна людина, яка досконало знає функціональні особливості мови, а також принципи роботи з її структурою.
Наразі не існує чіткого уявлення про сталий склад команд, але зі свого досвіду можу виділити два основні типи.
Перший — співпраця комп'ютерного лінгвіста та програміста. За такої структури основне завдання комп'ютерного лінгвіста — розробити логіку для алгоритму, а також передати ТЗ програмісту, який буде реалізовувати це завдання.
Це не означає, що в такому тандемі комп'ютерний лінгвіст може не знати мов програмування. Усе одно для того, щоб провести будь-яке дослідження, перевірити гіпотезу й теорію, а також функціональність тієї чи іншої системи, потрібно вміти програмувати.
Важливо знати, як поставити правильне завдання для програміста. Зазвичай ТЗ або логіка виражені умовною мовою або навіть мовою програмування. Вона повинна ґрунтуватися на принципах програмування. Якщо в задачі є певні патерни, набір слів або тегів, необхідно виконати відповідну умову.
Тож програмування важливе для співпраці з лінгвістом, навіть якщо програміст посередньо розуміється на лінгвістиці.
Другий — співпраця NLP інженера з NLP researcher. За такої співпраці інженер реалізує завдання, створює алгоритми й логіки. Він спершу розбирається у механізмах роботи та, зрештою, реалізує завдання. NLP researcher допомагає шукати потрібну інформацію, методи досягнення мети для того, щоб NLP інженер імплементував ці рішення.
Загалом як для комп'ютерного лінгвіста, так і для NLP інженера, існує багато корисних навичок. Основний скіл — знання мов програмування. Зокрема Python, C++, Java та R. Пам’ятайте також про бібліотеки. Дізнайтеся про їхні різновиди та специфіку використання. Досліджуйте ML підходи й використовуйте їх у розв'язання ваших задач. Важливою навичкою також є вміння працювати з базами даних. Це основні технічні навички, потрібні для роботи у сфері NLP.
Знання іноземної мови також має значення, здебільшого англійської. Навіть якщо англійську не використовують на вашому проєкті. Реалізовані нині системи створені переважно для англійської, потім їх кастомізують для інших мов. Потрібно знати англійську не просто на рівні світських бесід, але й розуміти, як працює синтаксис, фонетика та морфологія мови, щоб реалізовувати завдання NLP.
Ще однією корисною навичкою є вміння проводити різні дослідження та аналізувати великий обсяг даних.
Основні задачі комп'ютерного лінгвіста і NLP інженера:
- розробка NLP систем;
- створення датасету;
- підготовка даних для подальшої обробки;
- розробка нової логіки написання правил.
Серед обов’язків є також монотонні задачі, їх не можна уникнути. Робота NLP інженера не означає використання лише найновіших технологій та імплементацію останніх моделей розробки. Щоб досягти хорошого результату, потрібно докласти багато зусиль і ручної роботи. Загалом треба завжди бути в курсі новітніх технологій.
- Чи популярна ця сфера
Дуже. Не можу в цифрах назвати кількість людей або проєктів, але я нещодавно читала репорт про частку інвестицій, яку вкладають в NLP проєкти. Мільярди доларів щорічно виділяють різні компанії, щоб використати технології NLP у своїх проєктах. З кожним роком сфера NLP стає популярнішою. За прогнозами, до 2030 року кількість проєктів, які використовують NLP, зросте в 4 рази.
- Як швидко опанувати професію?
Важко сказати, адже це залежить від часу, який ви готові присвятити навчанню. Я думаю, вистачить трьох місяців, якщо постійно вчитися. Такого рівня буде достатньо для пошуків роботи.
Аби дізнатися про рівень заробітної плати, вплив повномасштабного вторгнення на індустрію NLP, а також про те, з чого починати, прослухайте повний запис лекції.
А для тих, хто назбирав запитань більше, ніж на одну розмову, є курс — NLP Beginning. 3 місяці навчання, щоб здобути фундаментальні знання та вирішувати завдання, пов'язані з обробкою текстової інформації.