fbpx
ОСТАННІЙ ПОДКАСТ
Підписуйся на найнауковішу розсилку!
І миттєво отримуй 9 електронних журналів Куншт у подарунок.

Ми під'їдаємо крихти cookies за вами. Навіщо це нам?

Читати

Пардон за відволікалочку. Допоможи Куншт бути незалежним!

Пардон за відволікалочку. Допоможи Куншт бути незалежним!

Повідомлення успішно надіслано

Для пошуку
введіть назву запису
Технології — 27.02.21
ТЕКСТ: Дар'я Кузява
Ілюстрації: Каталіна Маєвська
Ми любимо тексти без помилок. Якщо ви все ж таки щось знайшли, виділіть фрагмент і натисніть
Ctrl+Enter.
Взяти мову в кулак

Що таке GEC-корпус мови і навіщо він? Як він допоможе комп’ютерній лінгвістиці і як працює з мовою штучний інтелект? Розповідає Олексій Сивоконь із Grammarly, який ініціював створення такого корпусу для української. 

Чому не можна адаптувати  алгоритм, який ви розробили для англійської мови, до української? 

 

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

 

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

 

По-перше, це особливості самої української мови, яка є мовою з розвиненою морфологією. Це означає, що кожне слово має багато словоформ. Наприклад, дієслово «бачити». Його словоформи – «бачиш», «бачать», «бачитимемо» і так далі. І таких словоформ для дієслова «бачити» 25. В англійській мові словоформ набагато менше. Зазвичай дві-три. Скажімо, є desk і desks – і це, фактично, все. Для комп’ютера всі ці 25 словоформ – 25 різних не пов’язаних між собою слів. Для комп’ютера «бачу» і «бачиш» – це такі самі далекі між собою слова, як «бачити» і «борщ». Людина легко зрозуміє, що йдеться про одну й ту саму дію, а комп’ютер повинен мати більше тренувальних даних, йому треба бачити багато прикладів, як використовують мову. Для англійської це не проблема, бо там словоформ мало, а для української, якщо отак використовувати ці методи, то буде потрібно набагато більше даних. 

 

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

І українська – це так звана low resource language, так? Скільки взагалі приблизно часу піде  на те, щоб українська мала достатньо такого ресурсу, зокрема для створення корпусу,  щоб бодай трохи наблизитися до того рівня, на якому англійська є зараз?

 

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

 

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

 

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

 

І претреновані моделі – це моделі, які тренуються на цих нерозмічених текстах спершу. Їхнє завдання – дуже просте. Вони бачать речення. У цьому реченні ми закриваємо одне чи кілька слів, і вони мають вгадати, яке там слово було. Таку задачу дуже просто зробити, але для того, щоб навчитися якісно вгадувати, яке слово там було, модель має багато чого вивчити: як мова працює, граматику, синтаксис, якісь факти про світ. Припустімо, є речення «У кішки чотири лапи». Я закриваю слово «чотири», модель бачить «У кішки _____ лапи» і має підставити туди правильну відповідь. Щоб це зробити, вона має зрозуміти, як працює мова, має собі уявляти, що зазвичай у котів чотири лапи. Ми робимо таку модель з багатьма даними, вона вчиться і з цих даних щось дізнається про мову і світ. А далі ми беремо таку мовну модель і довчаємо її на задачі, яка нас насправді цікавить. Не вгадувати слово нам потрібно виправляти помилки або робити машинний переклад. І ми беремо таку модель, яка вже багато чого знає, показуємо наш невеличкий датасет, розмічений під конкретну задачу, і модель набагато краще впорається, бо їй не треба з нуля вчити мову, вона вже знає багато фактів про світ і набагато краще поводитиметься на нових задачах. Це називається transfer learning. На це зараз покладають великі сподівання.

 

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

Ви є головним натхненником ідеї українського GEC-корпусу в Grammarly. Чому ви цим почали займатися? Які основні етапи створення цього корпусу?

 

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

 

Чотири роки тому я почав працювати в Grammarly. Бачив, як з’являються методи глибинного навчання, які вони потужні й як вони спрощують роботу над лінгвістичними завданнями. Раніше треба було мати лінгвістичну експертизу, описати граматику, правила, і це було великою, клопіткою роботою. А от глибинним навчанням, якщо мати ресурси, може зайнятися набагато ширше коло людей, які знаються на машинному навчанні. 

 

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

 

Але зараз це змінюється, тому що претреновані моделі дозволяють робити круті речі на відносно невеликих обсягах даних. Тож коли я запропонував Grammarly створити UA-GEC, усі дуже радо підтримали та з великим ентузіазмом взялися за роботу.

Що таке GEC-корпус? Чим він відрізняється від звичайних текстів? 

 

GEC – це абревіатура, яка означає Grammatical Error Correction, тобто виправлення граматичних помилок. Йдеться про задачу, коли ми даємо комп’ютеру текст, а він знаходить і виправляє в ньому помилки. Як це робили вчителі української мови в школі.

 

GEC-корпус – це така собі колекція текстів. Ці тексти написали звичайні люди, і вони дуже різноманітні. Це можуть бути дописи з блогів, чати – те, що пишуть звичайні люди в повсякденному житті. У цих текстах є граматичні помилки, бо люди часто помиляються. Лінгвісти ці помилки знаходять і виправляють. Тексти у GEC-корпусі мають варіант речення, яким воно було до виправлення, і містять виправлення, анотації. Наприклад, ми кажемо, що тут помилка, і слово «черепахи» треба замінити на «черепасі».

 

Такі дані важливі з кількох причин. По-перше, їх можна використовувати для автоматичного оцінювання систем перевірки граматики. Припустімо, ми написали програму, яка виправляє граматику. Хочемо перевірити, як добре вона працює. Ми даємо їй текст із помилками з нашого корпусу. Для прикладу, «Я в бібліотеки». Ми знаємо, що наші лінгвісти колись проанотували, що правильний варіант – «Я в бібліотеці». І ми дивимося, чи зробила таку підказку система, яку ми оцінюємо. Це важливо для розробки систем.

 

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

Які етапи створення такого корпусу? 

 

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

 

Тому для збору даних ми розробили сайт, форму збору даних, де волонтерам пропонували виконати одне з трьох завдань. Вони могли або написати есе на запропоновану тему, або перекласти фрагмент тексту з іншої мови на вибір, або  просто надіслати будь-який текст, який вони написали раніше. 

Не було проблемою, що волонтери писали занадто коректно? Тобто це ж могли бути люди, які цією темою цікавляться, відповідно, вони більш-менш грамотно пишуть тексти. 

 

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

 

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

 

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

 

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

 

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

 

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

 

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

Кінцева мета – створити таку систему перевірки помилок, яку Grammarly має для англійської, чи просто наявність цього корпусу?

 

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

 

На додачу, ми працюємо над прикладами моделей, які виправляють граматику для української і базуються на нашому корпусі. Це будуть базові моделі – baseline models. Їх ми теж опублікуємо разом із корпусом. Ми зробимо набір скриптів для автоматичної оцінки моделей. Це потрібно, щоб знизити поріг входження, щоб людина прийшла – і якась мінімальна модель перевірки вже була. Тоді дослідники зможуть не витрачати час на якісь базові речі, а відразу братися за покращення моделей.

У пресрелізі вказано, що ви плануєте вдосконалювати технічну цінність цього корпусу. Що це означає?

 

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

 

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

 

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

ТЕКСТ: Дар'я Кузява
Ілюстрації: Каталіна Маєвська
Статті

Повідомити про помилку

Текст, який буде надіслано нашим редакторам: