Grammatical Framework (граматичний фреймворк, скорочено GF або ГФ) — мова програмування для розробки граматик природних мов. За допомогою ГФ можливий розбір і генерація текстів кількома мовами одночасно, при цьому представлення значення залишається незалежним від мови. Розроблені у ГФ граматики можуть бути скомпільовані у різні цільові формати, включно з JavaScript і Java, і використані як компоненти програмного забезпечення. Доповненням ГФ є бібліотека граматик (GF Resource Grammar Library), яка допомагає у роботі з морфологією і синтаксисом великої кількості природних мов.
Бібліотечні модулі, що можуть використовуватися у інших граматиках
Інструментальні засоби для екстракції інформації та конвертації інших лінгвістичних ресурсів у формат ГФ[1]
Опис
Нижче наведено приклади створення простих граматик, за допомогою яких можна отримати багатомовну генерацію фрази про те, що одна людина любить іншу людину.
Абстрактні і конкретні модулі
Граматики у ГФ можуть бути представлені двома типами модулів:
абстрактний модуль, що містить форми суджень cat і fun:
cat, або декларація категорії, служить для побудови категорій, тобто всіх можливих типів дерев,
fun, або декларація функції, встановлює функції і їхні типи (імплементація міститься у конкретних модулях, див. нижче)
один чи більше конкретних модулів, що містять форми суджень lincat і lin.
lincat, або означення типу лінеаризації, показує які типи об'єктів продукуються в результаті лінеаризації кожної категорії, зазначеної у cat.
lin, або правило лінеаризації, імплементує функції, декларовані у fun. Правила показують, як лінеаризуються дерева.
Наприклад, ми можемо визначити абстрактний синтаксис для конструювання речення типу «Іван любить Марію», а також конкретний синтаксис для виводу готового речення англійською мовою:
Примітка: у цьому прикладі вказується, що Str (список токенів, або «рядок») є єдиним типом лінеаризації.
Багатомовна граматика
Єдиний абстрактний синтаксис може бути застосовано до багатьох конкретних синтаксисів (у нашому випадку — до синтаксису окремих природних мов). Конкретний синтаксис описує, зокрема, наступне:
Після того, як визначено модулі конкретного синтаксису, ГФ стає інструментом для точного перекладу між мовами. Означивши правило французької мови (див. вище), у оболонці ГФ (англ.GF shell) можна виконати наступні команди:
Імпорт граматик з однаковим абстрактним синтаксисом
Ми використаємо тип параметра (англ.parameter type) для зберігання інформації про відмінок (для двох з семи відмінків української мови). Типом лінеаризації NP буде табличний тип (англ.table type): відображення з Case в Str. Лінеаризацією категорії John буде таблиця відмінювання. Коли категорія NP буде використовуватись, ми обиратимемо (оператор !) потрібну форму з таблиці відмінювання.
В Нідерландській мові, дієслово heeft lief - складається з розривних сладових (англ.discontinuous constituent). В реченні це виглядатиме наступним чином: "Jan heeft Marie lief".
Тип лінеаризації категорії V2 - запис (англ.record type) з двома полями. Лінеаризація Love - це об'єкт типу запис (англ.record). Доступ до полів запису можна отримати за допомогою оператора проєкції (англ.projection): ".".
Бібліотека граматик ГФ допомагає впорядковувати і організовувати тисячі різноманітних деталей синтаксису, лексики, морфології природних мов. Підтримуються наступні мови (20): амхарська (частково), арабська (частково), болгарська, каталонська, данська, нідерландська, англійська, фінська, французька, німецька, гінді (фрагментарно), інтерлінґва, італійська, латинська (фрагментарно), непальська, норвезька (bokmål), перська, польська, пенджабська, румунська, російська, іспанська, шведська, тайська (фрагментарно), турецька (фрагментарно), урду.
Повна документація на програмний інтерфейс (API) бібліотеки доступна на сайті фреймворку.[2] Там же можна отримати інформацію про доступні на даний момент мови і рівень підтримки.[3]
Історія і застосування
Перша версія ГФ була створена у 1998 році у Європейському центрі досліджень Xerox[4] (Ґренобль), як частина проекту «Multilingual Document Authoring». Зокрема, ГФ використовувалася для таких прототипів як книга ресторанних фраз, система запиту бази даних, формалізація інструкцій на випадок тривоги з автоматичним перекладом п'ятьма мовами, система виписування рецептів на ліки.
Багаторічний проект Європейського союзу MOLTO (мета: багатомовний онлайн-переклад) також базувався на ГФ як основній системі.[5]