DOU Проектор: словник ВЕСУМ та інші пов'язані засоби NLP для української мови

У рубриці DOU Проектор всі охочі можуть презентувати свій продукт (як стартап, так і ламповий pet-проект). Якщо вам є про що розповісти — запрошуємо взяти участь. Якщо ні — можливо, серія надихне на створення власного made in Ukraine продукту. Питання і заявки на участь надсилайте на [email protected] .

Ідея

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

Добре, коли комерційна (закрита) система вміло працює з українською мовою, але є багато застосувань, де використати комерційний двигун неможливо. Тут на допомогу приходять відкриті програмні засоби опрацьовування природних мов (NLP). Для популярних мов таких засобів, включно з відкритим ПЗ, досить багато. Для української ж до недавнього часу засобів було бракує.

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

Команда

Андрій Рисін — програміст, засновник проекту ВЕСУМ;

Василь Старко — лінгвіст, кандидат філологічних наук, доцент Східноєвропейського національного університету ім. Лесі Українки, перекладач;

Дмитро Чаплинський — програміст, співзасновник ініціативи lang-uk;

Команда БрУК — у створенні словника також брали участь багато учасників проекту побудови Браунського корпусу української мови (див. r2u.org.ua/corpus ).

Реалізація

Словник

github.com/brown-uk/dict_uk

Основою більшості засобів NLP є словник тегів частин мови (англ. POS tag dictionary). Такий словник містить дані про відмінювання слів та має відповідні теги для кожної форми слова. Скажімо, слово різав матиме базову форму (лему) різатиі теги дієслова минулого часу, однини, чоловічого роду.

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

Великий електронний словник української мови (ВЕСУМ ) бере початок з проектом ispell-uk, який у 90-х роках витворили декілька ентузіастів для перевірки орфографії української мови у відкритій ОС Linux. Багато років цей словник мав єдину функцію — перевіряти орфографію текстів. Але декілька років тому в інший відкритий проект, програму перевірки граматики та стилю LanguageTool, було додано модуль української мови і стало зрозуміло, що для граматичного аналізу потрібно більше інформації: зокрема важливо знаті зв'язок між лемою і словоформами, а також мати інформацію про ті, що це за словоформа. Хоч двигун ispell мав базову підтримку відмінювання слів, повноцінна підтримка для української потребувала іншого підходу, тож було створен новий проект словника, де для кожної словоформи додано лему та теги.

До проекту долучилася команда створення відкритого корпусу української мови БрУК . Альо навіть для досвідчених лінгвістів багато питань, які поставали перед проектом, стали неабияким викликом. Робота зайняла значно більше часу, ніж очікували, з багатьох причин:

Під час створення ВЕСУМ розробникі використовували два основні джерела: «Граматичний словник української мови» з Лінгвістичного порталу та «Словники України» онлайн.

Наразі маємо унікальний проект, який:

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

Модуль NLP та перевірки граматики

Український модуль проекту LanguageTool.

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

Хоча ВЕСУМ є відкритим, загальним словником і має потенційно необмежену сферу застосування, він народився з потреб українського модуля LanguageTool, тому для аналізу текстів української мови він найкраще працює разом з аналізатором LanguageTool.

LanguageTool — відкритий програмний засіб для перевірки граматики та стилю, що підтримує понад 25 мов. Декілька років тому було додано модуль української мови, що його можна також використовувати для аналізу текстів.

Розвиток ВЕСУМ й українського аналізатора у LT вже декілька років йдуть разом в ітераційній послідовності, створюючи синергетичний ефект. Будь-які зміни в словнику тестуються засобами LT, щоб побачити, як вони впливають на аналіз. Своєю чергою, зміни в аналізаторі проходять регресійні тести на архіві українських текстів обсягом понад 100 млн слів, зібраних із друкованих медій, української літератури та інших джерел.

Допоміжні засоби

Проект допоміжних засобів використання LanguageTool для аналізу текстів.

У процесі роботи над основними проектами виникла потреба в засобах, що дозволяють опрацьовувати наявні тексти для покращення словника та модулів аналізу. Розроблені з цією метою утиліти дають змогу легко токенізувати, лематизувати, тегувати та перевіряти текст і показують можливості застосування українського модуля LanguageTool до аналізу текстів.

Утиліти написані мовою Groovy, але також наведено декілька скриптів-обгорток на Python.

Український аналізатор у двигуні повнотекстового пошуку Apache Lucene

Коли індексують текст й опрацьовують пошуковий запит, потрібно знайте всі форми слова. Для цього виокремлюють корінь (стем) або базову форму. В популярний відкритий двигун повнотекстового пошуку Apache Lucene нещодавно додано український аналізатор на базі ВЕСУМ. Після відфільтрування всіх шумових слів (stop words) за допомогою словника знаходять лему (базову форму слова). Версія ВЕСУМ-а для пошуку має свою специфіку: наприклад, через неунормованість написання літери ґ у багатьох власних назвах у словнику цю літеру замінено на р (тсж для пошуку ці літери — взаємозамінні), а власні назви зведено до нижнього регістру, бо запити на них часто вводять у цьому регістрі.

Український корпус (проект БрУК )

Цей проект має на меті створити Браунський український корпус (БрУК) — відкритий, збалансований за жанрами та в майбутньому проанотований корпус сучасної української мови обсягом 1 млн слововживань. Корпус спирається на засади, покладені в основу відомого корпусу англійської мови Brown Corpus.

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

Результати

Створені проекти можуть слугувати основою в багатьох напрямках лінгвістичного аналізу. Вже сьогодні їх використовують у низці проектів:

  1. Перевірка орфографії (зокрема словники для браузера Firefox та офісного пакету LibreOffice.org ).
  2. Повноцінна підтримка української мови в популярному відкритому двигуні повнотекстового пошуку Lucene. Цей модуль вже використовується в таких проектах, як declarations.com.ua . Невдовзі український модуль будуть використовувати для пошуку в українській Вікіпедії (раніше цю функцію виконував модифікований російський аналізатор з відповідною якістю пошуку).
  3. Лематизація: окрім повнотекстового пошуку лематизація також використовується для побудови деяких моделей NLP, наприклад, word вкладень. Зокрема ці засоби використано для побудови векторів слів (word vectors) для проекту lang-uk .
  4. Перевірка граматики та стилю: на базі цих засобів створен модуль перевірки граматики та стилю для української мови. Модуль вже містить понад 300 граматичних правил, складність аналізу яких варіюється від простого пошуку леми до надскладних умов узгодження відмінку/роду/числа частин речення.
  5. Інші застосування:
    • укладання тлумачних, термінологічних, перекладних та інших типів словників (зокрема пошук прикладів вживання);
    • різноманітні мовознавчі дослідження;
    • дослідження і розробки у комп'ютерній галузі комп'ютерної лінгвістики (зокрема побудова моделей мови, отримання статистичної інформації);
    • довідкові функції та редагування.

Плани

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

Якщо ви хочете долучитися до розвитку проектів, найпростіше це зробити на відповідних сторінках GitHub'у:

.

. Про ВЕСУМ та LanguageTool
Сторінка ВЕСУМ та українського модуля LanguageTool у Фейсбуці

Опубліковано: 13/06/17 @ 10:00
Розділ Різне

Рекомендуємо:

Зарплатний опитування
PHP дайджест #5: PHP Узагальнення, асинхронне програмування, новий Symfony 3.3
Портфоліо дизайнера як UХ-завдання
DOU Books: 5 книжок для розуміння людства та світу навколо, які радить Юрій Савка
Робіть return, як тільки знайшли відповідь