ПиньиньCompatible with Milvus 3.0.x

Поиск по китайскому тексту часто требует от пользователей ввода китайских иероглифов в точном соответствии с их написанием в индексированном тексте. При поиске по имени, автозаполнении и поиске по мере ввода пользователи часто вводят пиньинь вместо китайских иероглифов. Например, пользователь может ввести « zuqiu », чтобы найти « 足球 ». Фильтр « pinyin » добавляет токены пиньинь к результатам анализатора, благодаря чему китайский текст может сопоставляться с вводом пиньинь без необходимости ведения отдельного поля для пиньинь.

Фильтр pinyin обычно используется с токенизатором Jieba для китайского текста. Он работает в конвейере фильтров пользовательского анализатора и может выдавать несколько форм токенов пиньинь для одного и того же китайского токена.

Настройка

Чтобы использовать параметры по умолчанию, укажите "pinyin" в разделе « filter » файла analyzer_params.

analyzer_params = {
    "tokenizer": "jieba",
    "filter": ["pinyin"],
}

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

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

analyzer_params = {
    "tokenizer": "jieba",
    "filter": [
        {
            "type": "pinyin",
            "keep_original": True,
            "keep_full_pinyin": True,
            "keep_joined_full_pinyin": False,
            "keep_separate_first_letter": False,
        }
    ],
}

Фильтр принимает следующие параметры.

ПараметрТипПо умолчаниюОписание
keep_originalЛогическое значениеtrueСохраняет исходный китайский токен в выводе анализатора.
keep_full_pinyinЛогическоеtrueВыдает токены пиньинь на уровне символов. Например, « 中文 » генерирует « zhong » и « wen ».
keep_joined_full_pinyinЛогическоеfalseВыдает объединенный токен пиньинь для каждого исходного токена. Например, 中文 генерирует zhongwen.
keep_separate_first_letterБулевоfalseВыдает токен с инициалами по системе пиньинь для каждого исходного токена. Например, 中文 генерирует zw.

Фильтр работает с токенами, сгенерированными токенизатором. Для китайского текста используйте его с токенизатором, таким как jieba.

Примеры

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

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

sample_text = "中文测试"

Сопоставление китайского текста с токенами пиньинь на уровне символов

Фильтр pinyin по умолчанию сохраняет исходные китайские токены и выдает токены пиньинь на уровне символов.

analyzer_params = {
    "tokenizer": "jieba",
    "filter": ["pinyin"],
}

result = client.run_analyzer(sample_text, analyzer_params)
print(result)

Ожидаемый результат:

['中文', 'zhong', 'wen', '测试', 'ce', 'shi']

Сопоставление китайских терминов с соединенным пиньинь

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

analyzer_params = {
    "tokenizer": "jieba",
    "filter": [
        {
            "type": "pinyin",
            "keep_original": True,
            "keep_full_pinyin": False,
            "keep_joined_full_pinyin": True,
            "keep_separate_first_letter": False,
        }
    ],
}

result = client.run_analyzer(sample_text, analyzer_params)
print(result)

Ожидаемый результат:

['中文', 'zhongwen', '测试', 'ceshi']

Сопоставление китайских терминов с начальными буквами пиньинь

Включите « keep_separate_first_letter », если вам нужно, чтобы китайский термин соответствовал начальным буквам его формы пиньинь.

analyzer_params = {
    "tokenizer": "jieba",
    "filter": [
        {
            "type": "pinyin",
            "keep_original": True,
            "keep_full_pinyin": False,
            "keep_joined_full_pinyin": False,
            "keep_separate_first_letter": True,
        }
    ],
}

result = client.run_analyzer(sample_text, analyzer_params)
print(result)

Ожидаемый результат:

['中文', 'zw', '测试', 'cs']

ПереведеноDeepL

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?