Taalanalyses toevoegen aan tekenreeksvelden in een Azure AI Search-index

Een taalanalyse is een specifiek type tekstanalyse dat lexicale analyses uitvoert met behulp van de taalkundige regels van de doeltaal. Elk doorzoekbaar tekenreeksveld heeft een analyse-eigenschap . Als uw inhoud bestaat uit vertaalde tekenreeksen, zoals afzonderlijke velden voor Engelse en Chinese tekst, kunt u taalanalyses voor elk veld opgeven voor toegang tot de uitgebreide taalkundige mogelijkheden van deze analyses.

Wanneer gebruikt u een taalanalyse

U moet een taalanalyse overwegen wanneer het bewustzijn van woord- of zinsstructuur waarde toevoegt aan tekstparsering. Een veelvoorkomend voorbeeld is de associatie van onregelmatige werkwoordsvormen ('bring' en 'bring') of meervoud zelfstandige naamwoorden ('muizen' en 'muis'). Zonder taalkundige kennis worden deze tekenreeksen alleen geparseerd op fysieke kenmerken, waardoor de verbinding niet kan worden ondervangen. Omdat grote stukken tekst deze inhoud waarschijnlijker hebben, zijn velden die bestaan uit beschrijvingen, beoordelingen of samenvattingen goede kandidaten voor een taalanalyse.

U moet ook taalanalyses overwegen wanneer inhoud bestaat uit tekenreeksen die geen westerse taal bevatten. Hoewel de standaardanalyse (Standard Lucene) taalneutraal is, is het concept van het gebruik van spaties en speciale tekens (afbreekstreepjes en slashes) om tekenreeksen te scheiden meer van toepassing op Westerse talen dan niet-Westerse talen.

In het Chinees, Japans, Koreaans (CJK) en andere Aziatische talen is een spatie bijvoorbeeld niet noodzakelijkerwijs een scheidingsteken voor woorden. Houd rekening met de volgende Japanse tekenreeks. Omdat er geen spaties zijn, zou een taalagnostische analyse waarschijnlijk de hele tekenreeks analyseren als één token, terwijl de tekenreeks eigenlijk een woordgroep is.

これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)

In het bovenstaande voorbeeld moet een geslaagde query het volledige token of een gedeeltelijk token bevatten met behulp van een jokerteken met achtervoegsel, wat resulteert in een onnatuurlijke en beperkte zoekervaring.

Een betere ervaring is om te zoeken naar afzonderlijke woorden: 明るい (Bright), 私たちの (Our), 銀河系 (Galaxy). Het gebruik van een van de Japanse analyseprogramma's die beschikbaar zijn in Azure AI Search is waarschijnlijker om dit gedrag te ontgrendelen, omdat deze analyses beter zijn uitgerust met het splitsen van het stuk tekst in zinvolle woorden in de doeltaal.

Lucene en Microsoft Analyzers vergelijken

Azure AI Search ondersteunt 35 taalanalyses die worden ondersteund door Lucene en 50 taalanalyses die worden ondersteund door eigen Microsoft-technologie voor natuurlijke taalverwerking die wordt gebruikt in Office en Bing.

Sommige ontwikkelaars geven mogelijk de voorkeur aan de meer vertrouwde, eenvoudige opensource-oplossing van Lucene. Lucene-taalanalyses zijn sneller, maar de Microsoft Analyzers hebben geavanceerde mogelijkheden, zoals lemmatisatie, woordontcompounding (in talen zoals Duits, Deens, Nederlands, Zweeds, Noors, Ests, Fins, Hongaars, Slowaaks) en entiteitsherkenning (URL's, e-mails, datums, getallen). Indien mogelijk moet u vergelijkingen uitvoeren van zowel de Microsoft- als Lucene-analyse om te bepalen welke analyse beter past. U kunt de Analyse-API gebruiken om de tokens te zien die zijn gegenereerd op basis van een bepaalde tekst met behulp van een specifieke analyse.

Indexering met Microsoft Analyzers is gemiddeld twee tot drie keer langzamer dan hun Lucene-equivalenten, afhankelijk van de taal. Zoekprestaties mogen niet aanzienlijk worden beïnvloed voor query's met een gemiddelde grootte.

Engelse analyse

De standaardanalyse is Standard Lucene, die goed werkt voor Engels, maar misschien niet zo goed als Lucene's Engelse analyse of De Engelse analyse van Microsoft.

  • Lucene's Engelse analyse breidt de Standard Analyzer uit. Het verwijdert bezitwoorden (volgwoorden) uit woorden, past stemming toe volgens het portier stemmingsalgoritmen en verwijdert Engelse stopwoorden.

  • De Engelse analyse van Microsoft voert lemmatisatie uit in plaats van stemming. Dit betekent dat het geïnflecteerde en onregelmatige woordvormen veel beter kan verwerken, wat resulteert in relevantere zoekresultaten.

Een taalanalyse opgeven

Stel de analyse in tijdens het maken van de index voordat deze wordt geladen met gegevens.

  1. Zorg ervoor dat het veld in de velddefinitie is toegeschreven aan 'doorzoekbaar' en van het type Edm.String.

  2. Stel de eigenschap Analyse in op een van de taalanalyses uit de lijst met ondersteunde analysen.

    De eigenschap analyse is de enige eigenschap die een taalanalyse accepteert en wordt gebruikt voor zowel indexering als query's. Andere analyse-gerelateerde eigenschappen ('searchAnalyzer' en 'indexAnalyzer') accepteren geen taalanalyse.

Taalanalyses kunnen niet worden aangepast. Als een analyse niet aan uw vereisten voldoet, maakt u een aangepaste analyse met de microsoft_language_tokenizer of microsoft_language_stemming_tokenizer en voegt u vervolgens filters toe voor pre- en post-tokenisatieverwerking.

In het volgende voorbeeld ziet u een taalanalysespecificatie in een 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
    },

Zie Index maken (REST) voor meer informatie over het maken van een index en het instellen van veldeigenschappen. Zie Analyzers in Azure AI Search voor meer informatie over tekstanalyse.

Ondersteunde taalanalyses

Hieronder ziet u de lijst met ondersteunde talen, met Lucene- en Microsoft Analyzer-namen.

Taal Microsoft Analyzer-naam Lucene Analyzer-naam
Arabisch ar.microsoft ar.lucene
Armeens hy.lucene
Bengaals bn.microsoft
Baskisch eu.lucene
Bulgaars bg.microsoft bg.lucene
Catalaans ca.microsoft ca.lucene
Chinees (Vereenvoudigd) zh-Hans.microsoft zh-Hans.lucene
Chinees (Traditioneel) zh-Hant.microsoft zh-Hant.lucene
Kroatisch hr.microsoft
Tsjechisch cs.microsoft cs.lucene
Deens da.microsoft da.lucene
Nederlands nl.microsoft nl.lucene
Engels en.microsoft en.lucene
Estisch et.microsoft
Fins fi.microsoft fi.lucene
Frans fr.microsoft fr.lucene
Galicisch gl.lucene
Duits de.microsoft de.lucene
Grieks el.microsoft el.lucene
Gujarati gu.microsoft
Hebreeuws he.microsoft
Hindi hi.microsoft hi.lucene
Hongaars hu.microsoft hu.lucene
IJslands is.microsoft
Indonesisch (Bahasa) id.microsoft id.lucene
Iers ga.lucene
Italiaans it.microsoft it.lucene
Japans ja.microsoft ja.lucene
Kannada kn.microsoft
Koreaans ko.microsoft ko.lucene
Lets lv.microsoft lv.lucene
Litouws lt.microsoft
Malayalam ml.microsoft
Maleis (Latijns) ms.microsoft
Mahrati mr.microsoft
Noors nb.microsoft no.lucene
Perzisch fa.lucene
Pools pl.microsoft pl.lucene
Portugees (Brazilië) pt-Br.microsoft pt-Br.lucene
Portugees (Portugal) pt-Pt.microsoft pt-Pt.lucene
Punjabi pa.microsoft
Roemeens ro.microsoft ro.lucene
Russisch ru.microsoft ru.lucene
Servisch (Cyrillisch) sr-cyrillisch.microsoft
Servisch (Latijns) sr-latin.microsoft
Slowaaks sk.microsoft
Sloveens sl.microsoft
Spaans es.microsoft es.lucene
Zweeds sv.microsoft sv.lucene
Tamil ta.microsoft
Telugu te.microsoft
Thai th.microsoft th.lucene
Turks tr.microsoft tr.lucene
Oekraïens uk.microsoft
Urdu your.microsoft
Vietnamees vi.microsoft

Alle analyses met namen die zijn geannoteerd met Lucene , worden mogelijk gemaakt door taalanalyses van Apache Lucene.

Zie ook