Skip to content

OOmnik

Sections
Personal tools
You are here: Home » Теория » Объектно-ориентированная грамматика » Синтаксический объект

Синтаксический объект

Document Actions

Объектно-ориентированная теория синтаксиса

 

Базовые понятия. Синтаксический объект, ядро, спецификатор, агрегатор

В данных ниже определениях и моделях заранее определенными или интуитивно понятными считаются:

  1. общие научные термины: иерархия, структура, линейная последовательность;
  2. термины из области объектно-ориентированного анализа: объект, поле, агрегирование. Некоторые из них, например объект, представляют собой также общенаучные термины, но в объектно-ориентированной парадигме их значения предельно специфицируются за счет жесткой и четкой корреляции стоящих за этими терминами понятий и их программных реализаций;
  3. некоторые устоявшиеся лингвистические понятия: фонема, морфема, словоформа (морфокомплекс), текст и т. п. Иначе говоря, речь идет о языковых знаках различного уровня масштабности и структурной сложности.

Каждому такому уровню может соответствовать отдельный синтаксический эксперт, при этом выделение экспертов разных уровней как и выделение самих уровней языка и языкового анализа, от графематики и фонетики до дискурса (сверхтекстового синтаксиса), может быть осуществлено по-разному в зависимости от языка и целей анализа. Синтаксическая теория для всех уровней языка является общей, для работы с ними применяется один и тот же алгоритмический аппарат, различия состоят лишь в дополнительных эвристиках, таких как различные способы кэширования и языково-зависимые эксперты, в отдельных случаях способствующие ускорению процесса анализа. Поэтому, когда речь идет о языковых знаках, под ними можно понимать и фонемы, и буквы, и знаки пунктуации, и морфемы, и линейно ограниченные комбинации морфем (словоформы), и сочетания словоформ (синтагмы, предложения), и целые тексты, и даже целые корпусы.

Все без исключения языковые знаки обладают определенным набором признаков, благодаря которому они могут связываться и образовывать составные знаки. Начиная с уровня морфем в этот набор признаков входят не только признаки сугубо формальные (грамматические), но и те семантические классы, которые они обозначают. Границу между грамматикой и семантикой на первый взгляд провести непросто: например, грамматическое поле «род» грамматики объектов «имя» и «глагол» в русском языке на первый взгляд соответствовует относящемуся к семантике полю «пол», категория определенности в английском и арабском языках, опять же, до некоторой степени коррелирует с тем, идет ли речь о семантическом классе или о конкретном экземпляре этого класса, категория числа кажется связанной с реальным числом объектов. Однако род в русском языке есть и у неодушевленных имен, и говорить о «женственности» табуретки в противовес «мужскому началу» стула было бы некорректно; поле определенности в английском языке может иметь значение «1» в случаях, когда явным образом речь идет о классе, однако этот класс в тексте некоторым образом определен: «I like the taste of butter (Мне нравится вкус масла)», а в арабском языке в таких случаях определенность имени выражена от определенностью определения: «يحب طعم الزبد» означало бы «Мне нравится вкус этого масла», «يحب طعم زبد» означает «Мне нравится вкус масла вообще», однако на самом деле в обоих случаях речь идет скорее об определенности вкуса, чем об определенности масла. Категория числа также ни в одном языке не соответствует семантике до конца: например, русское «часы», очевидно, обозначает один объект. Грамматика накладывает более жесткие ограничения на способность знаков объединяться в знаки, чем семантика. Любому грамматически правильному языковому выражению может быть приписано семантическое содержание, даже если этому выражению не удается поставить в соответствие регулярный смысл; при этом некоторые такие выражения закрепляются в языке («кора головного мозга», «земная кора»), а некоторые не закрепляются, но, тем не менее, могут быть осмысленны («песня дождливого рода», «Истина смыслом течет по щеке»). Любому вырванному из контекста грамматически правильному выражению можно приписать какую-либо целостную семантическую интерпретацию – для этого приходится реконструировать этот контекст. При этом само высказывание не воспринимается как сколь бы ио ни было ошибочное или неправильное. Для высказывания, не имеющего грамматически правильных интерпретаций, это невозможно. Даже высказывание «Моя твоя не понимает» имеет грамматически правильные интерпретации с восстановлением опущенного контекста («Моя (голова) (того, что имеет в виду) твоя (голова), не понимает.») А вот высказывание «Красотами не в не из же ходящий от к срочно» не может быть воспринято как грамматически правильное, даже если кому-то удастся его осмыслить.

Знаки состоят из знаков и объединяются в знаки, структура знака иерархична. Выражая целостный сложный смысл линейной цепочкой означающих, которая сама по себе представляет собой означающее одного знака, человек проделывает путь по его иерархии от самых верхних ее компонентов до терминальных, атомарных единиц. Можно говорить о том, что иерархическая структура знака порождает линейную структуру его означающего и порождается его смыслом, а в процессе анализа мы вынуждены эту иерархию реконструировать, восстанавливая тот смысл, который за ней стоял. Исходя из этих предположений можно сформулировать следующий набор аксиом:

Аксиома 1. Смысл языкового знака связан сюръективным отношением с его иерархической структурой

Аксиома 2. Иерархическая структура языкового знака связана сюръективным отношением с его означающим

Аксиома 3. Иерархическая структура любого языкового знака взаимнооднозначно связана с отношением между смыслами ее компонентов и смыслом этого знака

В рамках данной трактовки языкового знака мы называем синтаксическим объектом такой объект, которым мы моделируем иерархическую структуру языкового знака, и который способен породить модель его плана выражения в виде линейной цепочки токенов и реконструировать его смысл в виде объекта (экземпляра или класса), уже зафиксированного в онтологии или базе знаний, или же полученного путем вычисления ранее неизвестных взаимосвязей между уже известными объектами (экземплярами или классами).

В силу третьей аксиомы всякий синтаксический объект как модель иерархической структуры языкового знака должен хранить информацию о том, каким образом ему следует вычислить смысл этого знака исходя из смыслов его компонентов. В самом общем виде эта информация заложена в том, в каком поле он агрегирует тот или иной компонент.

Всякое языковое выражение может быть уточнено другим языковым выражением. Уточняющее выражение может никоим образом не содержать в себе явно заданных отсылок к уточняемому и связываться с ним только за счет их линейной близости и структурной общности. При этом сама по себе структурная общность этих выражений обнаруживается интерпретатором текста только за счет его способности реконструировать иерархическую структуру знака в тех случаях, когда его план выражения содержит в себе не все компоненты его структуры. Приведем пример:

На конференции обсуждался рост цен. На нефть, на газ, на прочие виды сырья.

Чтобы осмыслить этот текст, необходимо реконструировать во втором предложении первое. Прежде всего, реконструируется компонент «цен». Затем, когда он связывается с компонентами второго предложения, оно встраивается в первое.

У данного явления есть одно важное свойство, которое далее будет рассмотрено более подробно: уточняющие компоненты восстанавливают уточняемые, но обратного не происходит. Рассмотрим следующий пример:

В приложении мы представили исходные коды программ. Блок-схемы, статистические данные, техническую документацию.

Из этого текста не может однозначно следовать, что «исходные» относится к чему-либо, кроме как к «коды программ». Восстанавливается же в этом случае только «В приложении мы представили». Ничто бы не запрещало понять это иначе: *«исходные коды программ, исходные блок-схемы, исходную техническую документацию». Однако такая интерпретация некорректна.

Если некоторый компонент иерархической структуры знака не восстанавливается из предшествующего контекста, однако, с точки зрения грамматики, мог бы быть восстановлен, то в этом предшествующем контексте он является уточняющим. Такие компоненты мы в дальнейшем будем называть спецификаторами.

Уточняемый компонент агрегируют в себе спецификатор в одноименном поле. В рассмотренном нами примере подкомпонент «исходные» – спецификатор компонента «исходные коды программ».

Данный компонент состоит из подкомпонентов «коды программ» и «исходные». Синтаксический объект, моделирующий весь компонент «исходные коды программ», агрегирует в себе синтаксические объекты, моделирующие эти подкомпоненты. По отношению к агрегируемым синтаксическим компонентам он является агрегатором. В силу аксиомы 3 агрегатор всегда должен хранить в себе информацию об операции, при помощи которой вычисляется его смысл. В данном случае смысл целого вычисляется путем встраивания смысла спецификатора «исходные» в смысл «коды программ». Для вычисления своего смысла агрегатор заставляет смысл агрегированного в нем объекта «коды программ» встроить в себя смысл спецификатора «исходные»; полученный результат становится смыслом агрегатора.

Пусть X, Y, Z–синтаксические объекты, Y агрегирует X, Y агрегирует Z в поле «спецификатор», Y.get_sense – имя метода, вычисляющего смысл объекта Y, X.sense – смысл объекта X, Z.sense – смысл объекта Z, Y.sense – смысл объекта Y

Тогда, если Y.sense есть значение метода Y.get_sense, запущенного X.sense с аргументом, соответствующим Z.sense (то есть Y.sense = X.__getattr__ (Y.get_sense) (Z.sense)), то X называется ядром объекта Y, то есть Y.head = X

Агрегатор также содержится в одноименном поле у ядра и спецификатора. Графически эту модель можно представить следующим образом:

Типы синтаксических объектов

Типы ядер. Терминальные и агрегирующие синтаксические объекты Терминальное ядро, ядерная цепочка, понятие эллипсиса

На каждом уровне языка существуют атомарные для этого уровня языковые знаки. Их иерархическая структура состоит из одного далее неделимого компонента, и моделирующие ее синтаксические объекты называются терминальными. Такие знаки не могут быть уточнены или уточнять сами по себе; на это способны только их агрегаторы. Терминальные синтаксические объекты – всегда ядра.

У любого агрегирующего синтаксического объекта существует единственное терминальное ядро. Под терминальным ядром синтаксического объекта мы понимаем его ядро, если оно представляет собой терминальный синтаксический объект, или же терминальное ядро его ядра.

Ядерной цепочкой синтаксического объекта именуется максимальная последовательность, первый элемент которой – его терминальное ядро, а остальные–те агрегаторы, терминальное ядро которых совпадает с терминальным ядром данного объекта, причем каждый следующий элемент последовательности есть агрегатор предыдущего.

Приведем пример наиболее простой структуры, иллюстрирующей суть понятий «ядерная цепочка», «терминальное ядро» и «терминальный синтаксический объект»:




SyObject2 является терминальным синтаксическим объектом, у него нет ни ядра, ни спецификатора, а есть только агрегатор. SyObject2 является терминальным ядром объекта SyObject1 в силу того, что представляет собой его непосредственное ядро, являясь одновременно терминальным синтаксическим объектом. Также SyObject2 – терминальное ядро SyObject, так как SyObject2 – терминальное ядро SyObject1, а SyObject1 – непосредственное ядро SyObject. Последовательность [SyObject2, SyObject1, SyObject] – ядерная цепочка для каждого из этих объектов.

Существуют такие синтаксические объекты, терминальное ядро которых в тексте не представлено. Например, в последнем примере восстанавливаемое «представили» никак не выражено во втором предложении. Это явление мы называем эллипсисом, сам терминальный синтаксический объект именуется эллиптированным, а все элементы его ядерной цепочки – незаполненными. Заполненными они могут быть либо путем связывания с предыдущим контекстом, либо путем извлечения стандартной семантической информации об эллипсисе в данном контексте.

Типы спецификаторов. Модификатор, аргумент

В процессе анализа смысл терминального ядра может передаваться по ядерной цепочке по-разному, в зависимости от требуемых агрегаторами методов вычисления смысла и от типа каждого спецификатора.

Помимо того, что семантические объекты подразделяются на экземпляры и классы, они также подразделяются на объекты запускаемые (callable) и незапускаемые. И запускаемые, и незапускаемые объекты способны агрегировать в себе экземпляры агрегируемых ими классов. Запускаемые объекты могут быть названы методами, если их агрегируют другие объекты. Запускаемые объекты возвращают значения от аргументов.

Синтаксический объект S называется модификатором синтаксического объекта A, если смысл S представляет собой экземпляр класса, агрегируемого смыслом синтаксического объекта H, являющегося ядром A. Смысл синтаксического объекта A есть копия смысла синтаксического объекта H, агрегирующая смысл S. Если смысл S – незапускаемый объект, то A может быть ядром такого узла A´, что спецификатор A´–модификатор того же класса, что и S, как это показано на следующей иллюстрации:




Если же смысл S – запускаемый объект, то этого может не быть, так как в этом случае A является ядром синтаксического объекта, смысл которого – то, что возвращает S как метод, запускаемый H при вычислении смысла A. Если метод возвращает объект, обладающий этим методом, то он снова может быть запущен. Это явление может наблюдаться при запуске операторов, то есть таких методов, которые возвращают значения того же класса, что и запускающий их объект. За счет этого эффекта возникают так называемые ряды однородных синтаксических объектов (X1 и X2 и ... и Xn = X1.sense.and (X2.sense). ... .and (Xn.sense); X1 или X2 или ... или Xn = X1.sense.or (X2.sense). ... .or (Xn.sense)), а также возможность бесконечного отрицания (не не не не X = X.not ().not ().not ().not () = X).

Синтаксический объект S называется аргументом синтаксического объекта A, если смысл S – аргумент метода, который передается синтаксическому объекту A его ядром H. A не может быть ядром такого узла A´, что спецификатор A´–аргумент того же класса, что и S, если только метод не возвращает в качестве значения сам себя или другой метод, работающий с аргументами того же класса, что и S. В русском, английском, арабском и китайском языках таких методов не существует.

Типы агрегаторов. Группа, метод, запуск метода, запрос, поле

Синтаксический объект, спецификатором которого является модификатор, называется группой, если он может быть элементом ядерной цепочки иного синтаксического объекта того же класса, что и он сам. Все без исключения семантические объекты агрегируют общелогические методы-операторы, такие как отрицание, конъюнкция и дизъюнкция. Однако не все синтаксические объекты способны их запускать, так как не все синтаксические объекты представляют собой группы. Любая группа способна к запуску операторов, любой неспособный к запуску операторов синтаксический объект – не группа.

Синтаксический объект, спецификатором которого является аргумент, называется методом, если смысл его ядра представляет собой метод с незаполненным аргументом. Аргумент может также быть спецификатором запроса, о котором речь пойдет ниже.

Синтаксический объект, спецификатором которого является модификатор, называется запуском метода, если элементом ядерной цепочки его модификатора является метод, возвращаемое значение которого есть смысл его агрегатора. Запуск метода может быть группой в том и только том случае, если его метод – оператор.

Синтаксический объект, спецификатором которого является аргумент, называется запросом, если смысл его аргумента представляет собой поле объекта, являющегося смыслом его ядра, а агрегатор – значением этого поля. Метод, запускаемый запросом, является встроенным методом семантического объекта, именуемым в семантической онтологии методом «getattr». Смысл ядра H передается запросу A как функция от аргумента «поле», возвращающая значение метода «getattr» от этого аргумента, запускаемого смыслом ядра H (A.sense = lambda field: H.sense.__getattr__ (field))

Синтаксический объект, агрегатор которого представляет собой аргумент запроса, именуется полем. Например, у каждого экземпляра класса «ФАКТ», являющегося смыслом синтаксического объекта класса «КЛАУЗА», существуют такие поля, как «где» (МЕСТО), «когда» (ВРЕМЯ), «почему» (ПРИЧИНА), «зачем» (ЦЕЛЬ), «что» (ИНФОРМАЦИЯ) и т. д.



Синтаксические объекты и линейные структуры. Линеаризация Понятие проективности и алгоритмы ее вычисления

Каждый синтаксический объект должен быть способен породить линейную цепочку токенов, представляющую собой означающее того знака, иерархическую структуру которого он моделирует. Эта процедура именуется линеаризацией.

На уровне цепочки токенов синтаксические объекты представлены только терминальными ядрами. Каждое терминальное ядро может агрегировать свой абсолютный номер в этой цепочке (в поле «abs_num»).

Взаиморасположение двух терминальных ядер tH1 и tH2 может быть исчислено по следующим двум критериям:

  1. Какое из двух терминальных ядер идет сначала

  2. Сколько терминальных ядер находится между tH1 и tH2

Назовем терминальной последовательностью синтаксического объекта последовательность, включающую в себя его терминальное ядро как первый элемент и все элементы терминальной последовательности его спецификатора.

Назовем отношением транзитивного агрегирования связь между синтаксическими объектами S1 и S2, такую что либо S1 агрегирует S2 в позиции ядра или спецификатора, либо существует такой синтаксический объект S3, что S1 транзитивно агрегирует S3, а S3 транзитивно агрегирует S2

Каждый агрегирующий синтаксический объект способен вычислисть минимальный и максимальный линейные номера элементов его терминальной последовательности (min_num и max_num).

В процессе линеаризации агрегирующего синтаксического объекта приходится пользоваться понятиями проективности и нарушения проективности.

Под проективностью мы понимаем свойство синтаксического объекта, состоящее в контактности его компонентов:

Пусть A – синтаксический объект, H – ядро A, S – спецификатор A.

Тогда A является проективным, если модуль H.max_num ()–S.min_num () равен 1 и знак H.max_num ()–S.min_num () совпадает со знаком H.term_head ().abs_num – S.term_head ().abs_num

Под нарушением проективности мы понимаем невыполнение данного свойства у синтаксического объекта. Нарушение проективности означает, что между элементами его терминальной цепочки в потоке токенов возникают элементы, в эту цепочку не входящие. Поскольку терминальная цепочка содержит в себе терминальное ядро данного синтаксического объекта, элементом, не входящим в нее, не может быть терминальное ядро ни одного из элементов его ядерной цепочки. Поскольку в терминальную цепочку данного синтаксического объекта также входят все компоненты терминальной цепочки его спецификатора, элементом, не входящим в терминальную цепочку данного синтаксического объекта также не может быть ни одно из терминальных ядер, транзитивно агрегируемых данным синтаксическим объектом. Значит, в случае нарушения проективности узла S1 существует такой элемент S2 ядерной цепочки S1, который транзитивно агрегирует S1, и между элементами терминальной цепочки S1 располагается терминальное ядро либо спецификатора, либо агрегатора S2. Назовем S1 объектом нарушения проективности.

Если бы для всех синтаксических объектов нарушение проективности было невозможным, то для линеаризации каждого синтаксического объекта A достаточно было бы знать, находится ли терминальное ядро его спецификатора S справа или слева относительно терминального ядра A. Однако возможность нарушения проективности показывает, что необходима также информация о том, почему в тех или иных случаях она возникает.

Для этого необходимо ввести такую систему измерения порядков, которая позволила бы однозначно вычислить взаиморасположение компонентов терминальной цепочки данного синтаксического объекта из информации о порядке каждого транзитивно агрегируемого им объекта.

Таких систем измерения может быть несколько, в зависимости от того, как устроена функция линеаризации. Здесь мы приводим лишь один вариант такой системы измерения, который тестировался на русском и арабском материале. Эта система измерения базируется на абсолютных порядках терминальных ядер.

  1. Порядок каждого ядра H относительно своего агрегатора A мы считаем равным нулю, в силу совпадения терминальных ядер H и A.

  2. Если синтаксический объект является незаполненным, считаем порядок его спецификатора неизвестным.

  3. Порядок проективно расположенного спецификатора мы считаем равным по модулю единице (то есть предполагаем единицей измерения порядка проективный порядок).

  4. Считаем отрицательным порядок спецификатора S синтаксического объекта A, если S.min_num () = A.min_num ().

  5. Считаем положительным порядок спецификатора S синтаксического объекта A, если S.max_num () = A.max_num ().

  6. В случае нарушения проективности синтаксическим объектом A считаем порядок спецификатора S объекта A по модулю равным 2n–1, где n – максимальное количество заполненных синтаксических объектов с заполненными спецификаторами, транзитивно агрегируемых объектом нарушения проективности, транзитивно агрегирующих S.

На русском и арабском материале до сих пор удалось обнаружить порядки с модулями, не превышающими 7 (двойное нарушение проективности). Более высокие порядки не запрещены теорией, однако до сих пор не встречались на практике.

Алгоритм линеаризации с такой системой измерения должен выдавать перечень пар «число + терминальный синтаксический объект» (словарь проективности), таких, что при упорядочении этого перечня по числу терсинальные синтаксические объекты выстраиваются в корректную линейную последовательность. Для этого алгоритм проделывает следующие простые операции:

  1. Вычисляется словарь проективности ядрами

  2. Вычисляется словарь проективности спецификатора

  3. Пары из словаря проективности ядра добавляются в итоговый словарь проективности с числами, деленными на два, если словарь проективности спецификатора непуст, или, в противном случае, в исходном виде

  4. Пары из словаря проективности спецификатора добавляются в итоговый словарь проективности как суммы порядка спецификатора и исходных чисел, деленных на два, если словарь проективности ядра непуст, или, в противном случае, в исходном виде

Путем несложных математических выкладок можно убедиться в том, что алгоритм линеаризации работает вместе с системой измерения порядков корректно. Более подробно эти алгоритмы расписаны в исходных кодах программ, представленных в приложении.

В исходных кодах они выглядят сложнее, так как рассчитаны и на то, чтобы работать как тесты на корректность той или иной версии синтаксического анализа. Некоторые порядки могут запрещаться самим устройством системы синтаксических объектов конкретного уровня языка.

В зависимости от языка и уровня языка синтаксические объекты могут линеаризоваться в соответствии со строгими и опциональными порядками. Под строгими порядками мы понимаем такие порядки, которые агрегируются тем или иным классом синтаксических объектов как единственно возможные для его экземпляров. Под опциональными порядками мы понимаем такие порядки, которые агрегируются тем или иным классом синтаксических объектов как выражающие различные методы вычисления смысла его экземпляров. Существуют уровни языка (от фонетики и графематики до некоторых компонентов синтаксиса предложения), на которых реализуются только строгие порядки. Некоторые языковые знаки даже классифицируются в зависимости от их линейного расположения (например, префиксы, суффиксы, предлоги и т. п.) На более высоких уровнях языка линейные порядки допускают большую вариативность, выражая такие дополнительные значения, как вопросительность, эмфаза, тот или иной стиль (некоторые порядки архаичны, некоторые – прочторечны), и т. д. Как правило, к разряду строгих порядков не относятся непроективные, но есть одно исключение: порядок арабского дополнения в немасдарных конструкциях – строго +3.

Синтактика. Грамматическая составляющая синтактики. Делегирование граммем

Синтактикой языкового знака мы называем совокупность тех его свойств, которые позволяют или запрещают ему вступать в те или иные структурные отношения с другими языковыми знаками. Как говорилось выше, помимо очевидных семантических свойств, в синтактику входят также свойства сугубо грамматические.

Грамматическая составляющая синтактики включает в себя два блока свойств:

  1. Свойства самого знака

  2. Требования данного знака к свойствам других знаков, способных образовывать вместе с данным знаком единые знаки

Грамматическая составляющая синтактики моделируется синтаксическим объектом в поле «form», также содержащем в себе информацию о семантических свойствах моделируемого объекта. Первому блоку свойств соответствует поле 'result', второму – 'source'. Поля объектов, содержащихся в этих полях, именуются граммемами.

Так же, как смысл передается по ядерной цепочки и от агрегатора к модификатору при порождении и в обратном порядке при интерпретации, граммемы передаются как от агрегатора к ядру и к модификатору, так и в обратную сторону. Аргументу граммемы передаются, но не из поля «result», а из поля «source».

Многие агрегаторы предъявляют требования к своим ядрам. Например, подлежащее требует от своего ядра именительного падежа, сказуемое – личной формы; слог требует от своего ядра «согласности», транзакция «деминутив» (дом --> домик) – именной основы.

В свою очередь, и ядра, и модификаторы могут накладывать ограничения на передачу граммем, а методы могут делегировать часть своих граммем из поля «result» своим аргументам.

Рассмотрим арабский синтаксический объект «StatusConstructus», встречающийся и в аргументном синтаксисе морфем, и в свободном синтаксисе. Этот объект включает в себя в качестве ядра ничем не распространяемое имя и именную группу в родительном падеже и отчасти совпадает по смыслу с русской генетивной конструкцией.

В арабском языке, в отличие от русского, всякое имя наделено граммемой состояния (определенности), причем состояние может быть не только определенным и неопределенным, но и сопряженным. Сопряженное состояние существует у имен специально для этого синтаксического объекта. Его ядро требует от своего ядра сопряженного состояния. Сам же «StatusConstructus» делегирует свою граммему состояния своему аргументу (StatusAttribute), и, если мы добавим новое определение к «StatusConstructus», то оно будет формально согласовано по всем граммемам с его ядром, а по граммеме определенности–с аргументом. StatusAttribute предъявляет к своему ядру требование быть в родительном падеже. Ядро StatusAttribute передавает ему свой падеж, но StatusAttribute не передает его далее, так как является аргументом.

Если бы ядро StatusConstructus передавало сопряженное состояние своему агрегатору, возник бы конфликт граммем: сопряженное состояние конфликтовало бы с определенным или неопределенным состоянием самого «StatusConstructus». Поэтому его ядро должно накладывать ограничения на передачу граммемы определенности агрегатору.

StatusConstructus – один из редких примеров, когда один и тот же синтаксический объект требует наличия некоторой граммемы и блокирует ее передачу наверх.

Такой механизм передачи граммем обладает важным свойством: для синтаксического анализа оказывается ненужным сравнение синтактик терминальных синтаксических объектов из текста. Напротив, сравниваются каждый раз агрегирующие объекты и готовые для них позиции с уже вычисленным набором делегируемых, требуемых и просто передаваемых грамматических свойств. Как будет показано ниже, это свойство весьма полезно.

Алгоритм предиктивной реконструкции. Факторы, ограничивающие этот алгоритм: возможность эллипсиса, строгость порядка, циклы в ядерной цепочке

Одним из основных достижений объектно-ориентированной грамматики можно считать алгоритм предиктивной реконструкции (метод «predict»).

Предполагается, что для каждого уровня языка существует модуль грамматики этого уровня, в котором расписаны классы синтаксических объектов этого уровня. Каждый из этих классов наследует тот или иной класс из описанных выше (терминальный синтаксический объект, группа, модификатор, метод, аргумент, поле, запрос, запуск метода). Для каждого класса расписывается перечень возможных агрегаторов (для ядер – поле «is_head_of», для модификаторов–«modificates», для аргументов–«is_argument_of»), возможных ядер («head_classes»), возможных модификаторов (для групп и запусков метода) или аргументов («modifier_classes»/ «head_classes»), перечень требований к ядру («needs_gram»), перечень ограничений на передачу граммем («omit_grammemes»), перечень делегируемых граммем («delegates_grammemes»), возможность эллипсиса ядра, а также порядок спецификатора («specifier_order»).

Когда синтаксический эксперт получает на вход токен, этот токен преобразуется в терминальный синтаксический объект данного уровня данного языка. Затем запускается сам алгоритм предиктивной реконструкции. Используя информацию о возможных агрегаторах, терминальный объект осуществляет попытку встроиться в экземпляр каждого из них. Те варианты, в которых не происходит ошибок линеаризации, эллипсиса или грамматики, запускают тот же алгоритм до тех пор, пока либо не достигается ничем не агрегируемая единица, либо не вступает в силу какое-либо ограничение, связанное с возможными циклами в структуре. Таким образом, получив на вход одну терминальную единицу, эксперт, скорее всего, получает весь перечень вариантов анализа этой единицы как единицы более высокого уровня. Этот алгоритм необходим для разбора эллиптических конструкций и работает устойчиво на разных уровнях разных языков.

Ограничения на работу этого алгоритма связаны с тремя факторами: возможность эллипсиса, строгость порядка и циклы в ядерной цепочке.

Если спецификатором реконструируется синтаксический объект со строгим проективным порядком и ядро этого объекта не может быть эллиптировано, то эта версия может быть корректной тогда и только тогда, когда ядро либо уже реально встретилось непосредственно «слева», либо встретится непосредственно «справа». В этом случае дальнейший ход реконструкции является излишним.

Возможны также случаи, когда дальнейший ход реконструкции попросту некорректен. Представим себе, что эксперт работает с английским морфемным синтаксисом, и ему на вход поступило «use». В английском языке есть слово «useless». Есть также «uselessness». Теория не запрещет порождать такие образования, как *«uselessnessless», *«uselessnesslessness» и т.д. Алгоритм предиктивной реконструкции потерял бы свой смысл, если бы предсказывал возможность всех этих образований. Если токенизатор подаст на вход эксперту морфему «less», она в любом случае свяжется с «use». Версии реконструкции не должны содержать повторяющихся компонентов в ядерной цепочке.

Алгоритм синтаксического связывания. Проблемы встраивания

При работе с реконструированными синтаксическими объектами эксперту достаточно связывать каждый новый токен с версиями разбора «левого» контекста. Если бы структуры не реконструировались, это было бы возможно только с проективными порядками и только в аргументном синтаксисе.

Для работы алгоритма связывания необходимы метод выявления изоморфизма синтаксических объектов (под изоморфизмом понимается способность к взаимозаполнению) и метод взаимозаполнения.

Метод выявления изоморфизма синтаксических объектов сравнивает их по следующим критериям:

  1. Классы объектов должны либо совпадать, либо один из них должен быть эллиптированным терминальным ядром

  2. Граммемы объектов не должны конфликтовать

  3. Агрегированные объекты, если таковые имеются, должны быть изоморфны

Метод взаимозаполнения работает достаточно сложным образом у объектов, спецификаторы которых – модификаторы. Сложность объясняется способностью этих объектов к самовставлению. В общих чертах, суть алгоритма сводится к попытке превратить два объекта в один, заполнив недостающие компоненты в одном объекте элементами другого.

Сам по себе алгоритм связывания (метод «bind») устроен достаточно просто: если связываемые объекты изоморфны, в перечень версий добавляется результат метода взаимозаполнения, затем в перечень версий добавляется результат алгоритма связывания агрегируемых данным объектом объектов с другим объектом, после чего в перечень версий добавляется результат алгоритма связывания агрегируемых другим объектом объектов с данным объектом.

Синтаксический разбор китайского текста

На приведенном ниже рисунке синтаксические объекты приводятся в несколько упрощенном виде, с опущением ряда деталей синтаксической структуры. Это делается не только в целях экономии места, но и для лучшей наглядности.

Рисунок 29 – Упрощенный синтаксический разбор китайского предложения

 

Синтаксический разбор арабского текста


Рисунок 30 – Арабское предложение на входе синтаксического анализатора

 


Рисунок 31 – Вывод результатов в виде пропозиций

 


Рисунок 32 – Вывод результатов в виде дерева

 

Created by oomnik
Last modified 2007-04-16 13:32
« May 2012 »
Mo Tu We Th Fr Sa Su
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
 
 

Powered by Plone

This site conforms to the following standards: