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.
Zorg ervoor dat het veld in de velddefinitie is toegeschreven aan 'doorzoekbaar' en van het type Edm.String.
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 |
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 | |
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.