1. Опис
  2. Принцип роботи
  3. Загальний опис будови
  4. Напрямок роботи
  5. Джерела
  6. Нагальні проблеми

 

Опис

LanguageTool — це відкритий програмний засіб для коректури (граматичної і стильової перевірки) текстів. LanguageTool має ширшу базу знань ніж звичайні засоби перевірки орфографії і оперує складними правилами залежностей між словами в реченні.

LanguageTool доступний як

  • додаток до офісних пакунків LibreOffice.org, Apache OpenOffice
  • додаток для браузерів Firefox та Chrome
  • додаток для Google Docs
  • як окрема програма (з графічним інтерфейсом або для командного рядка)
  • як веб-сторінка
  • як веб-служба (REST API).

Спробувати останню збірку LanguageTool можна на сторінці граматичної перевірки текстів (яка працює через веб-службу).

 

Як ви можете допомогти

 

Принцип роботи

Ось як LanguageTool аналізує текст на помилки:

  1. Текст розбивається на речення
  2. Кожне речення розбивається на лексеми (tokens)
  3. Кожному слову надаються його теги частин мови (напр. машини = іменник, множина, наз. відм. тощо)
  4. Проаналізований текст проганяється на відповідність вбудованим правилам і правилам з файлу grammar.xml

Важливо пам'ятати, що правила в LanguageTool описують, як виглядає помилка, а не як виглядає правильний текст (тобто протилежно тому, як люди вчать мову).

 

Загальний опис будови

Підтримка мов у LanguageTool базується на таких основних речах:

1. Словник тегів — словник, що описує слова в мові, їх похідні, частини мови, рід, число, відмінок, час тощо. Український словник тегів базується на проекті dict_uk налічує близько 260 тис. лекскем і містить досить докладну інформацію про словоформи. Опис наявних тегів можна подивитися ось тут

2. Словник правил — файл у форматі XML, що описує неправильні комбінації лексем в реченні. Подивитися один з українських файлів правил grammar-barbarism.xml можна ось тут, або можна переглянути ці правила у спрощеному вигляді. Якщо коротко, то правило містить набір лексем з їх атрибутами, які не повинні зустрічатися в реченні. Правило також має надавати повідомлення і можливі виправлення. В елементі правила мусить бути також принаймні по одному прикладу коректного і некоректного речення. Елемент правила також дозволяє записати адресу URL на докладнішу інформацію про помилку.

Файл grammar.xml розбитий на категорії: пунктуація, узгодження (відмінків/родів тощо), правила милозвучності, кальки з інших мов тощо.

Існує також невеликий набір правил, закодованих мовою програмування (Java). Одне з таких правил для української — це знаходження слів, набраних мішаниною розкладок (напр. коли в слові «сміття» літеру «і» набрано латиницею).

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

4. Часто одна й та сама словоформа може бути різними частинами мови/відмінками тощо. І в деяких випадках залежно від контексту можна відкинути непридатні теги. Цим займається модуль «деомонімізації» (disambiguator). Українська має поки лише одне правило: позначати слова з великої літери в середині речення як (власні) іменники.

5. Модуль української мови також має правило простої заміни, файл replace.txt містить часто вживані помилкові слова (напр. активні дієприкметники) з пропозиціями заміни. Такі правила можна було б записати й в grammar.xml, але в replace.txt це виходить набагато компактніше. Формат записів досить простий: неправильне_слово=заміна1|заміна2…

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

 

Короткий вступ до удосконалення правил є на сторінці LanguageTool

 

Напрямок роботи

Основний розвиток підтримки української мови полягає в нарощуванні бази правил (файл grammar.xml).

1. Найпростішою для реалізації є категорія сталих сполук:

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

    , що їх

    ​ 

    може приймати це дієслово)

  • далі йдуть випадки, де порядок слів необов'язковий (напр. між іменником та дієсловом може бути ще слово)

2. В багатьох випадках також досить просто записуються правила пунктуації (напр. «будь ласка» мусить виділятися комами), але часто, щоб правила були компактними, треба оперувати регулярними виразами

3. Дещо складнішими є правила узгодження, напр. коли перевіряється, щоб прикметник і іменник мали однаковий відмінок або іменник/прикметник після прийменника має мати узгоджений з ним відмінок. Такі правила сильно спираються на словник тегів, а також мають багато нюансів.

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

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

 

Джерела

Для нарощування бази правил можна спиратися на відомі й відкриті джерела:

* Пономарів. Культура слова

* Борис Антоненко-Давидович. Як ми говоримо

* Олена Курило.  Уваги до сучасної української літературної мови

* Олекса Синявський. Норми української літературної мови

* Пунктуацію і деякі інші речі можна знайти в українському правописі

* Редакторські зауваги до текстів книжок з форуму r2u.org.ua

* Можна також залучити якісь статті/стандарти щодо пунктуації, скорочень тощо

* http://mova.kreschatic.kiev.ua/index.html

 

Нагальні проблеми

  • Перевірка орфографії не знає багатьох наукових термінів (потрібно розширювати словник)
  • Перевірка орфографії скаржиться про деякі скорочення
  • Перевірка орфографії не пропонує правильних виправлень на помилкових словах з дефісами (потрібно удосконалювати модуль орфографії)
  • Багато пропонованих виправлень подаються в початковій формі, бажано подавати їх у відмінках/числах/часах, що відповідають їх місцю в реченні

 

Технічні подробиці