Морфологический анализатор грамматического словаря и part-of-speech tagger

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

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

Кроме таких широко используемых процедур, как лемматизация слов sol_TranslateToBase и генерация всевозможных форм из базовой sol_FindStringsEx, морфологический анализатор позволяет также выяснять грамматические признаки слова (род, падеж и т.д.) - например, sol_GetNounGender, склонять sol_GetNounForm и спрягать sol_GetVerbForm слова, получать псевдокорень (стемминг) sol_Stemmer, а также работать с тезаурусом - например, процедура sol_TranslateToNoun приводит глагол хромировать к существительному хромирование и хром.

Утилиты в составе SDK, выполняющие морфологический разбор

В состав дистрибутива входит консольная утилита POSTagger, которая 1) загружает предложение из указанного текстового файла 2) загружает грамматический словарь 3) разбивает предложение на отдельные слова 4) выполняет морфологический разбор всех слов, используя различные эвристики и вероятностную модель русской морфологии для снижения неоднозначности распознавания 5) сохраняет результаты разбора в виде текстового файла с перечнем слов и из грамматических атрибутов.

Так как в состав SDK входит также исходный текст этой утилиты, то ее можно брать в качестве основы для разработки собственного прикладного кода.

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

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

debugger - оконная версия (MS Windows) морфологического анализатора,

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

Программа Грамматический Словарь Русского Языка также позволяет удобно просматривать морфологические свойства слов, их склонение и спряжение, а также прослеживать связи слов - синонимы, антонимы, родовые пары, словообразовательные связи.

Алгоритмы анализа

Алгоритмы работы морфологического анализатора описаны здесь

Описание алгоритмов токенизатора см. здесь.

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

В настоящее время морфологический анализатор протестирован на потокобезопасность - соответствующий код входит в состав демонстрационной программы TestLexicon в SDK Грамматического Словаря.

Процедуры API словаря

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

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

sol_CreateSentenceBroker и sol_CreateSentenceBrokerMem - создание разделителя предложений (сегментатора текста). Подробнее...

Отдельные предложения извлекаются последовательными вызовами пар функций sol_FetchSentence и sol_GetFetchedSentence до исчерпания текста, и затем объект сегментатора должен быть удален вызовом sol_DeleteSentenceBroker.

Данная процедура учитывает различные особые случаи, например "А.С. Пушкин".

sol_FetchSentence - отделение очередного предложения в ходе сегментации текста. Подробнее...

sol_MorphologyAnalysis - находит для каждого слова в предложении все варианты его распознавания - часть речи, грамматические признаки (падеж, род, число). Подробнее...

sol_ProjectWord - поиск всех вариантов распознавания слова. Подробнее...

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

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

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

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

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

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

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

API лемматизатора

Утилита LEXICON

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

API модулей стеммера

ORM Persistent Dictionary Library

  © Mental Computing 2010
12-Sep-13 изменено