Грамматический словарь предоставляет прикладному коду возможность выполнять лексический, морфологический и синтаксический разбор предложения с помощью набора простых процедур, доступных из нескольких языков программирования, в том числе C, C++, C#, Delphi, PHP. В частности, синтаксический разбор одного предложения выполняется с помощью функции sol_SyntaxAnalysis. Результатом ее работы будет синтаксическое дерево, в котором явным образом зафиксированы синтаксические отношения элементов предложения.
Для использования синтаксического анализатора необходим SDK Грамматического Словаря или ознакомительная версия этого SDK, доступная для свободного скачивания. Представленные в этих дистрибутивах примеры на нескольких языках программирования позволят быстро создать прототип своего прикладного анализатора.
Процедура синтаксического разбора включает в себя два дополнительных этапа, которые можно выполнить отдельно через специальные функции процедурного API. Во-первых, сначала грамматический движок определяет границы слов в предложении с учетом разнообразных правил для русского языка (или другого целевого естественного языка, описанного в словаре). Этот этап называется токенизация и доступен через функцию sol_Tokenize. Во-вторых, для каждого слова распознаются его грамматические признаки, такие как падеж, род, число, время и так далее, с учетом возможных неоднозначностей. Этот этап называется морфологическим разбором и может быть выполнен прикладным кодом отдельно с помощью функций sol_ProjectWord и sol_MorphologyAnalysis.
Результат синтаксического разбора - это набор словоформ, отображенных в узлы синтаксического графа, и соединяющих их связей (ребер). Визуализация графа может быть выполнена прикладным кодом под конечное устройство отображения самостоятельно. Сам грамматический словарь через API предоставляет только возможность обойти узлы синтаксического дерева и определить их параметры.
В качестве иллюстрации можно рассмотреть следующие примеры. Все они демонстрируют визуализацию результатов синтаксического разбора предложения Планета Юпитер видна невооруженным глазом.
ASP.NET страница может сгенерировать HTML код, использующий возможности современных браузеров с поддержкой HTML 5, для очень наглядного представления синтаксического дерева:
Программа Debugger с оконным интерфейсом отображает это же синтаксическое дерево с рядом технических деталей с помощью стандартного WinAPI контрола TreeView. Типы связей указаны в угловых скобочках:
Наконец, консольный отладчик использует ограниченные возможности текстовой консоли для вывода максимально подробной информации, необходимой для отладки правил синтаксического анализа:
На скриншоте выделены как введенное исходное предложение, так и синтаксическое дерево.
Программы на управляемых языках на платформе .NET могут вызывать функции процедурного API через небольшую обертку gren_fx.dll. Сама эта обертка написана на C# и доступна в исходном коде в SDK.
Online вариант модуля синтаксического анализа для .NET доступен на сайте asp.net онлайн-словаря.
Правила пишутся на специальном встроенном языке программирования.
Каждое правило представляет из себя описание условий, в которых оно применяется, и действий с набором синтаксических деревьев, которые выполняются при срабатывании. Набор правил компилируется при сборке словаря и запоминается в словарной базе данных. При первом обращении к синтаксическому анализатору правила начинают подгружаться грамматическим движком в оперативную память и исполняться.
Исходный текст правил можно найти в подкаталоге ...\scripts\dictionary.src в файлах с именами rus_syntactic_analyzer_*.sol
Синтаксис правил, управляющих работой синтаксического анализатора
API синтаксического анализатора
Модальные глаголы в Грамматическом Словаре
Внутренний язык грамматической машины
Syntax - консольный отладчик синтаксического анализатора
Debugger - оконная версия отладчика синтаксического анализатора
© Elijah Koziev 2010
Поисковая система
SDK Поисковой системы
Экранный переводчик
|
|
изменено 28-Nov-11 | ||||||||||||||||||||||||||||||||||||||