Процесс нормализации, реализованный в грамматическом словаре, позволяет убрать из исходного текста грамматическую информацию (падежи, числа, глагольные виды и времена, залоги причастий, род и так далее), оставляя смысловую составляющую.
Два других алгоритма - стемминг и лемматизация - пытаются достичь такого же эффекта, но глубина преобразования текста в них меньше. Другая сторона медали - более существенные затраты вычислительных ресурсов на выполнение всех стадий алгоритма глубокой нормализации.
Основная проблема, возникающая при использовании стеммера - это обработка слов, которые при образовании разных грамматических форм меняют не только окончание, но и основу слова. Например, существительное кошка в винительном и родительном падеже множественного числа имеет форму кошек. Из-за таких беглых гласных стеммер должен либо игнорировать подобные формы, усекая кошки до кошк и теряя часть форм слова, либо усекать слово до безусловно неизменяющейся основы, получая кош, что впоследствии может привести к нерелевантным сопоставлениям с кошмаром. Алгоритм стемминга, доступный на странице онлайн-словаря, идет именно вторым путем. Таким образом, предложение:
Проверь еду у кошек
после стемминга преобразуется в
Провер е у кош
Чтобы минимизировать негативные последствия слишком агрессивного усечения слов стеммером, необходимо выполнять стемминг искомого ключевого слова, а затем сравнивать результат с выходом стеммера для каждого из слов в обрабатываемом тексте. Но даже в этом случае буду встречаться совпадения стемов для совершенно несвязанных слов.
Достоинство стеммера - отсутствие внешних зависимостей. Доступный на сайте стеммер представляет из себя одну dll, скомпилированную из C# файла. Кроме того, стеммер работает очень быстро.
Нормализация текста не использует стемминг, поэтому она лишена недостатков потери релевантности из-за особенностей русского словоизменения.
Лемматизатор по своим результатам стоит намного ближе к нормализатору. Однако он применяет упрощенный анализ слов, не учитывая контекст. Это приводит к неоднозначностям при определении части речи. Например, лемматизация слов в словосочетании мы роем яму даст для второго слова два варианта лемматизации: существительное рой и глагол рыть. Эта неоднозначность не может быть разрешена без привлечения морфологического анализатора.
Без привлечения модуля морфологического анализа, распознающего части речи с учетом контекста и многочисленных правил согласования, нормализация будет давать значительное количество ошибочных результатов.
В качестве примера можно взять предложение
вижу три села
При неблагоприятном стечении обстоятельств нормализация даст на выходе малорелевантный результат:
видеть тереть сесть
вместо корректного
видеть три село
Первая часть алгоритма нормализации устраняет только результаты формообразования, то есть склонения, спряжения и сравнительные формы наречий. Такие грамматические явления, как субстантивация, требуют привлечения тезауруса, а именно разнообразных грамматических связей между словарными статьями.
Эти связи позволяет привести причастия и деепричастия к неопределенной форме глагола, однокоренные слова - по возможности к форме существительного (краснеть, красный - краснота), а родовые пары - к существительному мужского рода (актриса - актер).
Другой тип преобразований, для которого привлекается база данных тезауруса - приведение слов к нейтральным синонимам. Сюда входит преобразование уменьшительных, грубых, усилительных форм. Например, домик и домище преобразуется в дом, псина - в собака, и так далее.
При использовании процедурного API словаря можно воспользоваться двумя специальными функциями.
sol_TranslateToNoun выполняет поиск однокоренного или семантически связанного существительного.
sol_TranslateToInfinitive ищет однокоренной или семантически связанный глагол, а для русского языка - инфинитив.
Для опробования алгоритма глубокой нормализации посетите эту страницу и авторизуйтесь на сервере словаря под именем test с паролем test.
© Elijah Koziev 2010
Поисковая система
SDK Поисковой системы
Экранный переводчик
|
|
изменено 05-Feb-12 | ||||||||||||||||||||||||||||||||||||||