Нормализация и лемматизация текста с использованием тезауруса

Назначение алгоритма глубокой нормализации

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

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

Сравнение с лемматизацией и стеммингом

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

Проверь еду у кошек

после стемминга преобразуется в

Провер е у кош

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

Достоинство стеммера - отсутствие внешних зависимостей. Доступный на сайте стеммер представляет из себя одну dll, скомпилированную из C# файла. Кроме того, стеммер работает очень быстро.

Нормализация текста не использует стемминг, поэтому она лишена недостатков потери релевантности из-за особенностей русского словоизменения.

Лемматизатор по своим результатам стоит намного ближе к нормализатору. Однако он применяет упрощенный анализ слов, не учитывая контекст. Это приводит к неоднозначностям при определении части речи. Например, лемматизация слов в словосочетании мы роем яму даст для второго слова два варианта лемматизации: существительное рой и глагол рыть. Эта неоднозначность не может быть разрешена без привлечения морфологического анализатора.

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

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

В качестве примера можно взять предложение

вижу три села

При неблагоприятном стечении обстоятельств нормализация даст на выходе малорелевантный результат:

видеть тереть сесть

вместо корректного

видеть три село

Использование тезауруса

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

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

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

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

sol_TranslateToNoun выполняет поиск однокоренного или семантически связанного существительного.

sol_TranslateToInfinitive ищет однокоренной или семантически связанный глагол, а для русского языка - инфинитив.

Онлайн-версия

Для опробования алгоритма глубокой нормализации посетите эту страницу и авторизуйтесь на сервере словаря под именем test с паролем test.

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

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

Тезаурус

Лемматизатор

Стеммер

  © Козиев Илья 2019
изменено 05-Feb-12