Многопоточная работа морфологического анализатора

Вызов процедурного API морфологического анализатора из нескольких потоков

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

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

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

Взаимные блокировки потоков

Внутренняя архитектура грамматического движка, и в частности модуля морфологического анализа, предусматривает подгрузку данных из базы данных словаря по мере необходимости. При этом данные, загруженные одним потоком, становятся доступными для других потоков.

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

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

Многопоточность при использовании SQL хранилища словаря

Если в качестве хранилища словаря выбрана серверная СУБД, то многопоточная работа через процедурный API дополнительно ограничивается возможностями клиентской и серверной частей БД обслуживать паралелльно поступающие запросы. Для MySQL среди параметров строки подключения в файле конфигурации словаря есть размер пула подключений. Так как одно подключение в этой БД может работать только с одним потоком, то множество потоков в прикладной программе будут ждать освобождения подключения, конкурируя друг с другом за этот ограниченный ресурс.

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

Тест на многопоточность в SDK

Среди примеров использования процедурного API в составе SDK есть программа TestLexicon, написанная на чистом C++. В ней помимо прочих тестов есть также фрагмент для проверки многопоточной работы грамматического словаря. В исходных текстах данная проверка находится в файле test_threading.cpp. См. также подробное описание формата эталонных предложений.

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

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

Ключевые особенности морфологического анализатора

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

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

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

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


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



изменено 05-Feb-12