Морфологический анализатор

Инструменты для проверки морфологического анализатора

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

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

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

Можно также использовать консольный отладчик Lexicon, который из-за более консервативного пользовательского интерфейса гораздо проще переносить на новые платформы.

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

Программа ThesaurusBrowser позволяет просматривать содержимое словарных статей - все формы слов и связи с другими словами.

См. далее - примеры морфологического разбора отдельных слов.

Консольный отладчик LEXICON

Для выполнения морфологического анализа отдельных слов можно использовать консольный отладчик lexicon (он входит в состав SDK грамматического словаря). Более подробное описание работы проектора слов в грамматическом словаре можно прочитать здесь.

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

Поддерживаемые платформы

Программа написана на C++ и компилируется для нескольких платформ:

Запуск и использование

Запустив программу lexicon.exe (она находится в каталоге \exe или \exe64), Вы увидите начальный экран отладчика с приглашением выбрать вида запросов. Например, выбрав режим морфологического анализа и введя слово кошки, Вы увидите список найденных вариантов в лексиконе с числовыми идентификаторами и грамматическими признаками:

морфологический анализ

В данном случае найдено 2 варианта - именительный падеж множественного числа белые кошки и родительный падеж единственного числа - корм для кошки.

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

поиск слов в лексиконе по маске

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

нечеткий поиск в лексиконе

Утилита позволяет также увидеть связи слова в тезаурусе, например для английского словаря слово include имеет связи с существительным inclusion и прилагательным inclusive.

Кроме морфологического анализа, программа позволяет также выполнять стемминг.

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

стемминг

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

Аналогичным образом активируется режим запросов к тезаурусу - либо через начальное меню, либо командой #thesaurus. В ответ на вводимые слова программа будет печатать связанные с ним словарные статьи вместе с параметрами связи. Например, для слова include получается такой набор:

тезаурус

Если консоль поддерживает юникод, то можно просматривать содержимое многоязычных словарей.

Оконный отладчик WDebugger

Эта программа является функциональным аналогом консольных утилит Lexicon и Syntax, но имеет оконный интерфейс. Исходные тексты программы находятся в каталоге ...\lem\demo\ai\solarix\finder\debugger, скомпилированая программа - в каталоге ...\exe.

После запуска программы она загружает словарь и отображает основное окно с вкладками, открывающими доступ к основным частям грамматического словаря. Для доступа к проектору слов (лексическому автомату) выбираете вкладку "Word projection", после этого можно работать со словами:

морфологический анализ слова

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

морфологический анализ слова

Наконец, двойной клик на одной из пар покажет декомпилированное описание соответствующей координаты:

морфологический анализ слова

Кнопка справа от поля с индексом словарной статьи (подписано как ientry) покажет все словоформы в статье, причем это будет фактически исходный текст определения статьи:

словарная статья

Программа просмотра словаря

Грамматический Словарь Русского Языка позволяет просмотреть содержимое словарных статей и связей между ними:

склонение существительного русского языка

Дополнительная информация

Морфологический анализатор

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

Утилита Syntax

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

  © Козиев Илья 2019
изменено 26-Nov-10