Кванторы

Кванторы

Внутреннее представление

Квантор 'любой из'

Квантор ‘?’

Квантор ‘...’

Квантор ‘><’

Кванторы

Квантор (лат. quantum - сколько) это определение количества понятий из какой либо области. В естественном языке роль кванторов выполняют слова "все", "любой", "каждый", и так далее. Грамматический движок работает с четырымя кванторами, которые мы обозвали: квантор all, квантор some, квантор unknown и квантор none. В ряде случаев роль кванторов заключается в обозначении группы из нескольких объектов Системы, над которыми следует провести операцию, так что они по совместительству являются метасимволами. Важно отметить, что все кванторы имеют отношение только к синтаксису деклараций языка ПРИИСК, и никоим образом не соотносятся с грамматикой естественного объектного языка.

Внутреннее представление

Все операции, где фигурируют кванторы, сводятся к сравнению целых чисел (тип int), в основном - индексов элемента в списке либо тэга токена. В силу такого специфического использования кванторов они представлены целочисленными константами UNKNOWN, ANY_STATE, UNKNOWN_STATE, - определения находятся в файле quantors.h. Поэтому накладные расходы в связи с использованием кванторов полностью отсутствуют.

Разумеется такой подход гораздо менее универсален, чем, допустим реализованная в языке SQL работа со значением NULL.

Квантор 'любой из'

Широко используемый в формальной логике квантор всеобщности обозначается в языке ПРИИСК символом ‘*’. Рассмотрим пример использования этого квантора в движке.

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

имя_класса:имя_статьи

Например:

союз:и

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

имя_класса:*

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

*:*

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

Фактически в движке одним символом ‘*‘ обозначены три немного разных понятия. Первая трактовка уже была рассмотрена: "любой из всех возможных". Во-вторых, знак ‘*‘ рассматривается как "безразличное состояние". Например, при формировании графов (деревьев) необходимо как-то помечать связки между узлами. В языке ПРИИСК используется формат:

узелA.<имя_связки>узелB

К примеру:

предикатив:*.<инструмент>существительное:*

В данном случаем именем связки является инструмент. Однако иногда именовать связки между узлами нет нужды (к примеру, когда к узлу подключен только один узел), тогда можно пропустить определение связки, чему соответствует формат:

узелA.узелB

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

узелA.<*>узелB

Итак, в этом случае символ ‘*‘ означает "безразлично, какой из", то есть почти "никакой из" (см. квантор unknown). В случае сравнения двух графов, когда требуется проверить соответствие и связок, и узлов, связка ‘*’ дает истину при сравнении с любой связкой.

Третья интерпретация символа ‘*‘ встречается только в одном месте словаря, а именно при описании словарной статьи. Например, фрагмент:

enum род { муж жен ср }

entry кенгуру :существительное
{

:
род:*{кенгуру }
}

фактически рассматривается как:

enum род { муж жен ср}

entry кенгуру :существительное
{

:
род: муж { кенгуру }
род: жен { кенгуру }
род: ср { кенгуру}
}

То есть, третья роль символа ‘*‘ - обозначать понятия "для каждого из возможных" в отношении состояний одной координаты, то есть действовать как ‘немой индекс’, по которому проводится автоматическое перечисление всех возможных вариантов.

Конкретная интерпретация символа ‘*‘ указываться по ходу изложения форматов.

Квантор ‘?’

Обозначает понятие ‘неизвестно, какой из возможных’, или ‘какой-то один из возможных’. Очень интенсивно используется Системой во внутренних операциях, а при программировании на языке Прииск обозначается как знак вопроса ‘?’. В некоторых случаях его интерпретация близка к квантору ‘*‘, но квантор ‘?’ никогда не обозначает группу из нескольких объектов, в отличие от any квантора.

Квантор ‘...’

Интерпретируется как ‘несколько объектов из группы’. Редко используется, в частности, не применяется во внутренних операциях Системы. Основаная сфера приложения - описание результатных контекстов операторов Синтаксической Грамматики. Обозначается тремя точками без пробелов между ними:

Например, если правило Продукционной Машины должно проверить, что проверяемая группа грамматических деревьев содержит два слова ‘если’ и ‘тогда’, разделяемых произвольным количеством других лексем, то можно написать нечто вроде:

if context { СОЮЗ : ЕСЛИ {} ... СОЮЗ: ТОГДА{} }

Квантор ‘><’

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

context { ab.>< }

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

Дополнительные материалы

Компилятор словаря

Словарные статьи

Правила синтаксического анализа

Внутренний язык грамматической машины

  © Elijah Koziev 2010
прикладные проекты на основе грамматического словаря API грамматической машины компоненты для доступа к грамматическому словарю условия получения SDK токенизатор и сегментатор морфологический анализ и синтез лемматизатор база N-грамм синтаксический анализатор словоформы морфология и синтаксис русского языка падеж число род совершенный и несовершенный вид экспорт в SQL формат экспорт в XML формат скрипт SQL словаря структура SQL словаря структура XML словаря компоненты для доступа к грамматическому словарю ORM Persistent Dictionary Library лемматизация стемминг примеры использования грамматического словаря склонение существительных в русском языке склонение русских прилагательных спряжение глаголов в русском языке поиск текста с учетом морфологии OCR подсистема расширенные регулярные выражения генератор текста генератор случайного текста и имитатор рандомизатор синонимизатор перефразировщик Статистика буквенных паттернов

Грамматический словарь русского языка



Грамматический словарь
склонение и спряжение глаголов, существительных, прилагательных

В состав входит русский и английский словарь.

платформа:  Windows 2000 ... Windows 7
требования: 512 Mb свободной памяти, 300 Мб на диске
размер:         34 Мб

  скачать грамматический словарь купить грамматический словарь SDK грамматического словаря
грамматический словарь русского языка



SDK Грамматического словаря



SDK Грамматического Словаря
склонение и спряжение глаголов, существительных, прилагательных

В состав входит русский и английский словарь.

платформа:  Windows 2000 ... Windows 7
размер:         13 Мб

SQL словарь (демо):
sqlite mysql oracle firebird mssql

скачать демо-версию SDK купить SDK API грамматического словаря



Поисковая система



Integra
настольная и сетевая поисковая система 

платформа:  Windows XP ... Windows 7
требования: 512 Mb свободной памяти
размер:         21 Мб

Дополнительные компоненты:
MySQL поисковый сервер 13.5 Мб
Integra.Premium MySQL 3.9 Мб

скачать поисковую систему SDK поисковой системыописание поисковой системы



SDK Поисковой системы



SDK Поискового движка
API для настольной и сетевой поисковая система 

платформа:  Windows XP ... Windows 7
размер:         17 Мб

Дополнительные компоненты:

MySQL поисковый сервер 13.5 Мб
Integra.Premium MySQL 3.9 Мб

скачать SDK SDK поисковой системы



Экранный переводчик



Translator
экранный переводчик

платформа:  Windows XP ... Windows 7
требования: 256 Mb свободной памяти
размер:         4.4 Мб

Дополнительные компоненты:
расширенный англо-русский словарь 6.4 Мб


скачать экранный переводчикописание экранного переводчика



изменено 16-Aug-11