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