На старті в NLP: ресурси для навчання, з чого починати, roadmap для juniors

Усі статті, обговорення, новини про AI — в одному місці. Підписуйтеся на DOU | AI!

Мене звуть Ніка Сніжко, я комп’ютерна лінгвістка, у NLP вже понад 4 роки. Також як менторка я працюю з Junior NLP спеціалістами. Часто помічаю, як початківці бояться починати свій шлях в NLP, бо переконані, що ця сфера — дуже складна, якщо не недосяжна, для новачків.

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

Дізнайтесь детальніше, що таке обробка природної мови — NLP

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

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

У чому різниця між NLP та НЛП

NLP — не НЛП. Хоча помічаю, що їх часто плутають новачки.

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

Natural Language Processing стоїть на перетині лінгвістики, комп’ютерних наук, як-от машинне навчання, і штучного інтелекту та має на меті «навчити» комп’ютер розуміти, інтерпретувати й генерувати природну мову.

Джерело: Devopedia.org

Тоді як НЛП — це нейролінгвістичне програмування, напрям практичної психології та психотерапії, науковість якого все ще не доведена.

NLP-інженер і комп’ютерний лінгвіст — це назва однієї й тієї самої професії?

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

Хоча все залежить від продукту та складу команди. Компанії можуть називати вакансії по-різному, але задачі виявляться однаковими.

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

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

Задачі фахівця з обробки природної мови та продукти, над якими він працює

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

Насправді системи, у яких задіяна обробка природної мови і, відповідно, продукти роботи NLP-інженера ми використовуємо частіше, ніж думаємо. Наведу кілька прикладів розробок NLP-інженерів:

  • чатботи, зокрема, у форматі запитання-відповідь;
  • системи машинного перекладу;
  • віртуальні асистенти на кшталт Siri чи Alexa;
  • пошукові системи;
  • системи для обробки тексту, зокрема узагальнення чи підсумовування даних; сентимент-аналіз або аналіз тональності тексту; пошук тих чи інших об’єктів тощо.

А які перспективи, — запитаєте ви? Якщо коротко, то непогані. Відповідно до Natural Language Processing Market Growth Report, 2030, глобальний ринок NLP у 2022 році оцінили у $27,72 млрд і очікують, що у 2023 році він зросте до $40,98 млрд, тобто, на 47,8%.

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

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

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

Тому під час пошуку роботи раджу звертати увагу не лише на назву позиції, а й на опис. Адже може бути так, як у моєму випадку, або й навпаки: коли вказано Data Science NLP, але у скоупі задач використання бібліотек NLP не передбачається.

Визначте свій бекграунд та складіть план дій

Щоб розуміти, куди рухатись, усвідомте, де ви зараз. Умовно визначу три категорії тих, хто переходить в NLP:

  • розробники, а саме Python-програмісти;
  • лінгвісти чи філологи без або з базовим знанням програмування;
  • світчери, які мають опановувати професію з нуля.

Відповідно першим варто занурюватися в лінгвістичну теорію, другим — вивчати або вдосконалювати Python, а третім — охоплювати все, але почати з чогось одного, на власний розсуд. Тепер конкретніше: розповім про основні хард та софт скіли NLP-інженера, щоб ви могли скласти план дій.

Основні технічні навички для NLP Engineer:

  • знання мов програмування — переважно Python, бо вона найпоширеніша, але також використовують Ruby, R, C++ ;
  • уміння працювати з базами даних, зокрема SQL;
  • знання алгоритмів машинного навчання — machine learning (ML) та AI;
  • навички роботи з NLP-ібліотеками — NLTK, Spacy, AllenNLP, GenSim, scikit-learn, Transformers, LLMs — та вміння застосовувати методи, мета яких — обробка природної мови;
  • поглиблене знання іноземної мови — на рівні розуміння функціонування мови як системи, її морфологічного, лексичного та іншого рівнів; англійська — must, ще одна іноземна буде перевагою.

Основні soft навички для NLP-розробника:

  • здатність виконувати монотонну роботу;
  • уміння концентруватися, уважність до деталей та скрупульозність;
  • логічне мислення;
  • уміння креативно підходити до розв’язання задач;
  • уміння працювати в команді;
  • готовність постійно навчатися й бути в курсі новинок галузі.

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

Не бійтесь подаватись на різні вакансії. Звісно, не на абсолютно всі, де написано NLP, і не одразу на позиції senior спеціаліста. Утім, якщо ваші досвід і знання закривають принаймні частину вимог, то однозначно пробуйте.

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

Переходьте до практики — навчайтеся

Оберіть зручний та доступний для вас тип навчання — самостійно онлайн чи на спеціалізованому практичному курсі з NLP. Залежно від умінь та навичок, які вам треба опанувати, оберіть потрібні ресурси. Наведу кілька можливих за категоріями.

Python:

  • онлайн-курси для початківців на Coursera, Udemy;
  • інтерактивні платформи для практики — Codecademy, Python.org;
  • книжки — Python Data Science Handbook (Jake VanderPlas), Python Crash Course (Eric Matthes), Learn Python the Hard Way (Zed Shaw).

Machine Learning (ML) і Data Science:

NLP:

  • курс NLP Beginning від Projector;
  • курси — Natural Language Processing with Deep Learning by Stanford, Introduction to Natural Language Processing in Python by DataCamp.
  • книжки — Speech and Language Processing (Daniel Juraffsky and James H. Martin), Natural Language Processing with Python — Analyzing Text with the Natural Language Toolkit (Steven Bird, Ewan Klein, and Edward Loper), Analyzing Text with the Natural Language Toolkit (Steven Bird); Foundations of Statistical Natural Language Processing (Christopher D. Manning and Hinrich Schütze), Applied Text Analysis with Python: Enabling Language Aware Data Products with Machine Learning (Benjamin Bengfort, Rebecca Bilbro, and Tony Ojeda), Practical Natural Language Processing (Sowmya Vajjala, Bodhisattwa Majumder, Anuj Gupta, Harshit Surana).

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

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

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

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

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

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

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

Насамкінець хочу дати ще кілька порад для тих, хто цікавиться сферою NLP і хоче розвиватися як NLP-інженер:

  1. Щоб через кілька місяців почати пошук роботи, виділяйте на навчання від 10 годин на тиждень.
  2. Формуйте реалістичні очікування: будьте готові до монотонних задач. Будь-який проєкт потребує дуже багато підготовчої аналітичної роботи. Вона дуже важлива, хоча й не завжди захоплива.
  3. Свічнутись в NLP можливо. Головне — наполегливість, бажання розвиватись, можливість виділяти час на навчання і щирий інтерес до сфери NLP.
  4. Починайте вже. Можна довго збиратися з силами чи думками, але зрештою так і не почати. Ви не дізнаєтесь, чи підходить вам ця сфера, поки не спробуєте. Якщо в процесі навчання щось не виходить, не опускайте руки. Шлях не буде простим, але точно буде цікавим.

Якщо ви дочитали до кінця і все ще мотивовані розвиватися як NLP Engineer, зберігайте посилання й рекомендовану літературу, запасайтеся терпінням — і стартуйте.

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

👍ПодобаєтьсяСподобалось5
До обраногоВ обраному5
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Коментар порушує правила спільноти і видалений модераторами.

Я то думал, что статья про пикап, а тут программирование (

Можна за допомогою nlp побудувати систему яка буде генерувати ідеї для пікапу )

нет не так. нужно построить систему которая с помощью методов нечурал ленгвидж процессинг будет форматировать твои ответы в диалоге по принципу нейро-лингвистического программирования, вот это будет рекурсия, нлп в вызывает нлп

Цікава стаття. Дякую Вам за слушні поради)

Насколько старый НЛП (до МЛ) стал бесполезен в практическом смысле?
В теории это все та же база и маст хев для изобретателей, но вот для среднестатистического девелопера 2\3 всего багажа решений для НЛП были полностью заменены DL брутфорсом на гигантских корпусах текста. Не имеет ли смысл для новичков пропагандировать подход — «DL first, NLP base... maybe later»?

DL first без теорії це приблизно як React без базових знань програмування. Можна, але чи на існуючому проекті де все вже готово, чи колупати прості датасети, оптимізовані під навчальні приклади.

я не вижу как в ЛЛМ используют добрые 80% нароботок нлп, но я не эксперт, может упускаю что-то.
Все методы что я видел в NLTk — они как бы построены с предположением что ИИ нет и надо все делать rule based, а тут совсем другая парадигма когда правила не важны, важна гигансткая нейронка и гигантский корпус, ну и трансформеры

Так, ви все вірно кажете. NLP створювався як реалізація підходів до AI «behave like a human» та «think like a human», і лінвістичний аналіз та всякі інші напрацювання по репрезентації знань, то просто різні підходи до реалізації цього. В AI багато чого прийшло ще з 50-60х років, коли обʼємів даних та обчислювальних ресурсів було мало. NLP було більше комбінацією різних наукових методів, більшість з яких намагалась вирішити проблему структури та передачі людських знань в універсальному вигляді.
Навіть з появою ANN спочатку все навчання було сфокусовано навколо фіча інжинірінга. А от з появою deep learning, вирішення нелінійних проблем стало простіше за рахунок глибини нейронок та розмірів датасетів. Поки є ресурси, швидше вирішувати задачі за допомогою deep learning. І в якомусь сенсі навіть ефективніше, бо не потрібні дата саєнтісти, не потрібні доменні спеціалісти. Достатньо назбирати даних для навчання та погратись з параметрами моделі. Хоча, для дійсно ефективних та корисних речей потрібно більше, ніж просто великі нейронки.

однозначно
навскидку — пост-процессинг (проверка орфографии, форматирование), интеграция с knowledge graph для лукапа достоверных фактов, добавление ссылок на источники, поиск имен\названий для дополнительных ссылок и тд

Хотя это все теперь можно делать другим ИИ, опять приходим к фабрике из цепочек ИИ

Є багато проєктів, які були створені 5-10 років тому, де за основу використовується якраз класичне NLP. Звісно, багато з них зараз намагаються повністю а до частково перейти до використання більш розвинених технологій, LLMs та інше, але не розуміючи бази буде складно працювати на такому проєкті.
Також не всі мови покриті більш сучасними підходами і тому при роботі з малоресурсними мовами дуже часто необхідно звертатись до простіших підходів.

Підписатись на коментарі