PinyinCompatible with Milvus 3.0.x
La recherche de texte en chinois nécessite souvent que les utilisateurs saisissent les caractères chinois exactement tels qu'ils apparaissent dans le texte indexé. Dans les workflows de recherche de nom, de saisie semi-automatique et de recherche au fur et à mesure de la saisie, les utilisateurs tapent fréquemment le pinyin à la place des caractères chinois. Par exemple, un utilisateur peut saisir « zuqiu » pour rechercher « 足球 ». Le filtre « pinyin » ajoute des tokens pinyin à la sortie de l’analyseur afin que le texte chinois puisse correspondre à la saisie en pinyin sans qu’il soit nécessaire de gérer un champ pinyin distinct.
Le filtre « pinyin » est généralement utilisé avec le tokeniseur Jieba pour le texte chinois. Il fonctionne dans un pipeline de filtres d’analyseur personnalisé et peut générer plusieurs formes de tokens pinyin pour un même token chinois.
Configuration
Pour utiliser les options par défaut, spécifiez « "pinyin" » dans la section « filter » de ` analyzer_params`.
analyzer_params = {
"tokenizer": "jieba",
"filter": ["pinyin"],
}
Cette syntaxe abrégée conserve les tokens chinois d’origine et génère des tokens pinyin au niveau des caractères. Elle ne génère pas de pinyin composé ni d’initiales pinyin, sauf si vous activez explicitement ces options.
Pour un contrôle total, spécifiez le filtre sous forme d’objet et configurez les formes de tokens pinyin générées par 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,
}
],
}
Le filtre accepte les paramètres suivants.
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
keep_original | Booléen | true | Conserve le token chinois d'origine dans la sortie de l'analyseur. |
keep_full_pinyin | Booléen | true | Génère des tokens Pinyin au niveau des caractères. Par exemple, « 中文 » produit « zhong » et « wen ». |
keep_joined_full_pinyin | Booléen | false | Génère un token pinyin combiné pour chaque token source. Par exemple, « 中文 » produit « zhongwen ». |
keep_separate_first_letter | Booléen | false | Génère un token d'initiales en pinyin pour chaque token source. Par exemple, 中文 produit zw. |
Le filtre s'applique aux tokens générés par le tokeniseur. Pour un texte en chinois, utilisez-le avec un tokeniseur tel que jieba.
Exemples
Avant d’appliquer la configuration de l’analyseur à votre schéma de collection, vérifiez son comportement avec run_analyzer.
from pymilvus import MilvusClient
client = MilvusClient(uri="http://localhost:19530")
sample_text = "中文测试"
Faire correspondre un texte chinois avec des tokens pinyin au niveau des caractères
Le filtre par défaut pinyin conserve les tokens chinois d’origine et génère des tokens Pinyin au niveau des caractères.
analyzer_params = {
"tokenizer": "jieba",
"filter": ["pinyin"],
}
result = client.run_analyzer(sample_text, analyzer_params)
print(result)
Résultat attendu :
['中文', 'zhong', 'wen', '测试', 'ce', 'shi']
Faire correspondre des termes chinois avec leur pinyin complet
Activez « keep_joined_full_pinyin » lorsque vous souhaitez qu’un terme chinois soit mis en correspondance avec sa forme complète en pinyin joint.
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)
Résultat attendu :
['中文', 'zhongwen', '测试', 'ceshi']
Faire correspondre des termes chinois avec les initiales pinyin
Activez l'keep_separate_first_letter lorsque vous souhaitez qu'un terme chinois corresponde aux initiales de sa forme en 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)
Résultat attendu :
['中文', 'zw', '测试', 'cs']