Дмитро Чаплинський. Проект “lang-uk” – прорив у обробці україномовних текстів.

Є така галузь сучасних комп’ютерних технологій, котра займається роботою з натуральними текстами Natural Language Processing або скорчено NLP, у нас зазвичай NLP дещо інше називають, але в такому сучасному науковому світі – це саме обробка текстів. Коли у нас обсяги інформації постійно зростають і великі обсяги текстової інформації генеруються щодня, щохвилини, постає задача якось їх обробляти комп’ютером, щоб не залучати до цього людей. Це може бути задача пошуку, це можуть бути задачі пошуку дублікації текстів, наприклад, коли якась тема приходить в інформаційний простір і з’являється на сайті новин, можна простежити, звідки вона пішла, як вона розходилася по інших сайтах, хто її передруковував в оригіналі, хто її передруковував зі змінами тощо. Можна аналізувати великі обсяги текстів, наприклад, щоб знайти там згадки про персон, про локації, про організації, те що називається іменованими сутностями. Можна аналізувати тексти, щоб робити рекомендаційні системи, коли ти знаєш, про що людина пише у своєму блозі, чи кого вона читає, і їй можна запропонувати персоналізований набір товарів, які вона залюбки купить, тому що її це цікавить. Можна аналізувати якісь відгуки на сайтах, щоб зрозуміти їх тональність. Зрозуміти, як людина ставиться до якогось товару, який її настрій. Потім цей самий інструмент можна використовувати, щоб аналізувати великі обсяги новин та публікацій в медіа щодо, наприклад, політиків. Щоб можна було побачити, як світ, як суспільство реагує на деякі івенти, на деякі події в реальному житті, яку реакцію вони викликають. Можна мережі ботів виявляти або, навпаки, створювати.

І тут ми маємо невеличку проблему. Ця галузь доволі розвинута, вона доволі непогано просунулась в останні років п’ять, тому що її просувають гіганти – Google, Microsoft, Stanford тощо. Але для того, щоб це все працювало – вся ця машинерія, всі ці алгоритми, моделі, ідеї вже розроблені, в деяких задачах вони працюють краще, ніж людина, але швидкість обробки тут безмежна. Якщо тобі треба обробити мільярд текстів, ти просто береш більший комп’ютер. Людина чи декілька людей ніколи не змогли би це зробити. Але є проблема. Незважаючи на те, що є великий обсяг інструментарію, вже готового, вже підготовленого для нас науковцями, причому серйозними науковцями, усі ці інструменти треба якось заточити, щоб ними можна було працювати, їх треба навчити якійсь моделі чи натренувати алгоритми. Для цього потрібні дані. Тож не можна просто взяти алгоритм, котрий працює для англійської мови, налаштувати його на текст на українській мові, і він покаже нормальний результат, ні. Якщо це якась модель, яка тренується, для неї потрібно зробити тренувальний DataSet, котрий був розмічений людиною, був вичитаний на предмет відсутності помилок, люди теж помиляються, по деяких задачах у них 90 процентів точності тощо. Тільки після того, як такий обсяг даних буде створений, він буде доволі великий за обсягом, можна буде тренувати ті самі моделі, про котрі я говорив і можна буде отримати усі ці прекрасні речі. Тут маємо проблему – для англійської мови це стандарт де-факто, там дуже багато розробок, дуже багато текстів, дуже багато інформації, котру можна просто взяти, завантажити безкоштовно, без усіляких там обмовок. Для російської мови теж ситуація непогана, трохи краща вона для мов на кшталт іспанської, німецької, тощо. Для української мови майже нічого нема. Так, у нас є декілька лінгвістичних лабораторій, котрі займаються цим питанням, але вони ще з таким академічно-радянським минулим. Вони не дуже воліють чимось ділитися, не дуже зрозуміло, що вони мають. Чи вони мають ті дані, котрі необхідні для того, щоб сучасні алгоритми можна було натренувати і використовувати їх? Є побоювання, що навіть ті дані не дуже серйозної якості.

Ось на все це ми дивилися, дивилися і вирішили, що треба якось цей пробіл заповнити. Заповнити власними силами. Тут треба зробити таку ремарку – в Україні є люди, що займаються комп’ютерною обробкою мов. Є люди, що роблять це за гроші, є навіть стартап під назвою Grammarly, котрий займається обробкою англійської мови, там є спеціалісти надвисокого рівня, але в нас немає самих даних. Цю проблему ми і намагаємося вирішити в рамках нашої спільної ініціативи з Всеволодом Дьомкіним під назвою Lang-uk. Ми почали з того, що знайшли однодумців, тих людей, що вже займаються спорідненими темами, бо є дуже цікавий проект по створенню словника українською мовою, морфологічного, відкритого словника – це теж важливо, тому що це відкриває шлях до повнотекстового пошуку, повноцінного, з урахуванням усіх словоформ для української мови. Це відкриває шлях для створення морфоаналізаторів, це  наріжний камінь, на котрий все інше встановиться, цього всього в Україні ще нема. Є окрема група, яка займається створенням цього словника і цього корпусу, ми з ними зкомунікували і зробили свій перший внесок, ми на текстах з їх корпусу зробили альтернативну розмітку під назвою іменованої сутності. Тож у всіх текстах ми розмітили – оце згадка якоїсь людини чи персони, оце згадка організації, оце згадка якоїсь локації. Потім, коли ми опрацювали цей обсяг текстів, десь двісті тисяч слів, ми спромоглись використати той багаж інструментів, що вже існує і натренувати модель для української мови, яка тепер може робити це автоматично, в будь-яких текстах. Наприклад, тепер ви можете завантажити увесь архів «Української правди» чи УНІАН, «Кореспонденту», «Дефаксу» за усі 16 років і з кожного тексту побачити, хто в ньому був згаданий, яка персона, які організації. Потім, наприклад, побудувати Timeline, побачити, як часто згадувалася персона в цих текстах. Коли ти знаєш, що в цих текстах згадувалася персона, можна потім оцінити тональність, яке відношення було до цієї персони в цьому тексті. Можна подивитися, як симпатії чи антипатії цього видання чи суспільної думки змінюються по відношенню до цієї персони. Я окреслюю дуже конкретні кейси, там доволі багато можна зробити. Чи можна, наприклад, коли тобі потрібно досьє, так само по якійсь персоні проаналізувати усі документи, усі тексти, що були в новинах і побачити, коли вона була вперше згадана, з ким вона пов’язана, бо якщо в тексті згадується, наприклад, персона А, компанія Б та персона В, і це повторюється раз від разу, то можна побачити оці зв’язки, побудувати якусь модель реального світу.

Це був наш перший крок – побудувати цей корпус. Ми зробили це за допомогою тих інструментів, якими ми працюємо над цифровкою декларацій українських посадовців, ми зробили це за допомогою того, що зараз називається краудсорсинг. Потім ми опрацювали це ще окремо – Всеволод зробив редактуру, ми оприлюднили ці дані, це був офіційний старт проекту. Крім того, в нас є дуже багато ініціатив, котрі зараз у різному ступені готовності. Наприклад, ми наразі назбирали великі обсяги архівів українською мовою і почали перемовини, щоб ці дані опублікувати. Для англійської мови є така річ під назвою Gigaword, яка складається з архіву агенції новин, на кшталт Associated Press, Reuters, тощо. Там більше мільярду слів Будь-хто може взяти ці архіви, побудувати якісь статистичні моделі на них. У нас це не так легко зробити. По-перше, для того, щоб ці архіви забрати, потрібен інструментарій, він у нас є. По-друге, щоб ними користуватися, потрібен дозвіл від правовласників, над цим ми зараз і працюємо. Якщо в нас буде дозвіл від правовласників, ми ці дані віддамо. Через те, що в нас є деякі серверні потужності, ми можемо обробляти великі обсяги документів, будувати на них статистичні моделі. Наприклад, щоб це робити, там потрібен доволі потужний сервер, і він має працювати добу. Не кожна людина, не кожний розробник в Україні має доступ до таких потужностей. Можна буде просто завантажити їх собі і користуватися ними, якщо там ще потрібні якісь уточнення чи ще щось, можна буде дотренувати чи зробити вже свою якусь модель. Але буде доволі непоганий старт.

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

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

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