You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/uk/6-NLP/3-Translation-Sentiment
leestott ffd4047095
🌐 Update translations via Co-op Translator
3 weeks ago
..
solution 🌐 Update translations via Co-op Translator 3 weeks ago
README.md 🌐 Update translations via Co-op Translator 3 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 3 weeks ago

README.md

Переклад та аналіз настрою за допомогою ML

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

Тест перед лекцією

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

  1. Ідентифікація. Визначити або позначити слова в мові введення як іменники, дієслова тощо.
  2. Створення перекладу. Зробити прямий переклад кожного слова у формат цільової мови.

Приклад речення, англійська до ірландської

В англійській мові речення I feel happy складається з трьох слів у такому порядку:

  • підмет (I)
  • дієслово (feel)
  • прикметник (happy)

Однак в ірландській мові те саме речення має зовсім іншу граматичну структуру — емоції, такі як "happy" або "sad", виражаються як такі, що перебувають на вас.

Англійська фраза I feel happy в ірландській буде Tá athas orm. Буквальний переклад буде Happy is upon me.

Ірландський мовник, перекладаючи на англійську, скаже I feel happy, а не Happy is upon me, тому що він розуміє значення речення, навіть якщо слова та структура речення різні.

Формальний порядок речення в ірландській:

  • дієслово (Tá або is)
  • прикметник (athas, або happy)
  • підмет (orm, або upon me)

Переклад

Наївна програма перекладу може перекладати лише слова, ігноруючи структуру речення.

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

Наївний переклад призводить до поганих (а іноді й смішних) помилок перекладу: I feel happy буквально перекладається як Mise bhraitheann athas в ірландській. Це означає (буквально) me feel happy і не є правильним ірландським реченням. Незважаючи на те, що англійська та ірландська — це мови, якими розмовляють на двох сусідніх островах, вони дуже різні з точки зору граматичних структур.

Ви можете переглянути деякі відео про ірландські лінгвістичні традиції, наприклад це

Підходи машинного навчання

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

Наприклад, розглянемо випадок Гордість і упередження, відомого англійського роману, написаного Джейн Остін у 1813 році. Якщо ви звернетеся до книги англійською мовою та людського перекладу книги французькою мовою, ви зможете виявити фрази в одній, які ідіоматично перекладені в іншу. Ви зробите це за хвилину.

Наприклад, коли англійська фраза I have no money буквально перекладається французькою, вона може стати Je n'ai pas de monnaie. "Monnaie" — це складний французький "хибний когнат", оскільки "money" і "monnaie" не є синонімами. Кращий переклад, який може зробити людина, буде Je n'ai pas d'argent, оскільки він краще передає значення того, що у вас немає грошей (а не "дрібних монет", що є значенням "monnaie").

monnaie

Зображення від Jen Looper

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

Вправа - переклад

Ви можете використовувати TextBlob для перекладу речень. Спробуйте відому першу фразу з Гордості та упередження:

from textblob import TextBlob

blob = TextBlob(
    "It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife!"
)
print(blob.translate(to="fr"))

TextBlob досить добре справляється з перекладом: "C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme!".

Можна стверджувати, що переклад TextBlob набагато точніший, ніж французький переклад книги 1932 року, виконаний В. Леконтом і Ш. Пресуаром:

"C'est une vérité universelle qu'un célibataire pourvu d'une belle fortune doit avoir envie de se marier, et, si peu que l'on sache de son sentiment à cet egard, lorsqu'il arrive dans une nouvelle résidence, cette idée est si bien fixée dans l'esprit de ses voisins qu'ils le considèrent sur-le-champ comme la propriété légitime de l'une ou l'autre de leurs filles."

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

Що тут відбувається? І чому TextBlob так добре справляється з перекладом? Справа в тому, що за лаштунками він використовує Google Translate, складний AI, здатний аналізувати мільйони фраз, щоб передбачити найкращі рядки для виконання завдання. Тут немає нічого ручного, і вам потрібне підключення до Інтернету, щоб використовувати blob.translate.

Спробуйте ще кілька речень. Що краще, ML чи людський переклад? У яких випадках?

Аналіз настрою

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

Цей підхід легко обдурити, як ви могли бачити в завданні з Марвіном — речення Great, that was a wonderful waste of time, I'm glad we are lost on this dark road є саркастичним, негативним реченням, але простий алгоритм виявляє "great", "wonderful", "glad" як позитивні та "waste", "lost" і "dark" як негативні. Загальний настрій коливається через ці суперечливі слова.

Зупиніться на секунду і подумайте, як ми передаємо сарказм як людські мовники. Інтонація відіграє велику роль. Спробуйте сказати фразу "Well, that film was awesome" різними способами, щоб зрозуміти, як ваш голос передає значення.

Підходи ML

Підхід ML полягатиме в тому, щоб вручну зібрати негативні та позитивні тексти — твіти, або огляди фільмів, або будь-що, де людина дала оцінку і написала думку. Потім можна застосувати техніки NLP до думок і оцінок, щоб виявити шаблони (наприклад, позитивні огляди фільмів частіше містять фразу "Oscar worthy", ніж негативні огляди фільмів, або позитивні огляди ресторанів частіше містять "gourmet", ніж "disgusting").

⚖️ Приклад: Якщо ви працювали в офісі політика і обговорювався новий закон, виборці могли писати до офісу електронні листи на підтримку або проти конкретного нового закону. Припустимо, вам доручено читати ці електронні листи та сортувати їх у 2 купи, за і проти. Якщо було багато електронних листів, ви могли б бути перевантажені, намагаючись прочитати їх усі. Хіба не було б чудово, якби бот міг прочитати їх усі за вас, зрозуміти їх і сказати, до якої купи належить кожен лист?

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

Чи звучить цей процес як процеси, які ви використовували в попередніх уроках?

Вправа - сентиментальні речення

Настрій вимірюється за допомогою полярності від -1 до 1, де -1 — це найбільш негативний настрій, а 1 — найбільш позитивний. Настрій також вимірюється за шкалою від 0 до 1 для об’єктивності (0) і суб’єктивності (1).

Ще раз погляньте на Гордість і упередження Джейн Остін. Текст доступний тут: Project Gutenberg. Наведений нижче приклад показує коротку програму, яка аналізує настрій першого та останнього речень книги та відображає його полярність настрою та оцінку суб’єктивності/об’єктивності.

Ви повинні використовувати бібліотеку TextBlob (описану вище), щоб визначити sentiment (вам не потрібно писати власний калькулятор настрою) у наступному завданні.

from textblob import TextBlob

quote1 = """It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife."""

quote2 = """Darcy, as well as Elizabeth, really loved them; and they were both ever sensible of the warmest gratitude towards the persons who, by bringing her into Derbyshire, had been the means of uniting them."""

sentiment1 = TextBlob(quote1).sentiment
sentiment2 = TextBlob(quote2).sentiment

print(quote1 + " has a sentiment of " + str(sentiment1))
print(quote2 + " has a sentiment of " + str(sentiment2))

Ви бачите наступний результат:

It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want # of a wife. has a sentiment of Sentiment(polarity=0.20952380952380953, subjectivity=0.27142857142857146)

Darcy, as well as Elizabeth, really loved them; and they were
     both ever sensible of the warmest gratitude towards the persons
      who, by bringing her into Derbyshire, had been the means of
      uniting them. has a sentiment of Sentiment(polarity=0.7, subjectivity=0.8)

Завдання - перевірка полярності настрою

Ваше завдання — визначити, використовуючи полярність настрою, чи має Гордість і упередження більше абсолютно позитивних речень, ніж абсолютно негативних. Для цього завдання ви можете припустити, що оцінка полярності 1 або -1 є абсолютно позитивною або негативною відповідно.

Кроки:

  1. Завантажте копію Гордість і упередження з Project Gutenberg як .txt файл. Видаліть метадані на початку та в кінці файлу, залишивши лише оригінальний текст.
  2. Відкрийте файл у Python і витягніть вміст як рядок.
  3. Створіть TextBlob, використовуючи рядок книги.
  4. Аналізуйте кожне речення в книзі в циклі.
    1. Якщо полярність дорівнює 1 або -1, збережіть речення в масиві або списку позитивних або негативних повідомлень.
  5. Наприкінці виведіть усі позитивні речення та негативні речення (окремо) і їх кількість.

Ось приклад розв’язку.

Перевірка знань

  1. Настрій базується на словах, використаних у реченні, але чи розуміє код ці слова?
  2. Чи вважаєте ви, що полярність настрою точна, іншими словами, чи ви згодні з оцінками?
    1. Зокрема, чи погоджуєтеся ви чи не погоджуєтеся з абсолютною позитивною полярністю наступних речень?
      • “What an excellent father you have, girls!” said she, when the door was shut.
      • “Your examination of Mr. Darcy is over, I presume,” said Miss Bingley; “and pray what is the result?” “I am perfectly convinced by it that Mr. Darcy has no defect.
      • How wonderfully these sort of things occur!
      • I have the greatest dislike in the world to that sort of thing.
      • Charlotte is an excellent manager, I dare say.
      • “This is delightful indeed!
      • I am so happy!
      • Your idea of the ponies is delightful.
    2. Наступні 3 речення були оцінені як абсолютно позитивні, але при уважному читанні вони не є позитивними. Чому аналіз настрою вважав їх позитивними реченнями?
      • Happy shall I be, when his stay at Netherfield is over!” “I wish I could say anything to comfort you,” replied Elizabeth; “but it is wholly out of my power.
      • If I could but see you as happy!
      • Our distress, my dear Lizzy, is very great.
    3. Чи погоджуєтеся ви чи не погоджуєтеся з абсолютною негативною полярністю наступних речень?
      • Everybody is disgusted with his pride.
      • “I should like to know how he behaves among strangers.” “You shall hear then—but prepare yourself for something very dreadful.
      • The pause was to Elizabeths feelings dreadful.
      • It would be dreadful!

Будь-який шанувальник Джейн Остін зрозуміє, що вона часто використовує свої книги для критики більш абсурдних аспектів англійського суспільства епохи Регентства. Елізабет Беннет, головна героїня Гордості та упередження, є уважним соціальним спостерігачем (як і авторка), і її мова часто сильно нюансована. Навіть містер Дарсі (коханий у цій історії) зазначає грайливе та дражливе використання мови Елізабет: "I have had the pleasure of your acquaintance long enough to know that you find great enjoyment in occasionally professing opinions which in fact are not your own."


🚀Завдання

Чи можете ви зробити Марвіна ще кращим, витягуючи інші особливості з введення користувача?

Тест після лекції

Огляд і самостійне навчання

Існує багато способів визначення настрою тексту. Подумайте про бізнес-додатки, які можуть використовувати цю техніку. Замисліться над тим, як вона може працювати неправильно. Дізнайтеся більше про складні системи корпоративного рівня, які аналізують настрій, такі як Azure Text Analysis. Перевірте деякі речення з "Гордості та упередження", наведені вище, і подивіться, чи зможе система виявити нюанси.

Завдання

Поетична ліцензія


Відмова від відповідальності:
Цей документ було перекладено за допомогою сервісу автоматичного перекладу Co-op Translator. Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ мовою оригіналу слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.