SQL запросы для получения распределения слов по частям речи

На предыдущем уроке мы научились определять, к какой части речи отнесена словарная статья. В качестве закрепления посмотрим, как одним запросом можно получить распределение слов по частям речи.

Итак, каждая словарная статья имеет заголовок в таблице sg_entry и набор грамматических форм в таблице sg_form. Есть также другая информация, связанная со словарными статьями, но нам она сейчас не нужна.

Поле sg_entry.id_class хранит идентификатор части речи, то есть ссылается на запись в sg_class. Это позволяет сгруппировать записи в sg_entry в запросе и получить распределение словарных статей по частям речи.

Надо также учесть, что в лексиконе присутствуют особые нетерминальные статьи. Они используются анализатором текста для специальной разметки результатов. От обычных статей они отличаются ненулевым значением в поле sg_entry.flags.

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

Чтобы вместо целочисленных идентификаторов частей речи видеть в выборке их названия, необходимо добавить в запрос таблицу sg_class, которая является справочником частей речи.

Итоговый запрос выглядит примерно так:

SELECT POS.name, COUNT(distinct E.id), COUNT(F.name)
 FROM  sg_class POS, sg_entry E, sg_form F
 WHERE E.id_class=POS.id AND E.flags=0 AND F.id_entry=E.id
 GROUP BY POS.name
 HAVING COUNT(E.id)>0
 ORDER BY COUNT(F.name) desc

Я добавил в него немного косметики в виде сортировки результатов. Он дает примерно такой результат (конечно, абсолютные значения варьируются для разных версий словаря):

namecount(distinct E.id)count(F.name)
ПРИЛАГАТЕЛЬНОЕ633591815413
СУЩЕСТВИТЕЛЬНОЕ50848500299
ГЛАГОЛ29105351007
ИНФИНИТИВ3111331113
ДЕЕПРИЧАСТИЕ2290422904
НАРЕЧИЕ70967623
ЧИСЛИТЕЛЬНОЕ44719
БЕЗЛИЧ_ГЛАГОЛ114212
ПРЕДЛОГ151151
МЕСТОИМ_СУЩ22132
ЧАСТИЦА100100
СОЮЗ7979
МЕСТОИМЕНИЕ168
ВВОДНОЕ4747
THESAURUSENTRIES11
ВОСКЛ_ГЛАГОЛ11

Следующие уроки

Ёфикация - учет буквы ё, поиск и восстановление

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

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

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

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

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

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


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



изменено 04-May-12