PinyinCompatible with Milvus 3.0.x

A pesquisa de texto em chinês exige frequentemente que os utilizadores introduzam os caracteres chineses exatamente como aparecem no texto indexado. Em processos de pesquisa de nomes, preenchimento automático e pesquisa à medida que se escreve, os utilizadores digitam frequentemente Pinyin em vez de caracteres chineses. Por exemplo, um utilizador pode digitar « zuqiu » para pesquisar « 足球 ». O filtro « pinyin » adiciona tokens de pinyin à saída do analisador, para que o texto em chinês possa corresponder à entrada em pinyin sem ser necessário manter um campo de pinyin separado.

O filtro pinyin é normalmente utilizado com o tokenizador Jieba para texto em chinês. Funciona num pipeline de filtros de um analisador personalizado e pode emitir várias formas de tokens Pinyin para o mesmo token chinês.

Configuração

Para utilizar as opções predefinidas, especifique « "pinyin" » na secção « filter » de « analyzer_params ».

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

Esta sintaxe abreviada mantém os tokens chineses originais e gera tokens Pinyin ao nível do caractere. Não gera Pinyin ligado nem iniciais Pinyin, a menos que ative essas opções explicitamente.

Para um controlo total, especifique o filtro como um objeto e configure os formatos dos tokens Pinyin que o Milvus gera.

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

O filtro aceita os seguintes parâmetros.

ParâmetroTipoPadrãoDescrição
keep_originalBooleanotrueMantém o token chinês original na saída do analisador.
keep_full_pinyinBooleanotrueGera tokens Pinyin ao nível do caractere. Por exemplo, « 中文 » produz « zhong » e « wen ».
keep_joined_full_pinyinBooleanofalseGera um token Pinyin combinado para cada token de origem. Por exemplo, « 中文 » produz « zhongwen ».
keep_separate_first_letterBooleanofalseEmite um token com as iniciais em pinyin para cada token de origem. Por exemplo, 中文 produz zw.

O filtro opera sobre os tokens produzidos pelo tokenizador. Para texto em chinês, utilize-o com um tokenizador como o jieba.

Exemplos

Antes de aplicar a configuração do analisador ao esquema da sua coleção, verifique o seu comportamento com run_analyzer.

from pymilvus import MilvusClient

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

sample_text = "中文测试"

Correlacionar texto em chinês com pinyin ao nível dos caracteres

O filtro predefinido pinyin mantém os tokens chineses originais e emite tokens de pinyin ao nível do caractere.

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

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

Resultado esperado:

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

Corresponder termos chineses com pinyin unificado

Ative o filtro « keep_joined_full_pinyin » quando precisar que um termo chinês corresponda à sua forma completa de pinyin unificado.

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)

Resultado esperado:

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

Correlacionar termos chineses com as iniciais do pinyin

Ative a opção « keep_separate_first_letter » quando precisar que um termo chinês corresponda às iniciais da sua forma em pinyin.

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)

Resultado esperado:

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

Traduzido porDeepL

Experimente o Milvus gerenciado gratuitamente

O Zilliz Cloud é descomplicado, powered by Milvus e 10x mais rápido.

Começar
Feedback

Esta página foi útil?