Граматика ланок
Граматика ланок (англ. Link Grammar, LG) — одна з моделей синтаксису, авторами якої є Деві Темперлі та Деніел Слітор. Подає будову речення не у вигляді ієрархічної структури, а як сукупність зв'язків між парами слів.
Граматика ланок подібна до граматики залежностей, але для останньої ключовим є відношення головне-залежне (head-dependent), тоді як у граматиці ланок це опціонально (бо для зв'язків не обов'язково вказують напрямок)[1].
Кольорова багатопланова граматика ланок (Colored Multiplanar Link Grammar, CMLG) є розширенням LG, яка використовує кольорові мітки, щоб відображати додаткову інформацію про зв'язки між словами.[2] Зв'язок між словами позначається за допомогою типів, що тісно пов'язує граматику ланок з певними категоріальними граматиками[en].
Наприклад, у мові зі структурою типу підмет (S) — присудок (V) — додаток (О) (див. типологія порядку слів), як-от англійська, дієслово зліва шукатиме зв'язку для створення ланки з підметом, а справа — для утворення ланки з додатком. Для іменників справа формуватиметься ланка з підметом, а зліва — з додатком.
У мові зі структурою підмет (S) — додаток (О) — присудок (V), як-от перська, дієслово звертатиметься вліво (ближче), щоб створити ланку з додатком, і знову ж таки вліво, але віддаленіше, щоб створити ланку з підметом. Іменники шукатимуть справа зв'язку як з підметом, так і з додатком.
Граматика ланок поєднує слова в реченні за допомогою зв'язків, подібних за формою до катени. Проте, на відміну від катени чи традиційної граматики залежностей, відношення головне-залежне тут є обов’язковим лише для мов із вільним порядком слів (таких як турецька,[3] фінська, угорська, литовська [4] тощо); для більшості ж мов це відношення є опціональним.
Тобто, наприклад, в англійській мові відношення підмет-присудок є «очевидним», оскільки підмет майже завжди знаходиться ліворуч від дієслова, тож нема ніякої необхідності додатково це позначати. У випадку підметово-присудкової інверсії використовується окремий тип зв’язку.
Для мов із вільним порядком слів все інакше: зв’язок між підметом і присудком має містити експліцитний напрям, який вказує на природу слів.
Граматика ланок також відрізняється від традиційних граматик залежностей тим, що допускає циклічні зв’язки між словами.
Так, наприклад, можуть існувати зв'язки, що вказують і на присудок, і на підмет, і на зв’язок між ними, формуючи циклічну ланку (в даному випадку це трикутник). Цикли корисні для обмеження того, що інакше могло б бути неоднозначним аналізом; вони допомагають обмежувати набір допустимих синтаксичних розборів речення.
Наприклад, у розборі (див. схему), ЛІВА-СТІНА вказує на початок речення або кореневий вузол. Напрямлений зв'язок WV (вгорі, зі стрілками) вказує на головне дієслово (присудок) речення; це ланка Wall-Verb. [5] Ланка Wd (тут без стрілок) вказує на головний іменник (підмет) речення. Тип ланки Wd вказує як на те, що вона з’єднується зі стіною (W, тобто wall), так і на те, що речення є декларативним (підтип «d» у нижньому регістрі).[6] Ланка Ss вказує на відношення підмет-присудок; мала буква "s" вказує на те, що підмет в однині.[7] Зауважте, що ланки WV, Wd і Ss формують цикл. Ланка Pa з’єднує дієслово з другорядним членом речення; мала буква "а" вказує на те, що в цьому випадку це станівник[8].
Синтаксичний розбір виконується за аналогією зі складанням пазла (що уособлює речення) із деталей (що уособлюють окремі слова)[9][10]. Мову подано у вигляді словника, який складається зі слів і набору дозволених «форм деталей пазла», які може мати кожне слово. Форма вказується «з’єднувачем», який відображає тип ланки, і покажчиком напрямку + (вправо) або - (вліво). Так, наприклад, перехідне дієслово може мати «з’єднувачі» S- і O+, які означають, що дієслово утворює зв’язок із підметом («S») ліворуч («-») або зв’язок із додатком («O») праворуч ( «+»). Подібно, іменники - загальні назви можуть мати «з’єднувачі» D- і S+, які вказують на зв'язок з детермінативом ліворуч («D-») і виступати як підмет у з'єднанні з дієсловом праворуч («S+»). Парсинг полягає в тому, щоб визначити, що з’єднувач S+ може приєднатися до з’єднувача S-, утворюючи зв’язок «S» між двома словами. Розбір завершується, коли всі «з’єднувачі» поєднано.
Синтаксичний аналізатор (парсер) граматики ланок — це бібліотека для обробки природної мови, написана мовою C. Він доступний за ліцензією LGPL. Парсер[11] є проєктом в розробці. Останні версії включають підтримку російської, перської та арабської мов, прототипи для німецької, івриту, литовської, в’єтнамської та турецької мов, а також API програмування для Python, Java, Common LISP, AutoIt і OCaml, із прив’язками сторонніх розробників для мов Perl,[12] Ruby[13] і JavaScript node.js[14].
AbiWord, [11] безкоштовний текстовий процесор, використовує LG для перевірки граматики в режимі реального часу.
- ↑ Link Grammar Bibliography
- ↑ Anssi Yli-Jyrä & Matti Nykänen (2004). «A Hierarchy of Mildly Context-Sensitive Dependency Grammars». In G. P. Gerhard Jäger, Paola Monachesi and S. Wintner (ed.). Proceedings of the 9th conference on Formal Grammar 2004 «FGNancy». Pre-Proceedings. pp. 151–165.
- ↑ Özlem İstek, "A Link Grammar for Turkish", Thesis, Bilkent University, Ankara, Turkey (2006)
- ↑ Lietuvių Kalbos Gramatika. Архів оригіналу за 18 лютого 2023. Процитовано 1 квітня 2023.
- ↑ WV Link type. Архів оригіналу за 28 листопада 2021. Процитовано 1 квітня 2023.
- ↑ W link type. Архів оригіналу за 28 листопада 2021. Процитовано 1 квітня 2023.
- ↑ S link type. Архів оригіналу за 28 листопада 2021. Процитовано 1 квітня 2023.
- ↑ P link type. Архів оригіналу за 28 листопада 2021. Процитовано 1 квітня 2023.
- ↑ Daniel D. K. Sleator, Davy Temperley, "Parsing English with a Link Grammar" Carnegie Mellon University Computer Science technical report CMU-CS-91-196 (1991) (ArXiv)
- ↑ An Introduction to the Link Grammar Parser. Архів оригіналу за 1 квітня 2023. Процитовано 1 квітня 2023.
- ↑ а б AbiWord — Link Grammar Parser. Архів оригіналу за 13 лютого 2014. Процитовано 1 квітня 2023.
- ↑ Lingua-LinkParser (Perl interfaces)
- ↑ Ruby Link Parser interfaces. Архів оригіналу за 4 березня 2016. Процитовано 1 лютого 2019.
- ↑ javaScript node.js library