Як Яндекс навчив машину самостійно створювати переклади для рідкісних мов

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

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



Правила проти статистики

Машинний переклад, тобто автоматичний переклад з одного людського мови на іншу, зародився в середині минулого століття. Точкою відліку прийнято вважати Джорджтаунський експеримент, проведений 7 січня 1954 року, в рамках якого понад 60 фраз російською мовою були перекладені комп'ютером на англійську. По суті, це був зовсім і не експеримент, а добре спланована демонстрація: словник включав не більше 250 записів і працював з урахуванням лише 6 правил. Тим не менше результати вразили публіку і підштовхнули розвиток машинного перекладу.

В основі таких систем лежали словники і правила, які і визначали якість перекладу. Професійні лінгвісти роками працювали над тим, щоб вивести все більш докладні і всеосяжні ручні правила (по суті, регулярні вирази). Робота ця була настільки трудомісткою, що серйозна увага приділялася лише найбільш популярним парам мов, але навіть в рамках них машини погано справлялися. Жива мова – дуже складна система, яка погано підпорядковується правилам, постійно розвивається і практично щодня збагачується новими словами чи реченнями. Ще складніше описати правилами відповідності двох мов. Одні і ті ж слова можуть мати абсолютно різні перекази залежно від контексту. Та й цілі фрази можуть мати свій стійкий переклад, якому краще відповідати. Наприклад, "не Можна так просто увійти в Мордор".

Єдиний спосіб машині постійно адаптуватися до мінливих умов і враховувати контекст – це вчитися на великій кількості актуальних текстів і самостійно виявляти закономірності і правила. В цьому і полягає статистичний підхід до машинного перекладу. Ідеї ці відомі з середини 20 століття, але особливого поширення вони не отримали: машинний переклад, заснований на правилах, працював краще в умовах відсутності великих обчислювальних потужностей та навчальних баз.

Груба сила комп'ютерів – це не наука

Нова хвиля розвитку статистичного підходу почалася у 80-90-х роках минулого століття. Компанія IBM Research отримала доступ до великої кількості документів канадського парламенту і використовувала їх для роботи над системою перевірки правопису. І для цього вони застосували досить цікавий підхід, відомий під назвою noisy channel model. Сенс його в тому, що текст А розглядається як текст Б, але з помилками. І машини завдання – усунути їх. Навчалася модель на тисячах вже набраних документах. Детальніше про noisy channel можна почитати в інших постах на Хабре, тут важливо сказати, що цей підхід добре показав себе для перевірки правопису, і група співробітників IBM вирішила спробувати його і для переказу. У Канаді дві офіційні мови (англійська та французька), тому з допомогою перекладача вони сподівалися звільнити половину операторів скоротити обсяг введеного тексту вручну. А ось з часом були проблеми, тому їм довелося дочекатися того моменту, коли керівник пішов у відпустку, і з'явилася можливість творчо віднестися до дедлайнів і зайнятися дослідженням.

Результати їх роботи були опубліковано, але вразили вони не всіх. Організатори конференції з комп'ютерної лінгвістики COLING написали розгромний відгук:



Результат виявився гіршим, ніж у кращих на той момент систем, заснованих на правилах, але сам підхід, що передбачав скорочення ручної праці, зацікавив дослідників зі всього світу. І головна проблема, яка стояла перед ними, полягала у відсутності достатньої кількості прикладів перекладів для навчання машини. У хід йшли будь-які матеріали, які вдавалося знайти: бази міжнародних документів ООН, документації, довідники, Біблія і Коран (які перекладені майже на всі мови світу). Але для якісної роботи потрібно було більше.

Пошук

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

Яндекс ось вже п'ять років працює над власною системою машинного перекладу, яка навчається на даних з інтернету. Її результати використовуються Перекладача, Пошуку, Переглядачі, Пошті, Дзене і в багатьох інших сервісах. Навчається вона наступним чином. Спочатку система знаходить паралельні тексти за адресами документів — найчастіше такі адреси відрізняються лише параметрами, наприклад, «en» для англійської версії і «ru» для російської. Для кожного вивченого тексту система будує список унікальних ознак. Це можуть бути рідко використовувані слова, цифри, спеціальні знаки, які перебувають в тексті в певній послідовності. Коли система набирає достатню кількість текстів з ознаками, вона починає шукати паралельні тексти ще і з їх допомогою — порівнюючи ознаки нових текстів і вже вивчених.

Щоб перекладач відповідав сучасним стандартам якості, система повинна вивчити мільйони фраз на обох мовах. Пошукові технології можуть знайти їх, але тільки для найбільш популярних напрямків перекладу. Для всіх інших можна намагатися по-старому навчатися тільки на Вікіпедії або Біблії, але якість перекладу відкочується на десятиліття назад. Можна підключити краудсорсінг (Яндекс.Толока або Amazon Mechanical Turk) і зусиллями великої кількості людей з різних країн зібрати приклади перекладів. Але це довго, дорого і не завжди ефективно. Хоча ми і намагаємося використовувати краудсорсінг там, де це можливо, нам вдалося знайти альтернативне рішення.

Мова як сукупність моделей

В основі статистичного перекладу довгий час лежали виключно лексичні моделі, тобто такі моделі, який не враховують родинні зв'язки між різними словами і інші лінгвістичні характеристики. Простіше кажучи, слова «мама» і «мами» – це два абсолютно різних слова з точки зору моделі, і якість перекладу визначалося тільки наявністю відповідного прикладу.

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

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

Родинні зв'язки

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

Пап'яменто

Пап'яменто – це рідна мова населення Аруби, Кюрасао і Бонейр, на якому говорять близько 300 тис. чоловік. У тому числі один з наших колег, який народився на Арубі. Він і запропонував нам стати першими, хто підтримає пап'яменто. Про ці острови ми знали лише з Вікіпедії, але така пропозиція не могли упустити. І ось чому.



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

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

Моделювання будь-якого нового мови завжди починається з побудови його ядра. Яким би малим не був мову, у нього завжди є унікальні особливості, які відрізняють його від будь-якого іншого. Інакше б його просто не можна було віднести до самостійного мови. Це можуть бути свої унікальні слова або якісь правила словотворення, які не повторюються у споріднених мовах. Ці особливості і складають те ядро, яке в будь-якому випадку потрібно моделювати. І для цього цілком вистачає малої кількості прикладів перекладу. У випадку з пап'яменто в нашому розпорядженні був переклад Біблії на англійську, іспанська, голландська, португальська і, власне, пап'яменто. Плюс невелика кількість документів з мережі з їх перекладом на один з європейський мов.

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

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

Наприклад, згідно морфології іспанської мови, множина утворюється за допомогою закінчень -s/-es. Машина, зустрічаючись з множиною в іспанському перекладі, робить для себе висновок, що це ж слово в перекладі на пап'яменто, швидше за все, написане в множині. Завдяки цій особливості, автоматичний перекладач вивів для себе правило, що слова в пап'яменто з закінченням -nan позначають множину, і якщо його перекладу не знайдено, то варто відкинути закінчення і спробувати знайти переклад для однини. Аналогічно для багатьох інших правил словозміни.



З морфологією стало зрозуміліше, але що робити, якщо навіть початкова форма слова машині ще не відома? Ми пам'ятаємо, що більшість всіх слів пап'яменто походить від європейських аналогів. Припустимо, що наш автоматичний перекладач стикається з невідомим словом «largu» в пап'яменто і хоче знайти переклад на англійську. Машина зауважує, що це слово дуже схоже на слово «largo» як з іспанської та португальської мов. Ось тільки значення цих слів не збігаються («довгий» і «широкий» відповідно). І на яку мову орієнтуватися? Система машинного перекладу вирішує цю проблему наступним чином. Вона будує обидва варіанти перекладу, а потім, спираючись на мільйони вивчених англійських документів, робить висновок, який з варіантів більше схожий на природний текст. Наприклад, «long tail queries» (довгий хвіст запитів) більше схожий на правду, ніж «wide tail queries» (широкий хвіст запитів). Так вона запам'ятовує, що в даному конкретному випадку слово «largu» походить з іспанської, а не з португальської. І так для більшості невідомих слів – машина автоматично вивчить їх без готових прикладів і ручного втручання.



В результаті, завдяки запозиченням з більш великих мов, нам вдалося побудувати перекладу з/на пап'яменто на такому обсязі прикладів, на яких класичний статистичний машинний переклад просто не впорався б.

Горномарийский

Інший приклад. Ми регулярно додаємо підтримку мов народів Росії і в якийсь момент дійшли до марійського, в якому з самого появи писемності (у XIX столітті) розрізнялися два літературних варіанти: луговий (східний) і гірське (західний). Вони відрізняються лексично. Тим не менш мови дуже схожі і розуміли один одного. Перший друкований текст на марійській мовою – «Євангеліє» 1821 року – був горномарийским. Однак з-за того, що лучних марійців набагато більше, марійським мовою «за замовчуванням» зазвичай вважається луговий. З цієї ж причини текстів на луговому марійському набагато більше, і у нас не виникло проблем з класичним підходом. А ось для гірського ми застосували нашу технологію із запозиченнями. За основу ми взяли вже готовий луговий варіант, а словниковий запас корегували з допомогою існуючих словників. Причому згодився і російську мову, який за багато років досить сильно вплинув на марійський.

Ідиш

Ідиш виник у X-XIV століттях на основі верхненемецких діалектів — тих самих, які лягли в основу сучасної німецької мови. Тому дуже багато слова в ідиші та німецькою однакові або дуже схожі. Це дозволило нам використовувати допоміжні моделі лексики і морфології, зібрані за даними німецької мови. При цьому писемність в ідиші заснована на єврейському алфавіті, тому для її моделювання використовувався іврит. За нашими оцінками, переклад з/на ідиш, доповнений запозиченнями з івриту та німецької, відрізняється більш високою якістю в порівнянні з класичним підходом.

Ельфійський

У нашій команді люблять твори письменника Толкієна, тому переклад синдарина (один з мов ельфів Середзем'я) був лише питанням часу. Як ви розумієте, мова рідкісний, і його носіїв зустріти не так вже й легко. Тому довелося звернутися до лінгвістичним дослідженням творчості письменника. Пишучи синдарин, автор ґрунтувався на валлійській мові, і в ньому є характерні чергування початкових приголосних. Наприклад, «руна» буде «certh», а якщо перед ним йде певний артикль, то вийде «i gerth». Багато слова при цьому запозичувалися з ірландського, шотландського та валійського. На щастя, у свій час автор склав не тільки докладний словник, але і правила транслітерації слів з існуючих мов у синдарин. Всього цього виявилося цілком достатньо для створення перекладача.

Приклади мов, де ми використовували новий підхід, можна було б продовжувати. До теперішнього моменту ми встигли успішно застосувати технологію ще і в башкирському, узбецькій, маратхі і непальському. Багато з цих мов навіть формально не можна назвати «малими», але особливість нашого підходу саме в тому і полягає – використовувати його можна скрізь, де явно простежуються родинні зв'язки. Для невеликих мов він, в принципі, дозволяє створити перекладач, для інших – підняти планку якості. І це рівно те, чим ми і плануємо займатися в найближчому майбутньому.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.