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

Минимальный пример работы с грамматическим словарем

Следующий код на C++ дает пример минимально необходимого набора вызовов API в прикладной программе. Результат его работы - приведение слова "КОШКАМИ" к базовой форме "КОШКА" (именительный падеж, единственное число), то есть лемматизация.

#include "solarix_grammar_engine.h"

int main(void)
{
 HGREN hEngine = sol_CreateGrammarEngine(_T("dictionary.xml"));
 wchar_t Word[64] = L"КОШКАМИ";
 sol_TranslateToBase( hEngine, Word, false );
 sol_DeleteGrammarEngine(hEngine);
 return 0;
}

Соответствующий пример лемматизатора слов русского языка в виде проекта для VisualStudio 2003 находится в подкаталоге ...\demo\ai\solarix\Grammar_Engine\Lemmatizer_Russian.

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

Примеры использования DLL и SO собраны в каталоге ...\demo\ai\solarix\grammar_engine\ в SDK. Два примера - проекты TestLexicon и RegexEx - демонстрируют использование морфологического анализатора и расширенных регулярных выражений соответственно. Программа в подкаталоге MorphologyFX на языке C++ демонстрирует использование словаря в виде .NET сборки и в целом аналогична тестовой программе Lexicon, описанной ниже.

Тестовая программа TestLexicon демонстрирует использование API грамматического словаря для операций с лексиконом и тезаурусом. Находится она в каталоге ...\demo\ai\solarix\grammar_engine\lexicon в SDK. Она использует только стандартные C/C++ библиотеки и WinAPI (C run-time под Linux), поэтому компилируется очень быстро и размер порождаемого исполнимого кода минимален (около 20 Кб). Скомпилированный пример находится в этом же каталоге.

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

Результат пробного прогона программы можно увидеть на скриншоте (показан фрагмент теста процедур согласования частей речи):

Кроме собственно демонстрации использования API, программа Lexicon выполняет тестирование основных модулей грамматического словаря - морфологического анализатора, стеммера, синтаксического анализатора.

Также в состав SDK входит пример вызова API грамматического словаря из программы на Delphi (demo\ai\solarix\Grammar_Engine\Delphi), C# (demo\ai\solarix\Grammar_Engine\LexiconFX) и VisualBasic (demo\ai\solarix\Grammar_Engine\VB6).

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

Разумеется, такие программы, как поисковая система Integra, консольная поисковая утилита Faind и программа синонимизации текстов Joker также базируются на возможностях грамматического движка.

.NET версия API грамматического словаря

Исходные тексты для .NET обертки над Win32 DLL можно найти в каталоге ...\demo\ai\solarix\engines\grammar_engine_fx. При компиляции создается файл gren_fx.dll, который можно найти и в каталоге lib после установки SDK.

Текст примера на C# находится в каталоге ...\demo\ai\solarix\Grammar_Engine\MorphologyFX. В нем показано, как можно использовать все основные модули грамматического словаря - морфологический анализатор, токенизатор, морфологический синтезатор, тезаурус и синтаксический анализатор.

Текст примера на языке Managed C++ находится в каталоге ...\demo\ai\solarix\Grammar_Engine\MorphologyFX. Этот пример демонстрирует получение всех форм слова по заданной базовой форме, причем в фазе синтеза участвует тезаурус, поэтому среди сгенерированных форм встречаются не только полученные путем добавления и отбрасывания окончаний:

получение грамматических форм слова

Примеры с генератором текста

Эти примеры включены в состав SDK синонимизатора.

В подкаталоге demo\ai\solarix\grammar_engine\phrase_generator находятся две программы на C++ и C#, использующие API синонимизатора для модификации и синтеза текста.

В подкаталоге ...\demo\ai\solarix\grammar_engine\vb6 есть черновой пример вызова API генератора текста из программы на VisualBasic v.6

Утилита Rewriter

Это программа на C# для платформы .NET, выполняющая преобразование текста одним из реализованных в синонимизаторе способом.

Ее исходные тексты включены в состав дистрибутива SDK синонимизатора и располагаются в подкаталоге ...\demo\ai\solarix\grammar_engine\rewriter. Скомпилированная утилита - в подкаталоге ...\exe и exe64 вместе с остальными утилитами проекта.

Возможности:

генерация - создание грамматически корректного, но семантически бессмысленного случайного текста.

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

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

переупорядочивание - изменение порядка слов с сохранением семантики (консервативное переупорядочивание).

Вызов:

rewriter сценарий [опции] имя_входного_файла имя_выходного_файла

сценарий - это одно из включевых слов:

synonymize - выполнение синонимизации

reorder - изменение порядка слов при сохранении семантики

paraphrase - перефразировка - перестройка предложений, включая изложение другими словами

imitate - имитация

generate - генерация случайного текста

randomize - рандомизация, замена слов на случайные с сохранением грамматической формы

tokenize - просто разбивка исходного текста на предложения и отдельные слова (для контроля соответствующего программного модуля).

В некоторых случаях можно комбинировать сценарии, перечисляя их через запятую без пробелов, в частности:

synonymize,paraphrase

paraphrase,synonymize,reorder

В этом случае движок сначала пытается выполнить самую быструю мутацию текста, и в случае неудачи - переходит к следующему методу в списке.

Опции:

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

-debug_html - печать трассировочной информации в формате HTML.

-ngrams - при синонимизации учитывать сочетаемость слов по базе N-грамм (см. описание программы Empirika).

-silent - без эхо-печати на консоли.

-multiword - многословные синонимы, включая расшифровку аббревиатур - для сценария synonimize

-english - явно указывает на использование английского модуля

-russian - явно указывает на использование русского модуля

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

-dictdir PPP - явное указание пути к файлу словаря dictionary.xml или к каталогу с этим файлом.

-cp NNN - кодировка для plain text файлов.

-size NNN - длина генерируемого текста для команды generate в байтах, по умолчанию 1 Кб.

-pedantic - использовать более тщательный и трудоемкий синтаксический анализ. Сценаций reorder обязательно требует включения этого режима.

-rndflags noun,adj,verb,adverb - для сценария randomize включают замену определенных частей речи: noun - существительных, adj - прилагательных и причастий, verb - инфинитивов, глаголов и деепричастий, adverb - наречий. В списке для опции следует оставить только нужные элементы, пробелы между ними недопустимы.

Входной файл должен иметь формат, поддерживаемый поисковой системой, включая установленные плагины. Результат сохраняется как текстовый или HTML файл в кодировке utf-8 (если указана опция -debug_html).

При запуске утилита загружает из текстового utf8 файла stopsyn.txt слова, которые нельзя заменять и подставлять при замене (синонимизировать).

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

Примеры синонимизации:

исходная фраза результат подстановки синонимов
I decided to stay I made a decision to stay
I've decided to stay I've made a decision to stay
We decide to stay We make a decision to stay
He decides to stay He makes a decision to stay
I am deciding to stay I am making a decision to stay
You must decide to stay You must make a decision to stay
Текст речи премьер-министра Текст выступления председателя правительства
Кот будет лоботрясничать Кот будет бить баклуши
Кот не будет лоботрясничать Кот не будет валять дурака
Кот балбесничает Кот валяет дурака
Эквадор дефолтнул Эквадор объявил о дефолте
Эквадор объявил о дефолте Эквадор объявил об одностороннем отказе от выплаты долга

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

Пример текста, генерируемого имитатором (оригинал - текст на экономическую тему):

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

Утилита автоматического тестирования поисковой системы

Это программа на C#, которая тестирует все основные возможности поисковой системы в автоматическом режиме.

Каждый тест представляет из себя запуск консольной утилиты FAIND с определенным набором команд, результат действия которых известен. Затем анализируется ответ - XML файл.

Утилита представляет интерес именно набором гарантированно работоспособных комбинаций команд, реализующих возможности движка - поиск, индексирование, рубрикацию.

Редактор для внесения новых слов в лексикон

С помощью этой утилиты с графическим интерфейсом, написанной на C# для платформы .NET, можно вводить новые словарные статьи, получая на выходе текстовые файлы в формате, который понимает компилятор словаря.

Исходные тексты находятся в каталоге ...\demo\ai\solarix\ygres\led.

Скомпилированная утилита также входит в состав SDK - exe\lexicon_editor.exe. Она использует ряд вызовов API для проверки корректности данных, вводимых пользователем.

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

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

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

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

Конфигурация грамматического словаря

Getting started with grammatical dictionary SDK

  © 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 Мб


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



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