Ёфикация в русском лексиконе

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

Решение указанных задач выполняется с помощью таблицы aux_form. Она хранит разнообразную дополнительную информацию для форм слова, в том числе запись с буквой 'ё'. Типы хранимой информации задаются целочисленным идентификатором, расшифровка которого доступна в справочнике aux_form_types. Нас интересует ёфикация, чему соответствует запись в aux_form_types со значением name='YO'. Далее, каждая запись в aux_form привязана к одной из записей в sg_form через составной ключ (id_entry,iform). Другими словами, для любой грамматической формы слова мы можем сохранить в словаре необходимую дополнительную информацию.

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

SELECT E.name AS 'начальная форма', C.name AS 'часть речи', F.name AS 'словоформа'
 FROM  sg_lexem L, sg_form F, sg_entry E, sg_class C
 WHERE L.name='СЕЛ' AND
       F.id_lexem=L.id AND
       E.id=F.id_entry AND
       C.id=E.id_class

Этот запрос выдает два указанным варианта:

начальная формачасть речисловоформа
сестьГЛАГОЛсел
селоСУЩЕСТВИТЕЛЬНОЕсел

Теперь добавим в запрос таблицу aux_form. При написании запроса нужно учесть, что записи в aux_form факультативны, то есть могут отсутствовать. В частности, там хранится только ёфикация, когда буква 'ё' присутствует, а когда в слове такой буквы нет - записи в aux_form тоже нет. Поэтому необходимо использовать конструкцию left join. А с помощью функции coalesce мы подставим текст слова из sg_form.name в случае, когда записи в aux_form нет, и таким образом избежим режущих глаз NULL в результатах. Итоговый SQL запрос:

SELECT E.name AS 'начальная форма', C.name AS 'часть речи', F.name AS 'словоформа', COALESCE( AF.data_text, F.name ) AS 'ёфикация'
 FROM  sg_lexem L, sg_entry E, sg_class C, 
      sg_form F LEFT JOIN aux_form AF ON AF.id_entry=F.id_entry AND AF.iform=F.iform
                LEFT JOIN aux_form_types AT ON AT.id=AF.data_type AND AT.name='YO'
 WHERE L.name='СЕЛ' AND
       F.id_lexem=L.id AND
       E.id=F.id_entry AND
       C.id=E.id_class

Он даёт решение нашей задачи, показывая запись сёл для существительного:

начальная формачасть речисловоформаёфикация
сестьГЛАГОЛселсел
селоСУЩЕСТВИТЕЛЬНОЕселсёл

Дополнительные материалы по работе со словарной базой

Реляционная схема словарной базы

Определение части речи с помощью SQL словаря

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

Купить словарную базу русской морфологии

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


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



изменено 13-Mar-12