|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "1c2ec40cf55c98a028a359c27ef7e45a",
|
|
|
"translation_date": "2025-09-05T14:10:50+00:00",
|
|
|
"source_file": "6-NLP/1-Introduction-to-NLP/README.md",
|
|
|
"language_code": "uk"
|
|
|
}
|
|
|
-->
|
|
|
# Вступ до обробки природної мови
|
|
|
|
|
|
Цей урок охоплює коротку історію та важливі концепції *обробки природної мови* (NLP), підгалузі *комп'ютерної лінгвістики*.
|
|
|
|
|
|
## [Тест перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
|
|
## Вступ
|
|
|
|
|
|
NLP, як її зазвичай називають, є однією з найвідоміших областей, де машинне навчання було застосоване та використовується у виробничому програмному забезпеченні.
|
|
|
|
|
|
✅ Чи можете ви назвати програмне забезпечення, яке ви використовуєте щодня і яке, ймовірно, має вбудовану обробку природної мови? А як щодо ваших текстових редакторів або мобільних додатків, які ви використовуєте регулярно?
|
|
|
|
|
|
Ви дізнаєтеся про:
|
|
|
|
|
|
- **Ідею мов**. Як розвивалися мови та які основні області їх вивчення.
|
|
|
- **Визначення та концепції**. Ви також дізнаєтеся визначення та концепції того, як комп'ютери обробляють текст, включаючи розбір, граматику та визначення іменників і дієслів. У цьому уроці є кілька завдань з програмування, а також вводяться кілька важливих концепцій, які ви навчитеся програмувати в наступних уроках.
|
|
|
|
|
|
## Комп'ютерна лінгвістика
|
|
|
|
|
|
Комп'ютерна лінгвістика — це галузь досліджень і розробок, яка протягом багатьох десятиліть вивчає, як комп'ютери можуть працювати з мовами, розуміти їх, перекладати та навіть спілкуватися ними. Обробка природної мови (NLP) — це споріднена галузь, яка зосереджена на тому, як комп'ютери можуть обробляти "природні", тобто людські, мови.
|
|
|
|
|
|
### Приклад — диктування телефону
|
|
|
|
|
|
Якщо ви коли-небудь диктували текст своєму телефону замість того, щоб друкувати, або запитували віртуального асистента, ваш голос було перетворено на текстову форму, а потім оброблено або *розібрано* мовою, якою ви говорили. Виявлені ключові слова були оброблені у формат, який телефон або асистент міг зрозуміти та виконати.
|
|
|
|
|
|

|
|
|
> Справжнє лінгвістичне розуміння — це складно! Зображення [Джен Лупер](https://twitter.com/jenlooper)
|
|
|
|
|
|
### Як ця технологія стала можливою?
|
|
|
|
|
|
Це стало можливим завдяки тому, що хтось написав комп'ютерну програму для цього. Кілька десятиліть тому деякі письменники-фантасти передбачали, що люди здебільшого розмовлятимуть зі своїми комп'ютерами, і комп'ютери завжди розумітимуть, що вони мають на увазі. На жаль, це виявилося складнішою проблемою, ніж багато хто уявляв, і хоча сьогодні ця проблема набагато краще зрозуміла, існують значні труднощі у досягненні "ідеальної" обробки природної мови, особливо коли йдеться про розуміння значення речення. Це особливо складно, коли потрібно зрозуміти гумор або виявити емоції, такі як сарказм, у реченні.
|
|
|
|
|
|
На цьому етапі ви можете згадати шкільні уроки, де вчитель пояснював частини граматики в реченні. У деяких країнах студентів навчають граматики та лінгвістики як окремого предмета, але в багатьох ці теми включені до вивчення мови: або вашої рідної мови в початковій школі (навчання читанню та письму), або, можливо, другої мови в середній школі. Не хвилюйтеся, якщо ви не є експертом у розрізненні іменників від дієслів або прислівників від прикметників!
|
|
|
|
|
|
Якщо вам важко розрізняти *простий теперішній час* і *теперішній тривалий час*, ви не самотні. Це складно для багатьох людей, навіть для носіїв мови. Хороша новина полягає в тому, що комп'ютери дуже добре застосовують формальні правила, і ви навчитеся писати код, який може *розбирати* речення так само добре, як і людина. Більший виклик, який ви розглянете пізніше, — це розуміння *значення* та *емоційного забарвлення* речення.
|
|
|
|
|
|
## Попередні знання
|
|
|
|
|
|
Для цього уроку основною вимогою є вміння читати та розуміти мову цього уроку. Тут немає математичних задач або рівнянь для розв'язання. Хоча оригінальний автор написав цей урок англійською мовою, він також перекладений іншими мовами, тому ви можете читати переклад. Є приклади, де використовується кілька різних мов (для порівняння різних граматичних правил). Ці приклади *не* перекладаються, але пояснювальний текст перекладено, тому зміст має бути зрозумілим.
|
|
|
|
|
|
Для завдань з програмування ви будете використовувати Python, а приклади написані для Python 3.8.
|
|
|
|
|
|
У цьому розділі вам знадобляться:
|
|
|
|
|
|
- **Розуміння Python 3**. Розуміння програмування мовою Python 3, цей урок використовує введення, цикли, читання файлів, масиви.
|
|
|
- **Visual Studio Code + розширення**. Ми будемо використовувати Visual Studio Code та його розширення для Python. Ви також можете використовувати будь-яке середовище розробки для Python на ваш вибір.
|
|
|
- **TextBlob**. [TextBlob](https://github.com/sloria/TextBlob) — це спрощена бібліотека для обробки тексту на Python. Дотримуйтесь інструкцій на сайті TextBlob, щоб встановити її на свою систему (встановіть також корпуси, як показано нижче):
|
|
|
|
|
|
```bash
|
|
|
pip install -U textblob
|
|
|
python -m textblob.download_corpora
|
|
|
```
|
|
|
|
|
|
> 💡 Порада: Ви можете запускати Python безпосередньо в середовищах VS Code. Ознайомтеся з [документацією](https://code.visualstudio.com/docs/languages/python?WT.mc_id=academic-77952-leestott) для отримання додаткової інформації.
|
|
|
|
|
|
## Спілкування з машинами
|
|
|
|
|
|
Історія спроб змусити комп'ютери розуміти людську мову налічує десятиліття, і одним із перших учених, які розглядали обробку природної мови, був *Алан Тюрінг*.
|
|
|
|
|
|
### Тест Тюрінга
|
|
|
|
|
|
Коли Тюрінг досліджував *штучний інтелект* у 1950-х роках, він розглядав можливість проведення тесту у вигляді розмови між людиною та комп'ютером (через друковану кореспонденцію), де людина в розмові не була впевнена, чи спілкується вона з іншою людиною чи комп'ютером.
|
|
|
|
|
|
Якщо після певного часу розмови людина не могла визначити, чи відповіді надходять від комп'ютера чи ні, чи можна тоді сказати, що комп'ютер *мислить*?
|
|
|
|
|
|
### Натхнення — "гра в імітацію"
|
|
|
|
|
|
Ідея для цього виникла з вечірньої гри під назвою *Гра в імітацію*, де допитувач знаходиться в кімнаті наодинці і має визначити, хто з двох людей (в іншій кімнаті) є чоловіком, а хто — жінкою. Допитувач може надсилати записки і має намагатися придумати запитання, відповіді на які розкриють стать загадкової особи. Звісно, гравці в іншій кімнаті намагаються заплутати допитувача, відповідаючи так, щоб ввести його в оману, але при цьому створюючи враження чесних відповідей.
|
|
|
|
|
|
### Розробка Елізи
|
|
|
|
|
|
У 1960-х роках учений з MIT на ім'я *Джозеф Вайзенбаум* розробив [*Елізу*](https://wikipedia.org/wiki/ELIZA), комп'ютерного "терапевта", який ставив людині запитання і створював враження, що розуміє її відповіді. Однак, хоча Еліза могла розбирати речення і визначати певні граматичні конструкції та ключові слова, щоб дати розумну відповідь, не можна було сказати, що вона *розуміє* речення. Якщо Елізі подавали речення у форматі "**Я є** <u>сумний</u>", вона могла б переставити слова і замінити їх, щоб сформувати відповідь "Як довго **ви були** <u>сумним</u>".
|
|
|
|
|
|
Це створювало враження, що Еліза розуміє твердження і ставить уточнююче запитання, тоді як насправді вона просто змінювала час і додавала кілька слів. Якщо Еліза не могла визначити ключове слово, на яке у неї була відповідь, вона давала випадкову відповідь, яка могла б підійти до багатьох різних тверджень. Елізу можна було легко обдурити, наприклад, якщо користувач написав "**Ти є** <u>велосипедом</u>", вона могла відповісти "Як довго **я був** <u>велосипедом</u>?", замість більш логічної відповіді.
|
|
|
|
|
|
[](https://youtu.be/RMK9AphfLco "Розмова з Елізою")
|
|
|
|
|
|
> 🎥 Натисніть на зображення вище, щоб переглянути відео про оригінальну програму ELIZA
|
|
|
|
|
|
> Примітка: Ви можете прочитати оригінальний опис [Елізи](https://cacm.acm.org/magazines/1966/1/13317-elizaa-computer-program-for-the-study-of-natural-language-communication-between-man-and-machine/abstract), опублікований у 1966 році, якщо у вас є обліковий запис ACM. Або ж прочитайте про Елізу на [Вікіпедії](https://wikipedia.org/wiki/ELIZA).
|
|
|
|
|
|
## Вправа — програмування базового розмовного бота
|
|
|
|
|
|
Розмовний бот, як Еліза, — це програма, яка отримує введення від користувача і створює враження, що розуміє та відповідає розумно. На відміну від Елізи, наш бот не матиме кількох правил, які створюють враження інтелектуальної розмови. Натомість наш бот матиме лише одну здатність — підтримувати розмову випадковими відповідями, які можуть підійти до будь-якої тривіальної розмови.
|
|
|
|
|
|
### План
|
|
|
|
|
|
Ваші кроки при створенні розмовного бота:
|
|
|
|
|
|
1. Вивести інструкції для користувача, як взаємодіяти з ботом
|
|
|
2. Запустити цикл
|
|
|
1. Прийняти введення від користувача
|
|
|
2. Якщо користувач попросив вийти, завершити роботу
|
|
|
3. Обробити введення користувача і визначити відповідь (у цьому випадку відповідь — це випадковий вибір із списку можливих загальних відповідей)
|
|
|
4. Вивести відповідь
|
|
|
3. Повернутися до кроку 2
|
|
|
|
|
|
### Створення бота
|
|
|
|
|
|
Давайте створимо бота. Почнемо з визначення кількох фраз.
|
|
|
|
|
|
1. Створіть цього бота самостійно на Python, використовуючи такі випадкові відповіді:
|
|
|
|
|
|
```python
|
|
|
random_responses = ["That is quite interesting, please tell me more.",
|
|
|
"I see. Do go on.",
|
|
|
"Why do you say that?",
|
|
|
"Funny weather we've been having, isn't it?",
|
|
|
"Let's change the subject.",
|
|
|
"Did you catch the game last night?"]
|
|
|
```
|
|
|
|
|
|
Ось приклад виводу, який може вас спрямувати (введення користувача починається зі знака `>`):
|
|
|
|
|
|
```output
|
|
|
Hello, I am Marvin, the simple robot.
|
|
|
You can end this conversation at any time by typing 'bye'
|
|
|
After typing each answer, press 'enter'
|
|
|
How are you today?
|
|
|
> I am good thanks
|
|
|
That is quite interesting, please tell me more.
|
|
|
> today I went for a walk
|
|
|
Did you catch the game last night?
|
|
|
> I did, but my team lost
|
|
|
Funny weather we've been having, isn't it?
|
|
|
> yes but I hope next week is better
|
|
|
Let's change the subject.
|
|
|
> ok, lets talk about music
|
|
|
Why do you say that?
|
|
|
> because I like music!
|
|
|
Why do you say that?
|
|
|
> bye
|
|
|
It was nice talking to you, goodbye!
|
|
|
```
|
|
|
|
|
|
Один із можливих розв'язків завдання знаходиться [тут](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/1-Introduction-to-NLP/solution/bot.py)
|
|
|
|
|
|
✅ Зупиніться і подумайте
|
|
|
|
|
|
1. Чи вважаєте ви, що випадкові відповіді могли б "обдурити" когось, змусивши думати, що бот дійсно розуміє їх?
|
|
|
2. Які функції потрібні боту, щоб бути ефективнішим?
|
|
|
3. Якщо бот дійсно міг би "розуміти" значення речення, чи потрібно йому було б "запам'ятовувати" значення попередніх речень у розмові?
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🚀 Виклик
|
|
|
|
|
|
Виберіть один із пунктів "зупиніться і подумайте", наведених вище, і спробуйте реалізувати його в коді або напишіть рішення на папері у вигляді псевдокоду.
|
|
|
|
|
|
У наступному уроці ви дізнаєтеся про низку інших підходів до розбору природної мови та машинного навчання.
|
|
|
|
|
|
## [Тест після лекції](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
|
|
## Огляд і самостійне навчання
|
|
|
|
|
|
Ознайомтеся з наведеними нижче посиланнями для подальшого читання.
|
|
|
|
|
|
### Джерела
|
|
|
|
|
|
1. Шуберт, Ленгарт, "Комп'ютерна лінгвістика", *The Stanford Encyclopedia of Philosophy* (Spring 2020 Edition), Edward N. Zalta (ed.), URL = <https://plato.stanford.edu/archives/spr2020/entries/computational-linguistics/>.
|
|
|
2. Принстонський університет "Про WordNet." [WordNet](https://wordnet.princeton.edu/). Принстонський університет. 2010.
|
|
|
|
|
|
## Завдання
|
|
|
|
|
|
[Знайдіть бота](assignment.md)
|
|
|
|
|
|
---
|
|
|
|
|
|
**Відмова від відповідальності**:
|
|
|
Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ мовою оригіналу слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. |