Пиньинь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']