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âmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
keep_original | Booleano | true | Mantém o token chinês original na saída do analisador. |
keep_full_pinyin | Booleano | true | Gera tokens Pinyin ao nível do caractere. Por exemplo, « 中文 » produz « zhong » e « wen ». |
keep_joined_full_pinyin | Booleano | false | Gera um token Pinyin combinado para cada token de origem. Por exemplo, « 中文 » produz « zhongwen ». |
keep_separate_first_letter | Booleano | false | Emite 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']