Синтаксический разбор предложений

Грамматический словарь предоставляет прикладному коду возможность выполнять лексический, морфологический и синтаксический разбор предложения с помощью набора простых процедур, доступных из нескольких языков программирования, в том числе 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 версия синтаксического анализатора

Программы на управляемых языках на платформе .NET могут вызывать функции процедурного API через небольшую обертку gren_fx.dll. Сама эта обертка написана на C# и доступна в исходном коде в SDK.

Online вариант модуля синтаксического анализа для .NET доступен на сайте asp.net онлайн-словаря.

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

Правила пишутся на специальном встроенном языке программирования.

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

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

Синтаксис правил, управляющих работой синтаксического анализатора

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

Алгоритмы русской морфологии

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

Модальные глаголы в Грамматическом Словаре

Лексикон

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

Syntax - консольный отладчик синтаксического анализатора

Debugger - оконная версия отладчика синтаксического анализатора

  © Козиев Илья 2019
изменено 18-May-12