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.

  1. Vergewissern Sie sich in der Felddefinition, dass das Feld als „durchsuchbar“ eingestuft ist und vom Typ Edm.String ist.

  2. 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.

Siehe auch