Taalanalyse toevoegen aan tekenreeksvelden in een Azure Cognitive 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 analyzer-eigenschap. Als uw inhoud bestaat uit vertaalde tekenreeksen, zoals afzonderlijke velden voor Engelse en Chinese tekst, kunt u op elk veld taalanalyses opgeven voor toegang tot de uitgebreide taalkundige mogelijkheden van deze analysefuncties.

Wanneer gebruikt u een taalanalyse?

U moet een taalanalyse overwegen wanneer de kennis van woord- of zinsstructuur waarde toevoegt aan het parseren van tekst. Een veelvoorkomende voorbeeld is de associatie van onregelmatige werkwoordformulieren ('bring' en 'brought' of meervoudsvormwoorden ('mice' en 'mouse'). Zonder taalkundige kennis worden deze tekenreeksen geparseerd op basis van alleen fysieke kenmerken, waardoor de verbinding niet kan worden ondervangen. Omdat grote tekstgebieden deze inhoud waarschijnlijker hebben, zijn velden die bestaan uit beschrijvingen, beoordelingen of samenvattingen goede kandidaten voor een taalanalyse.

U moet ook rekening houden met taalanalyses wanneer inhoud uit niet- westertaalreeksen bestaat. Hoewel de standaardanalyse (Standard Lucene) taalagnostisch is, is het concept van het gebruik van spaties en speciale tekens (afbreekstreeën en slashes) voor afzonderlijke tekenreeksen meer van toepassing op talige talen dan niet- westers.

In het Chinees, Japans, Koreaans (CJK) en andere Engelstalige talen is een spatie bijvoorbeeld niet noodzakelijkerwijs een woord scheidingsteken. Kijk eens naar de volgende Japanse tekenreeks. Omdat er geen spaties zijn, analyseert een taalneagnostische analyse waarschijnlijk de hele tekenreeks als één token, terwijl de tekenreeks in feite 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 met een achtervoegsel-jokerteken bevatten, wat resulteert in een niet-natische en beperkte zoekervaring.

Een betere ervaring is om te zoeken naar afzonderlijke woorden: 明るい (Bright), 私たち (Our), 銀河系 (Galaxy). Het gebruik van een van de Japanse analyses die beschikbaar is in Cognitive Search heeft meer kans om dit gedrag te ontgrendelen, omdat deze analyses beter zijn uitgerust om de tekst te splitsen in zinvolle woorden in de doeltaal.

Lucene en Microsoft Analyzers vergelijken

Azure Cognitive Search ondersteunt 35 taalanalyses ondersteund door Lucene en 50 taalanalyses ondersteund door de eigen natuurlijke taalverwerkingstechnologie van Microsoft 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-analysefuncties hebben geavanceerde mogelijkheden, zoals synchronisatie, woorddecompounding (in talen als Duits, Deens, Nederlands, Zweeds, Noors, Tsjechisch, Finish, Hongaars, Slowaaks) en entiteitsherkenning (URL's, e-mailberichten, datums, getallen). Indien mogelijk moet u vergelijkingen uitvoeren van zowel de Microsoft- als Lucene-analyse om te bepalen welke het meest geschikt is. U kunt Analyseren-API gebruiken om de tokens te zien die zijn gegenereerd op basis van een bepaalde tekst met behulp van een specifieke analyse.

Indexeren 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 English analyzer of De Engelse analyzer van Microsoft.

  • De Engelse analyse van Lucene breidt de Standard-analyse uit. Het verwijdert bezittieven (na's) uit woorden, is van toepassing op basis van het Algoritme Voorverwijdering en verwijdert Engelse stopwoorden.

  • De Engelse analyse van Microsoft voert een synchronisatie uit in plaats van een verband. Dit betekent dat het inflected 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 met gegevens wordt geladen.

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

  2. Stel de eigenschap 'analyzer' in op een van de taalanalyses uit de lijst met ondersteunde analyses.

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

Taalanalyse kan niet worden aangepast. Als een analyse niet aan uw vereisten voldoet, kunt u proberen een aangepaste analyse te maken met de microsoft_language_tokenizer of microsoft_language_stemming_tokenizer en filters toe te voegen voor pre- en post-tokenization-verwerking.

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 Cognitive Search voor meer informatie over tekstanalyse.

Ondersteunde taalanalyses

Hieronder vindt 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-Trt.microsoft zh-Trt.lucene
Kroatisch hr.microsoft
Tsjechisch cs.microsoft cs.lucene
Deens da.microsoft da.lucene
Nederlands nl.microsoft nl.lucene
Engels en.microsoft en.lucene
Ests 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
Nederlands (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-cyrillic.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 van Lucene zijn powered by taalanalyses van Apache Lucene.

Zie ook