Морфологический анализ - это одна из элементарных операций, выполняемых грамматической машиной. В зависимости от области применения, прикладной программист может выбрать нужную процедуру, достигая компромисса между скоростью и полнотой выполняемых действий. К примеру, вместо полного морфологического анализа слова, который дает множество вариантов из-за омонимии, в ряде случаев достаточно использовать быстрый поиск, который возвращает только один результат, отбрасывая другие. К примеру, поисковый движок использует оба подхода, так что обработка текстов с большим количеством слов выполняется очень быстро (см. benchmarks).
Кроме таких широко используемых процедур, как лемматизация слов sol_TranslateToBase и генерация всевозможных форм из базовой sol_FindStringsEx, морфологический анализатор позволяет также выяснять грамматические признаки слова (род, падеж и т.д.) - например, sol_GetNounGender, склонять sol_GetNounForm и спрягать sol_GetVerbForm слова, получать псевдокорень (стемминг) sol_Stemmer, а также работать с тезаурусом - например, процедура sol_TranslateToNoun приводит глагол хромировать к существительному хромирование и хром.
В состав дистрибутива входит консольная утилита POSTagger, которая 1) загружает предложение из указанного текстового файла 2) загружает грамматический словарь 3) разбивает предложение на отдельные слова 4) выполняет морфологический разбор всех слов, используя различные эвристики и вероятностную модель русской морфологии для снижения неоднозначности распознавания 5) сохраняет результаты разбора в виде текстового файла с перечнем слов и из грамматических атрибутов.
Так как в состав SDK входит также исходный текст этой утилиты, то ее можно брать в качестве основы для разработки собственного прикладного кода.
Кроме вышеупомянутой программы POSTagger, в качестве демонстрации основных технических решений можно также использовать служебные программы, входящие в SDK:
lexicon - консольный отладчик морфологического анализатора,
debugger - оконная версия (MS Windows) морфологического анализатора,
syntax - консольный отладчик синтаксического анализатора и синтезатора.
Программа Грамматический Словарь Русского Языка также позволяет удобно просматривать морфологические свойства слов, их склонение и спряжение, а также прослеживать связи слов - синонимы, антонимы, родовые пары, словообразовательные связи.
Алгоритмы работы морфологического анализатора описаны здесь.
Описание алгоритмов токенизатора см. здесь.
В настоящее время морфологический анализатор протестирован на потокобезопасность - соответствующий код входит в состав демонстрационной программы TestLexicon в SDK Грамматического Словаря.
Полный перечень процедур API грамматического словаря можно найти здесь. Среди них выделим несколько, наиболее часто применяемых для выполнения морфологического разбора текста.
sol_Tokenize - разбивка строки на лексемы, учитывая определенные в загруженном словаре правила для особых случаев (типа сокращений т.д. и А.С. Пушкин), составные лексемы типа кое-кого. Подробнее...
sol_CreateSentenceBroker и sol_CreateSentenceBrokerMem - создание разделителя предложений (сегментатора текста). Подробнее...
Отдельные предложения извлекаются последовательными вызовами пар функций sol_FetchSentence и sol_GetFetchedSentence до исчерпания текста, и затем объект сегментатора должен быть удален вызовом sol_DeleteSentenceBroker.
Данная процедура учитывает различные особые случаи, например "А.С. Пушкин".
sol_FetchSentence - отделение очередного предложения в ходе сегментации текста. Подробнее...
sol_MorphologyAnalysis - находит для каждого слова в предложении все варианты его распознавания - часть речи, грамматические признаки (падеж, род, число). Подробнее...
sol_ProjectWord - поиск всех вариантов распознавания слова. Подробнее...
Многопоточность в морфологическом анализаторе
Приобретение SDK грамматического словаря
ORM Persistent Dictionary Library
© Козиев Илья 2019
![]() |
|
12-Sep-13 изменено |