Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Анализ текста ›Справочник по фильтрам токенов

Фильтр токенов для разбиения слов с дефисами

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

Этот фильтр использует HyphenationCompoundWordTokenFilter Lucene, разработанный для германских языков.

Пример

Следующий запрос API анализа использует фильтр hyphenation_decompounder, чтобы найти подслова в Kaffeetasse на основе немецких шаблонов деления слов с дефисами в файле analysis/hyphenation_patterns.xml. Затем фильтр проверяет эти подслова по списку указанных слов: kaffee, zucker и tasse.

GET _analyze
{
  "tokenizer": "standard",
  "filter": [
    {
      "type": "hyphenation_decompounder",
      "hyphenation_patterns_path": "analysis/hyphenation_patterns.xml",
      "word_list": ["Kaffee", "zucker", "tasse"]
    }
  ],
  "text": "Kaffeetasse"
}

Фильтр генерирует следующие токены:

[ Kaffeetasse, Kaffee, tasse ]

Настраиваемые параметры

hyphenation_patterns_path

(Обязательный, строка) Путь к файлу шаблонов деления слов с дефисами в формате XML Apache FOP (Formatting Objects Processor).

Этот путь должен быть абсолютным или относительным к местоположению config. Поддерживаются только файлы, совместимые с FOP v1.2.

Примеры файлов шаблонов деления слов с дефисами FOP XML:

  • Проект Objects For Formatting Objects (OFFO) на Sourceforge
  • Прямая загрузка offo-hyphenation_v1.2.zip (шаблоны деления слов с дефисами v2.0 и выше не поддерживаются)
word_list

(Обязательный*, массив строк) Список подслов. Подслова, найденные с помощью шаблона деления слов с дефисами, но отсутствующие в этом списке, исключаются из выходных токенов.

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

Должен быть указан либо этот параметр, либо word_list_path.

word_list_path

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

Этот путь должен быть абсолютным или относительным к местоположению config, а файл должен быть закодирован в UTF-8. Каждый токен в файле должен разделяться символом новой строки.

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

Должен быть указан либо этот параметр, либо word_list.

max_subword_size
(Необязательный, целое число) Максимальная длина подслова в символах. Токены подслов большей длины исключаются из вывода. По умолчанию 15.
min_subword_size
(Необязательный, целое число) Минимальная длина подслова в символах. Токены подслов меньшей длины исключаются из вывода. По умолчанию 2.
min_word_size
(Необязательный, целое число) Минимальная длина слова в символах. Токены слов меньшей длины исключаются из вывода. По умолчанию 5.
only_longest_match
(Необязательный, булево) Если true, включается только самое длинное совпадающее подслово. По умолчанию false.

Настройка и добавление в анализатор

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

Например, следующий запрос API создания индекса использует пользовательский фильтр hyphenation_decompounder для настройки нового пользовательского анализатора.

Пользовательский фильтр hyphenation_decompounder находит подслова на основе шаблонов деления слов с дефисами в файле analysis/hyphenation_patterns.xml. Затем фильтр проверяет эти подслова по списку слов, указанному в файле analysis/example_word_list.txt. Подслова длиной более 22 символов исключаются из выходных токенов.

PUT hyphenation_decompound_example
{
  "settings": {
    "analysis": {
      "analyzer": {
        "standard_hyphenation_decompound": {
          "tokenizer": "standard",
          "filter": [ "22_char_hyphenation_decompound" ]
        }
      },
      "filter": {
        "22_char_hyphenation_decompound": {
          "type": "hyphenation_decompounder",
          "word_list_path": "analysis/example_word_list.txt",
          "hyphenation_patterns_path": "analysis/hyphenation_patterns.xml",
          "max_subword_size": 22
        }
      }
    }
  }
}

© 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/analysis-hyp-decomp-tokenfilter.html

Spec-Zone.ru

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