Hinzufügen von Sprachanalysetools zu Zeichenfolgenfeldern in einem Azure AI Search-Index
Ein Sprachanalysetool ist eine bestimmte Art einer Textanalyse, die eine lexikalische Analyse mithilfe der linguistischen Regeln der Zielsprache durchführt. Jedes durchsuchbare Zeichenfolgenfeld hat eine Analyzer-Eigenschaft. Wenn Ihr Inhalt aus übersetzten Zeichenfolgen besteht, wie z. B. separaten Feldern für englischen und chinesischen Text, können Sie für jedes Feld Sprachanalysetools angeben, um auf die umfangreichen linguistischen Funktionen dieser Sprachanalysetools zuzugreifen.
Anwendungsfälle für Sprachanalysetools
Sie sollten ein Sprachanalysetool in Erwägung ziehen, wenn der Wert der Textanalyse durch Sensitivität für die Wort- oder Satzstruktur steigt. Ein häufiges Beispiel ist die Zuordnung unregelmäßiger Verbformen („bringt“ und „brachte“) oder Pluralformen („Sphinx“ und „Sphingen“). Ohne linguistische Sensitivität werden diese Zeichen nur nach ihren physischen Merkmalen analysiert, wodurch die Verbindung nicht erkannt wird. Da große Textabschnitte mit höherer Wahrscheinlichkeit solche Inhalte aufweisen, sind Felder, die Beschreibungen, Rezensionen oder Zusammenfassungen enthalten, gute Kandidaten für ein Sprachanalysetool.
Sie sollten Sprachanalysetools außerdem in Erwägung ziehen, wenn die Inhalte aus Zeichenfolgen in nicht westlichen Sprachen bestehen. Der Standard-Analysator (Standard Lucene) ist zwar sprachunabhängig, aber das Konzept der Verwendung von Leerzeichen und Sonderzeichen (Bindestriche und Schrägstriche) zur Trennung von Zeichenketten ist eher auf westliche Sprachen anwendbar als auf nicht-westliche Sprachen.
Beispielsweise ist im Chinesischen, Japanischen, Koreanischen (CJK) und in anderen asiatischen Sprachen ein Leerzeichen nicht zwangsläufig ein Trennzeichen für Wörter. Sehen Sie sich die folgende japanische Zeichenfolge an. Da sie keine Leerzeichen aufweist, wird die gesamte Zeichenfolge von einem nicht sprachsensitiven Analysetool wahrscheinlich als ein Token analysiert, während es sich bei dieser Zeichenfolge tatsächlich um einen Satz handelt.
これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)
Für das Beispiel oben müsste eine erfolgreiche Abfrage das vollständige Token oder einen Teil des Tokens mit einem Suffix-Platzhalterzeichen enthalten, was zu einem unnatürlichen und eingeschränkten Suchverhalten führt.
Ein besseres Verhalten ergibt sich bei der Suche nach einzelnen Wörtern: 明るい (hell), 私たちの (unsere), 銀河系 (Galaxie). Durch die Verwendung eines der japanischen Analysetools, die in Azure AI Search zur Verfügung stehen, lässt sich dieses Verhalten leichter aufbrechen, da diese Analysetools besser dafür ausgerüstet sind, den Textabschnitt in aussagekräftige Wörter in der Zielsprache aufzuteilen.
Vergleich der Analysetools von Lucene und Microsoft
Azure AI Search unterstützt 35 Sprachanalysetools auf Basis von Lucene und 50 Sprachanalysetools, die von Microsoft-Technologien zur Verarbeitung natürlicher Sprache unterstützt werden, die in Office und Bing zum Einsatz kommen.
Einige Entwickler bevorzugen möglicherweise die vertrautere, einfachere Open Source-Lösung von Lucene. Lucene-Sprachanalysetools sind schneller, während Microsoft-Sprachanalysetools erweiterte Funktionen bieten, wie z.B. Lemmatisierung, Wortzerlegung (in Sprachen wie Deutsch, Dänisch, Niederländisch, Schwedisch, Norwegisch, Estnisch, Finnisch, Ungarisch und Slowakisch) und Entitätserkennung (URLs, E-Mails, Datumsangaben und Zahlen). Vergleichen Sie nach Möglichkeit die Analyseprogramme von Microsoft und Lucene, um die für Ihre Anforderungen passendere Lösung zu ermitteln. Sie können die Analyse-API verwenden, um die Token, die auf der Grundlage eines bestimmten Texts generiert wurden, mithilfe eines bestimmten Analysetools anzuzeigen.
Die Indizierung mit Analyseprogrammen von Microsoft dauert je nach Sprache durchschnittlich zwei bis drei Mal länger als mit entsprechenden Analyseprogrammen von Lucene. Die Suchleistung sollte bei durchschnittlich großen Abfragen nicht wesentlich eingeschränkt sein.
Analysetools für Englisch
Standardmäßig wird das Lucene-Standardanalysetool verwendet, das für Englisch gut funktioniert, vielleicht aber nicht ganz so gut wie das Analysetool für Englisch von Lucene oder das Analysetool für Englisch von Microsoft.
Das Analysetool für Englisch von Lucene ist eine Erweiterung des Standardanalysetools. Es entfernt Possessivformen (nachgestelltes -s) bei Wörtern, wendet gemäß dem Wortstammerkennungsalgorithmus von Porter die Wortstammerkennung an und entfernt englische Stoppwörter.
Das Analysetool für Englisch von Microsoft führt die Lemmatisierung anstelle der Wortstammerkennung durch. Dadurch können gebeugte und unregelmäßige Wortformen viel besser verarbeitet werden, was zu relevanteren Suchergebnissen führt.
Festlegen einer Sprachanalyse
Stellen Sie das Analysetool während der Indexerstellung ein, bevor es mit Daten geladen wird.
Vergewissern Sie sich in der Felddefinition, dass das Feld als „durchsuchbar“ eingestuft ist und vom Typ Edm.String ist.
Setzen Sie die Eigenschaft „Analyzer“ auf einen der Sprachanalysatoren aus der Liste der unterstützten Analysatoren.
Die Eigenschaft „Analyzer“ ist die einzige Eigenschaft, die einen Sprachanalysator akzeptiert und sowohl für die Indizierung als auch für Abfragen verwendet wird. Andere Analysetool-bezogene Eigenschaften („searchAnalyzer“ und „indexAnalyzer“) akzeptieren kein Sprachanalysetool.
Sprachanalysetools können nicht angepasst werden. Wenn ein Analysetool nicht Ihren Anforderungen entspricht, müssen Sie ein benutzerdefiniertes Analysetool mit dem microsoft_language_tokenizer oder microsoft_language_stemming_tokenizer erstellen und anschließend Filter für die Verarbeitung vor und nach der Tokenisierung hinzufügen.
Das folgende Beispiel illustriert eine Sprachanalysator-Spezifikation in einem Index:
{
"name": "hotels-sample-index",
"fields": [
{
"name": "Description",
"type": "Edm.String",
"retrievable": true,
"searchable": true,
"analyzer": "en.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null
},
{
"name": "Description_fr",
"type": "Edm.String",
"retrievable": true,
"searchable": true,
"analyzer": "fr.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null
},
Weitere Informationen über die Erstellung eines Index und das Festlegen von Feldeigenschaften finden Sie unter Erstellen eines Index. Weitere Informationen über die Textanalyse finden Sie unter Analysetools in Azure AI Search.
Unterstützte Sprachanalysetools
In der folgenden Liste werden die unterstützten Sprachen und die Namen der entsprechenden Analysetools von Lucene und Microsoft aufgeführt.
Sprache | Name des Microsoft-Analysetools | Name des Lucene-Analysetools |
---|---|---|
Arabisch | ar.microsoft | ar.lucene |
Armenisch | hy.lucene | |
Bengalisch | bn.microsoft | |
Baskisch | eu.lucene | |
Bulgarisch | bg.microsoft | bg.lucene |
Katalanisch | ca.microsoft | ca.lucene |
Chinesisch (vereinfacht) | zh-Hans.microsoft | zh-Hans.lucene |
Chinesisch (traditionell) | zh-Hant.microsoft | zh-Hant.lucene |
Kroatisch | hr.microsoft | |
Tschechisch | cs.microsoft | cs.lucene |
Dänisch | da.microsoft | da.lucene |
Niederländisch | nl.microsoft | nl.lucene |
Englisch | en.microsoft | en.lucene |
Estnisch | et.microsoft | |
Finnisch | fi.microsoft | fi.lucene |
Französisch | fr.microsoft | fr.lucene |
Galicisch | gl.lucene | |
Deutsch | de.microsoft | de.lucene |
Griechisch | el.microsoft | el.lucene |
Gujarati | gu.microsoft | |
Hebräisch | he.microsoft | |
Hindi | hi.microsoft | hi.lucene |
Ungarisch | hu.microsoft | hu.lucene |
Isländisch | is.microsoft | |
Indonesisch (Bahasa) | id.microsoft | id.lucene |
Irisch | ga.lucene | |
Italienisch | it.microsoft | it.lucene |
Japanisch | ja.microsoft | ja.lucene |
Kannada | kn.microsoft | |
Koreanisch | ko.microsoft | ko.lucene |
Lettisch | lv.microsoft | lv.lucene |
Litauisch | lt.microsoft | |
Malayalam | ml.microsoft | |
Malaiisch (Lateinisch) | ms.microsoft | |
Marathi | mr.microsoft | |
Norwegisch | nb.microsoft | no.lucene |
Persisch | fa.lucene | |
Polnisch | pl.microsoft | pl.lucene |
Portugiesisch (Brasilien) | pt-Br.microsoft | pt-Br.lucene |
Portugiesisch (Portugal) | pt-Pt.microsoft | pt-Pt.lucene |
Pandschabi | pa.microsoft | |
Rumänisch | ro.microsoft | ro.lucene |
Russisch | ru.microsoft | ru.lucene |
Serbisch (Kyrillisch) | sr-cyrillic.microsoft | |
Serbisch (Lateinisch) | sr-latin.microsoft | |
Slowakisch | sk.microsoft | |
Slowenisch | sl.microsoft | |
Spanisch | es.microsoft | es.lucene |
Schwedisch | sv.microsoft | sv.lucene |
Tamilisch | ta.microsoft | |
Telugu | te.microsoft | |
Thailändisch | th.microsoft | th.lucene |
Türkisch | tr.microsoft | tr.lucene |
Ukrainisch | uk.microsoft | |
Urdu | ur.microsoft | |
Vietnamesisch | vi.microsoft |
Alle Analysetools mit Lucene im Namen werden von den Sprachanalysetools von Apache Lucene unterstützt.