Грамматический словарь

Возможности грамматического словаря

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

2. Морфологический анализ - определение грамматических признаков слов (падеж, число, род и т.д.).

3. Стемминг, лемматизация - усечение слов до псевдокорня, приведение к базовой форме.

4. Морфологический синтез - формирование формы слова из базовой формы с указанными грамматическими признаками, получение всех возможных грамматических форм слова.

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

6. Операции с тезаурусом - поиск синонимов, приведение к форме существительного, глагола, перевод на другой язык и т.д.

7. N-граммы нескольких видов, в том числе согласованные (с проверкой грамматического согласования) и несогласованные (просто соседи).

8. Трансформация текста - полнотекстовый перевод.

Особенности грамматического словаря

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

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

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

Реализация API грамматического словаря

API грамматического словаря реализован в виде отдельной solarix_grammar_engine.dll, включенной в состав SDK грамматического движка. Для Linux/FreeBSD - solarix_grammar_engine.so. API полностью процедурный, поэтому вызов возможен из любого языка с поддержкой C binding.

Кроме того, есть .NET обертка gren_fx.dll, которая позволяет удобно вызывать функции движка из программ на языках платформы .NET (см. примеры).

Все вызовы API объявлены в include\lem\solarix\solarix_grammar_engine.h

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

Функциональность движка можно в некоторой степени оценить с помощью программы Грамматический Словарь:

Склонение существительного в грамматическом словаре

Что такое грамматический движок

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

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

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

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

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

Как и поисковый движок, ГМ разделена на 2 части: собственно скомпилированный в виде DLL/SO код и загружаемые из бинарного файла словаря модули, включая морфологический анализаторанализатор синтаксиса и трансформатор текста. В рамках поисковых программ грамматическая машина используется не как отдельный модуль, а непосредственно в виде исходных текстов. Это позволяет в некоторых случаях реализовать более эффективный подход.

Примеры использования

Для удобства освоения функций API в SDK входят исходные тексты нескольких программ-примеров на C++ и C# (проекты для MS VisualStudio 2003). Вы можете ознакомиться с описаниями этих программ здесь.

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

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

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

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

Программа lexicon - консольный отладчик морфологического анализатора

Программа thesaurus - редактор связей в тезаурусе

Сегментатор и токенизатор

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

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

  © 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