SprachidentifikatorCompatible with Milvus v2.5.15+
language_identifier ist ein spezieller Tokenizer, der die Textsuchfunktionen von Milvus durch die Automatisierung des Sprachanalyseprozesses verbessert. Seine Hauptfunktion besteht darin, die Sprache eines Textfeldes zu erkennen und dann dynamisch einen vorkonfigurierten Analysator anzuwenden, der für diese Sprache am besten geeignet ist. Dies ist besonders wertvoll für Anwendungen, die eine Vielzahl von Sprachen verarbeiten, da die manuelle Sprachzuweisung für jede einzelne Eingabe entfällt.
Durch die intelligente Weiterleitung von Textdaten an die entsprechende Verarbeitungspipeline rationalisiert language_identifier die Aufnahme mehrsprachiger Daten und gewährleistet eine genaue Tokenisierung für nachfolgende Such- und Abrufvorgänge.
Arbeitsablauf der Spracherkennung
language_identifier führt eine Reihe von Schritten durch, um einen Textstring zu verarbeiten. Dieser Arbeitsablauf ist für die Benutzer entscheidend, um zu verstehen, wie er richtig konfiguriert wird.
Spracherkennungs-Workflow
Eingabe: Der Arbeitsablauf beginnt mit einer Textzeichenfolge als Eingabe.
Erkennung der Sprache: Diese Zeichenkette wird zunächst an eine Spracherkennungsmaschine weitergeleitet, die versucht, die Sprache zu identifizieren. Milvus unterstützt zwei Engines: whatlang und lingua.
Auswahl des Analyzers:
Erfolg: Wenn die Sprache erfolgreich erkannt wurde, prüft das System, ob für den erkannten Sprachnamen ein entsprechender Analyzer in Ihrem
analyzersWörterbuch konfiguriert ist. Wenn eine Übereinstimmung gefunden wird, wendet das System den angegebenen Analyzer auf den Eingabetext an. Zum Beispiel würde ein erkannter "Mandarin"-Text an einenjiebaTokenizer weitergeleitet werden.Fallback: Wenn die Erkennung fehlschlägt oder wenn eine Sprache erfolgreich erkannt wurde, Sie aber kein spezifisches Analyseprogramm dafür angegeben haben, verwendet das System standardmäßig ein vorkonfiguriertes Standard-Analyseprogramm. Dies ist ein wichtiger Punkt zur Klarstellung; das Analysegerät
defaultist ein Fallback sowohl für den Fall, dass die Erkennung fehlschlägt als auch für den Fall, dass kein passendes Analysegerät vorhanden ist.
Nachdem das passende Analyseprogramm ausgewählt wurde, wird der Text tokenisiert und verarbeitet, womit der Arbeitsablauf abgeschlossen ist.
Verfügbare Spracherkennungsprogramme
Milvus bietet die Wahl zwischen zwei Spracherkennungsprogrammen:
Die Auswahl hängt von den spezifischen Leistungs- und Genauigkeitsanforderungen Ihrer Anwendung ab.
Motor |
Geschwindigkeit |
Genauigkeit |
Ausgabeformat |
Am besten für |
|---|---|---|---|---|
|
Schnell |
Gut für die meisten Sprachen |
Sprachennamen (z. B. Referenz: Spalte Sprache in der Tabelle der unterstützten Sprachen |
Echtzeitanwendungen, bei denen es auf Geschwindigkeit ankommt |
|
Langsamer |
Höhere Präzision, insbesondere bei kurzen Texten |
Namen in englischer Sprache (z. B. Referenz: Liste der unterstützten Sprachen |
Anwendungen, bei denen die Genauigkeit wichtiger ist als die Geschwindigkeit |
Ein wichtiger Aspekt ist die Namenskonvention der Suchmaschine. Beide Suchmaschinen liefern zwar englische Sprachnamen, verwenden aber für einige Sprachen unterschiedliche Begriffe (z. B. whatlang liefert Mandarin, während lingua Chinese liefert). Der Schlüssel des Analysators muss genau mit dem Namen übereinstimmen, der von der gewählten Erkennungsmaschine zurückgegeben wird.
Konfiguration
Um den language_identifier Tokenizer korrekt zu verwenden, müssen die folgenden Schritte durchgeführt werden, um seine Konfiguration zu definieren und anzuwenden.
Schritt 1: Wählen Sie Ihre Sprachen und Analysatoren
Das Kernstück der Einrichtung von language_identifier ist die Anpassung der Analysatoren an die spezifischen Sprachen, die Sie unterstützen wollen. Das System arbeitet, indem es die erkannte Sprache mit dem richtigen Analysator abgleicht, daher ist dieser Schritt entscheidend für eine genaue Textverarbeitung.
Im Folgenden finden Sie eine empfohlene Zuordnung von Sprachen zu geeigneten Milvus-Analysatoren. Diese Tabelle dient als Brücke zwischen der Ausgabe der Spracherkennungsmaschine und dem besten Werkzeug für die Aufgabe.
Sprache (Detektorausgabe) |
Empfohlener Analyzer |
Beschreibung |
|---|---|---|
|
|
Standard-Englisch-Tokenisierung mit Stemming und Stoppwort-Filterung. |
|
|
Chinesische Wortsegmentierung für nicht durch Leerzeichen getrennten Text. |
|
|
Ein robuster Tokenisierer für komplexe Skripte, einschließlich Japanisch. |
|
|
Eine benutzerdefinierte Konfiguration, die französische Akzente und Zeichen verarbeitet. |
Übereinstimmung ist der Schlüssel: Der Name Ihres Analysators muss genau mit der Sprachausgabe der Erkennungsmaschine übereinstimmen. Wenn Sie zum Beispiel
whatlangverwenden, muss der Schlüssel für chinesischen TextMandarinlauten.Bewährte Verfahren: Die obige Tabelle enthält empfohlene Konfigurationen für einige gängige Sprachen, ist aber keine vollständige Liste. Einen umfassenderen Leitfaden zur Auswahl von Analysatoren finden Sie unter Wählen Sie den richtigen Analysator für Ihren Anwendungsfall.
Ausgabe des Detektors: Eine vollständige Liste der Sprachnamen, die von den Erkennungsmodulen zurückgegeben werden, finden Sie in der Tabelle der von Whatlang unterstützten Sprachen und in der Liste der von Lingua unterstützten Sprachen.
Schritt 2: Definieren Sie analyzer_params
Um den language_identifier Tokenizer in Milvus zu verwenden, erstellen Sie ein Wörterbuch mit diesen Schlüsselkomponenten:
Erforderliche Komponenten:
analyzersconfig set - Ein Wörterbuch, das alle Analyzer-Konfigurationen enthält, die enthalten müssen:default- Den Fallback-Analyzer, der verwendet wird, wenn die Spracherkennung fehlschlägt oder kein passender Analyzer gefunden wirdSprachspezifische Analyzer - Jeder definiert als
<analyzer_name>: <analyzer_config>, wobei:analyzer_namemit der Ausgabe der gewählten Erkennungsmaschine übereinstimmt (z. B."English","Japanese")analyzer_configdem Standard-Analyzer-Parameterformat folgt (siehe Analyzer-Übersicht)
Optionale Komponenten:
identifier- Gibt an, welches Spracherkennungsmodul verwendet werden soll (whatlangoderlingua). Standardmäßig wirdwhatlangverwendet, wenn nichts angegeben wird.mapping- Erstellt benutzerdefinierte Aliase für Ihre Analyzer, die es Ihnen ermöglichen, beschreibende Namen anstelle des genauen Ausgabeformats der Erkennungsmaschine zu verwenden
Der Tokenizer erkennt zunächst die Sprache des Eingabetextes und wählt dann das entsprechende Analyseprogramm aus Ihrer Konfiguration aus. Wenn die Erkennung fehlschlägt oder kein passender Analyzer vorhanden ist, wird automatisch auf Ihren default Analyzer zurückgegriffen.
Empfohlen: Direkter Namensabgleich
Die Namen Ihrer Analysatoren sollten genau mit der Ausgabe des von Ihnen gewählten Spracherkennungsprogramms übereinstimmen. Dieser Ansatz ist einfacher und vermeidet mögliche Verwechslungen.
Verwenden Sie sowohl für whatlang als auch für lingua die Sprachnamen, wie sie in der jeweiligen Dokumentation angegeben sind:
whatlang unterstützte Sprachen (verwenden Sie die Spalte"Sprache")
analyzer_params = {
"tokenizer": {
"type": "language_identifier", # Must be `language_identifier`
"identifier": "whatlang", # or `lingua`
"analyzers": { # A set of analyzer configs
"default": {
"tokenizer": "standard" # fallback if language detection fails
},
"English": { # Analyzer name that matches whatlang output
"type": "english"
},
"Mandarin": { # Analyzer name that matches whatlang output
"tokenizer": "jieba"
}
}
}
}
Alternative Vorgehensweise: Benutzerdefinierte Namen mit Mapping
Wenn Sie es vorziehen, benutzerdefinierte Analyzernamen zu verwenden oder die Kompatibilität mit bestehenden Konfigurationen aufrechtzuerhalten, können Sie den Parameter mapping verwenden. Dadurch werden Aliase für Ihre Analysatoren erstellt - sowohl die ursprünglichen Namen der Erkennungsmaschine als auch Ihre benutzerdefinierten Namen werden funktionieren.
analyzer_params = {
"tokenizer": {
"type": "language_identifier",
"identifier": "lingua",
"analyzers": {
"default": {
"tokenizer": "standard"
},
"english_analyzer": { # Custom analyzer name
"type": "english"
},
"chinese_analyzer": { # Custom analyzer name
"tokenizer": "jieba"
}
},
"mapping": {
"English": "english_analyzer", # Maps detection output to custom name
"Chinese": "chinese_analyzer"
}
}
}
Nachdem Sie analyzer_params definiert haben, können Sie sie bei der Definition eines Sammelschemas auf ein VARCHAR Feld anwenden. Dadurch kann Milvus den Text in diesem Feld unter Verwendung des angegebenen Analysators für eine effiziente Tokenisierung und Filterung verarbeiten. Weitere Einzelheiten finden Sie unter Verwendung von Beispielen.
Beispiele
Hier finden Sie einige gebrauchsfertige Konfigurationen für gängige Szenarien. Jedes Beispiel enthält sowohl die Konfiguration als auch den Verifizierungscode, damit Sie die Einrichtung sofort testen können.
Erkennung von Englisch und Chinesisch
from pymilvus import MilvusClient
# Configuration
analyzer_params = {
"tokenizer": {
"type": "language_identifier",
"identifier": "whatlang",
"analyzers": {
"default": {"tokenizer": "standard"},
"English": {"type": "english"},
"Mandarin": {"tokenizer": "jieba"}
}
}
}
# Test the configuration
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
# English text
result_en = client.run_analyzer("The Milvus vector database is built for scale!", analyzer_params)
print("English:", result_en)
# Output:
# English: ['The', 'Milvus', 'vector', 'database', 'is', 'built', 'for', 'scale']
# Chinese text
result_cn = client.run_analyzer("Milvus向量数据库专为大规模应用而设计", analyzer_params)
print("Chinese:", result_cn)
# Output:
# Chinese: ['Milvus', '向量', '数据', '据库', '数据库', '专', '为', '大规', '规模', '大规模', '应用', '而', '设计']
Europäische Sprachen mit Akzentnormalisierung
# Configuration for French, German, Spanish, etc.
analyzer_params = {
"tokenizer": {
"type": "language_identifier",
"identifier": "lingua",
"analyzers": {
"default": {"tokenizer": "standard"},
"English": {"type": "english"},
"French": {
"tokenizer": "standard",
"filter": ["lowercase", "asciifolding"]
}
}
}
}
# Test with accented text
result_fr = client.run_analyzer("Café français très délicieux", analyzer_params)
print("French:", result_fr)
# Output:
# French: ['cafe', 'francais', 'tres', 'delicieux']
Hinweise zur Verwendung
Eine Sprache pro Feld: Ein Feld wird als eine einzige, homogene Texteinheit betrachtet. Sie ist so konzipiert, dass sie verschiedene Sprachen in verschiedenen Datensätzen verarbeiten kann, z. B. wenn ein Datensatz einen englischen Satz und der nächste einen französischen Satz enthält.
Keine gemischtsprachigen Strings: Es ist nicht dafür ausgelegt, eine einzelne Zeichenfolge zu verarbeiten, die Text in mehreren Sprachen enthält. So wird beispielsweise ein einzelnes Feld
VARCHAR, das sowohl einen englischen Satz als auch eine japanische Phrase in Anführungszeichen enthält, als eine einzige Sprache verarbeitet.Verarbeitung der dominanten Sprache: In gemischtsprachigen Szenarien wird die Erkennungsmaschine wahrscheinlich die dominante Sprache identifizieren, und der entsprechende Analysator wird auf den gesamten Text angewendet. Dies führt dazu, dass der eingebettete Fremdtext nur unzureichend oder gar nicht tokenisiert wird.