Normalisierung arabischer TexteCompatible with Milvus 3.0.0+
Der Filter „ arabic_normalization “ ist ein integrierter Token-Filter für arabischen Text. Er normalisiert arabische Buchstabevarianten und entfernt optionale Zeichen, die dazu führen können, dass gleichbedeutende arabische Begriffe bei der Textanalyse unterschiedlich dargestellt werden.
Konfiguration
Verwenden Sie für arabischen Text in den meisten Fällen den integrierten arabic Analysator. Der integrierte Analysator enthält diesen Filter zusammen mit der Standard-Tokenisierung, der Umwandlung in Kleinbuchstaben, der Normalisierung von Dezimalziffern, der arabischen Wortstammbildung und der Entfernung arabischer Stoppwörter. Verwenden Sie „ arabic_normalization “ nur dann direkt, wenn Sie eine benutzerdefinierte Analysator-Pipeline erstellen müssen.
Um den Filter „ arabic_normalization “ in einem benutzerdefinierten Analysator zu verwenden, fügen Sie ihn im Abschnitt „ filter “ unter „ analyzer_params “ hinzu:
analyzer_params = {
"tokenizer": "standard",
"filter": ["arabic_normalization"],
}
Der Filter „ arabic_normalization “ verfügt über keine konfigurierbaren Parameter.
Der Filter wendet die folgenden Transformationen an:
Transformation |
Von |
Nach |
|---|---|---|
Hamza- und Alef-Varianten |
|
|
Teh Marbuta |
|
|
Alef Maksura |
|
|
Harakat |
|
Entfernt |
Tatweel / Kashida |
|
Entfernt |
Der Filter wird auf die vom Tokenizer generierten Token angewendet. Die obige Konfiguration ist bewusst als Beispiel für einen benutzerdefinierten Analysator gedacht und umfasst nicht die vollständige Pipeline zur Verarbeitung arabischer Sprache.
Beispiele
Bevor Sie die Analysator-Konfiguration auf Ihr Sammlungsschema anwenden, überprüfen Sie deren Verhalten mithilfe der Methode „ run_analyzer “.
Analysator-Konfiguration
analyzer_params = {
"tokenizer": "standard",
"filter": ["arabic_normalization"],
}
Überprüfung mithilfe von run_analyzer
from pymilvus import MilvusClient
client = MilvusClient(uri="http://localhost:19530")
sample_text = "آدم أحمد إسلام مدرسة كبرى كِتَابٌ عـــربي"
result = client.run_analyzer(sample_text, analyzer_params)
print(result)
Erwartete Ausgabe
['ادم', 'احمد', 'اسلام', 'مدرسه', 'كبري', 'كتاب', 'عربي']