Зустрічайте UA-GEC — набір даних із виправлення граматичних помилок для української мови

Спільнота дослідників NLP (natural language processing — обробка природної мови) традиційно була зосереджена на англійській мові. Саме для англійської випускається найбільше даних, лінгвістичних ресурсів та моделей. Але у світі понад 7 тисяч мов — як бути з ними? І що з українською?

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

Основною перепоною розвитку моделей для більшої кількості мов завжди був брак даних. Для численних мов узагалі відсутні анотовані загальнодоступні набори даних. Компанія Grammarly зробила свій внесок у цю справу, видавши UA-GEC — перший набір даних із виправлення граматичних і стилістичних помилок для української мови. Він є у вільному доступі та містить 20 715 речень, анотованих для граматичних і стилістичних помилок. Корпус UA-GEC поповнює лави наборів даних для мов, що забезпечені середніми й малими лінгвістичними ресурсами, як-от німецька, чеська, російська, іспанська і румунська.


Діаграма. Загальнодоступні набори даних GEC: рік видання й охоплювані мови

Що таке набір даних GEC

У дослідженнях NLP загальним терміном «виправлення граматичних помилок» (grammatical error correction, GEC) називають завдання автоматичного виявлення й усунення граматичних, орфографічних і пунктуаційних помилок у тексті. Виправлення стилістичних помилок — це додаткове завдання GEC. Щоб покращити стиль тексту, тобто досягти природнішого для носія мови звучання, зазвичай потрібні значніші правки речень.


Приклад речення українською мовою, анотованого для виправлення стилістичних і граматичних помилок

Упродовж останнього десятиріччя значно поліпшилася якість наборів даних GEC для англійської мови. Кількість балів за загальнодоступним еталоном CoNLL-2014 зросла від 37,3 у 2014 році до 66,5 у 2020 році (див. роботу наших колег: Omelianchuk et al., 2020). Це було б неможливо без лінгвістичних ресурсів. Моделі машинного навчання, які виправляють граматичні й стилістичні помилки в тексті, спираються на набори даних GEC, використовуючи їх для тренування й оцінювання.

Набір даних GEC, як-от UA-GEC, — це набір текстів, де кожний текст представлений у двох варіантах:

  1. оригінальний текст із помилками;
  2. анотований текст із позначеними помилками.
У розробці таких наборів даних беруть участь лінгвісти, додаючи анотації, що розподіляють виявлені помилки за певними категоріями й описують способи їхнього виправлення.


Приклад набору даних, узятий безпосередньо з корпусу UA-GEC

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

Чому саме українська

Засновниками компанії Grammarly є українці, а в Києві розташований наш найбільший офіс. Окрім того, українська мова є цікавою для NLP-досліджень із кількох міркувань. Однією з цікавих проблем є її розвинута морфологія. Візьмімо для прикладу англійське слово «see» («бачити»). Воно має п’ять залежних від часу форм, які називаються дієвідмінами: see, sees, saw, seen і seeing. Водночас в українській мові дієслово «бачити» має двадцять шість можливих форм! Вибір форми слова залежить від часу (минулий, теперішній, майбутній), граматичного роду («він бачив», «вона бачила», «воно бачило»), особи («я бачу», «вона бачить», «вони бачать») і цілої низки інших параметрів.

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

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

Збір даних

Побудова набору даних GEC відбувається у два етапи. Спочатку ми збираємо тексти, які містять помилки, далі виправляємо й анотуємо ці помилки. Передусім постає питання: де взяти тексти з помилками?

Один із поширених способів це зробити — скористатись есе тих, хто вивчає мову. Цей спосіб використано, наприклад, у наборах даних CLC FCE (англійська), COWS-L2H (іспанська) і RULEC-GEC (російська). Звісно, такі корпуси текстів містять безліч помилок. Однак у цій стратегії є вади. Ті, хто вивчає нерідну мову, здебільшого роблять інші типи помилок і помиляються частіше, аніж ті, хто пише рідною. Коло тем для есе зазвичай обмежено, що звужує лексичне розмаїття текстів у корпусі. Крім того, саме поняття «есе» передбачає певний тон і рівень формальності, які не можна вважати типовими для переважної частини комунікативних завдань.

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

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

1. Перекласти українською короткий уривок тексту з іноземної мови (англійської, французької, німецької, польської або російської).

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

2. Написати повідомлення на одну з двадцяти запропонованих тем.

Теми запропоновано, щоб авторам не доводилося самим вигадувати, про що писати. Ми намагалися дібрати різноманітні й реалістичні теми. Наприклад, пропонували написати скаргу власникові ресторану або описати вечірку другові.

Ми просили не вичитувати написані тексти, але водночас не робити помилок навмисне.

3. Надіслати власний текст (з будь-якого джерела), бажано не редагувати його перед тим.

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

Вибір завдань розподілився таким чином:

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

Анотація даних

Ми залучили до роботи над проєктом двох професійних коректорів української мови. Їхнім завданням було виправляти тексти і вказувати категорії помилок. Виправляти тексти — це переписувати речення так, щоб вони не містили граматичних і стилістичних помилок. Наприклад, «Мені це подобаються!» треба виправити на «Мені це подобається!».

Віднести помилку до певної категорії означає виправити її («подобаються» на"подобається« в наведеному вище прикладі) і призначити їй одну з таких категорій: граматична, орфографічна, пунктуаційна або стилістична. Ці відомості можна використати згодом для ретельнішого аналізу. Наприклад, можна відповісти на певні питання, як-от: «Чи ті, хто розмовляє нерідною мовою, роблять більше орфографічних помилок, ніж ті, хто розмовляє рідною?».

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

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

Статистика

Дотепер ми зібрали й анотували 1011 текстів (20 715 речень і 328 779 токенів) від 492 унікальних авторів. Якщо надрукувати набір даних UA-GEC, вийде книга обсягом близько 800 сторінок — довша за «Улісс» Джеймса Джойса (який містить приблизно 265 000 слів) і втричі довша за Шевченків «Кобзар»!

Докладнішу статистику й аналіз див. у супровідній науковій роботі.

У таблиці нижче подано додаткові відомості про деякі загальнодоступні набори даних GEC для різних мов.

Видання

Ми опублікували набір даних UA-GEC на ресурсі GitHub.

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

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

@misc{syvokon2021uagec,
      title={UA-GEC: Grammatical Error Correction and Fluency Corpus for the Ukrainian Language},
      author={Oleksiy Syvokon and Olena Nahorna},
      year={2021},
      eprint={2103.16997},
      archivePrefix={arXiv},
      primaryClass={cs.CL}}      

Подальші плани

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

Сподіваємося, що набір даних UA-GEC стане корисним ресурсом для спільноти фахівців NLP і сприятиме ретельним багатомовним дослідженням і моделюванню. Корпус доступний за ліцензією CC BY 4.0 за адресою github.com/grammarly/ua-gec.

Як підтримати проєкт?

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

Дякуємо! Рухаємось далі з вашою підтримкою.

👍НравитсяПонравилось20
В избранноеВ избранном2
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

Привіт,
невеликий фідбек:

The package can be easily installed by pip:
$ pip install ua_gec==1.1

Ну це досить відносно, 99% відсотків вже не зможуть встановити собі цей пакет :(

????
packaging.python.org/...​pip-from-the-command-line

Чи ви про те, що треба знати, що pip це менеджер пакетів для пітону?

Уявіть собі випускника факультету філології, який в цілому може відповісти в якому році Тарас Шевченко ввів в обіг слова «а, б, в, г», а тепер уявіть його рівень технічної підготовленості :)
Це має бути сильно простіше, а ж до «нажать тут і тут», мишкой, два рази.

Нажаль це не зовсім для таких людей продукт
З нього можна зробити щось для них

Але саме ця ліба — це для тих хто хоч якось володіє пітоном

Сторінка збору даних залишатиметься активною до кінця 2021 року

ua-gec-dataset.grammarly.ai/#contribute
Збір текстів триває на постійній основі.

Ммм?

PS: Дякую за вашу працю

Молодці! Дякую!

Именно тот момент, когда авторы тратят ресурсы — причем ресурсы компании — на то, что не принесет прибыли. Можно и для рунди сделать такой пакет, вопрос только в том, кто потом это купит.

це дійсно круто, дякую!

колись це мало статися :) Дякую!

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