Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Анализ текста ›Концепции анализа текста

Стемминг

Стемминг — это процесс сокращения слова до его корневой формы. Это гарантирует, что варианты слова будут совпадать при поиске.

Например, walking и walked могут быть приведены к одному корневому слову: walk. После стемирования любое из слов будет соответствовать другому при поиске.

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

В некоторых случаях корневая форма стемированного слова может не быть реальным словом. Например, jumping и jumpiness могут быть оба приведены к jumpi. Хотя jumpi не является реальным английским словом, это не имеет значения для поиска; если все варианты слова сведены к одной и той же корневой форме, они будут правильно совпадать.

Фильтры токенов стемирования

В Elasticsearch стеминг обрабатывается фильтрами токенов стемирования token filters. Эти фильтры токенов можно классифицировать по методу стемирования слов:

  • Алгоритмические стемеры, которые приводят слова к корневой форме на основе набора правил
  • Стеммеры словарей, которые приводят слова к корневой форме, используя словарь

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

Алгоритмические стемеры

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

У алгоритмических стемеров есть несколько преимуществ:

  • Они требуют небольшой настройки и обычно работают хорошо «из коробки».
  • Они используют мало памяти.
  • Они обычно быстрее, чем стемеры словарей.

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

  • be, are и am
  • mouse и mice
  • foot и feet

Следующие фильтры токенов используют алгоритмический стеминг:

  • stemmer, который предоставляет алгоритмический стеминг для нескольких языков, некоторых с дополнительными вариантами.
  • kstem, стемер для английского языка, который сочетает алгоритмический стеминг со встроенным словарем.
  • porter_stem, наш рекомендуемый алгоритмический стемер для английского языка.
  • snowball, который использует правила стемирования на основе Snowball для нескольких языков.

Стеммеры словарей

Стеммеры словарей ищут слова в предоставленном словаре, заменяя нестемированные варианты слов стемированными словами из словаря.

Теоретически, стемеры словарей хорошо подходят для:

  • Стеммирования нерегулярных слов
  • Различения слов, которые написаны похоже, но не связаны концептуально, например:

    • organ и organization
    • broker и broken

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

  • Качество словаря
    Стеммер словаря так же хорош, как и его словарь. Для эффективной работы словари должны содержать значительное количество слов, регулярно обновляться и меняться с трендами языка. Часто к моменту предоставления словаря он бывает неполным и некоторые записи уже устарели.
  • Размер и производительность
    Стеммерам словарей необходимо загрузить все слова, приставки и суффиксы из словаря в память. Это может потребовать значительного объема оперативной памяти. Словари низкого качества также могут быть менее эффективными в удалении приставок и суффиксов, что может значительно замедлить процесс стемирования.

Вы можете использовать фильтр токенов hunspell для выполнения стемирования с помощью словаря.

Если доступен, рекомендуется попробовать алгоритмический стемер для вашего языка, прежде чем использовать фильтр токенов hunspell.

Управление стемированием

Иногда стеминг может производить общие корневые слова, которые написаны похоже, но не связаны концептуально. Например, стеминг может привести и skies и skiing к одному и тому же корневому слову: ski.

Чтобы предотвратить это и лучше контролировать стеминг, вы можете использовать следующие фильтры токенов:

  • stemmer_override, который позволяет определить правила стемирования для определенных токенов.
  • keyword_marker, который помечает указанные токены как ключевые слова. Ключевые токены не стемируются последующими фильтрами токенов стемирования.
  • conditional, который можно использовать для пометки токенов как ключевых, аналогично фильтру keyword_marker.

Для встроенных анализаторов языка вы также можете использовать параметр stem_exclusion для указания списка слов, которые не будут стемироваться.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/stemming.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API