Aggiungere analizzatori del linguaggio ai campi stringa in un indice di Azure AI Search
L'analizzatore del linguaggio è un tipo specifico di analizzatore di testo che esegue l'analisi lessicale usando le regole linguistiche della lingua di destinazione. Ogni campo stringa ricercabile dispone di una proprietà analizzatore. Se il contenuto consiste in stringhe tradotte, ad esempio campi separati per un testo in lingua inglese e cinese, è possibile specificare gli analizzatori del linguaggio in ogni campo per accedere alle funzionalità linguistiche avanzate di tali analizzatori.
Quando usare un analizzatore del linguaggio
È consigliabile prendere in considerazione l’uso di un analizzatore del linguaggio quando la conoscenza della struttura di parole o frasi aggiunge valore all'analisi del testo. Un esempio comune è l'associazione di forme irregolari di verbi ("bring" e "brought”) o sostantivi plurali ("mice" e "mouse"). Senza conoscenza linguistica, queste stringhe vengono analizzate solo in base alle caratteristiche fisiche, e le connessioni non riescono ad essere intercettate. Poiché è più probabile che questo contenuto sia incluso in campi di grandi dimensioni, campi come descrizioni, recensioni o riassunti sono ottimi candidati per un analizzatore di linguaggio.
È anche consigliabile prendere in considerazione l’uso analizzatori del linguaggio quando il contenuto è costituito da stringhe non occidentali. Anche se l'analizzatore predefinito (Standard Lucene) è indipendente dalla lingua, l’utilizzo di spazi e caratteri speciali (trattini e barre) per separare stringhe è più applicabile a lingue occidentali rispetto a quelle non occidentali.
Ad esempio, in cinese, giapponese, coreano (CJK) e in altre lingue asiatiche, uno spazio non è necessariamente un delimitatore di parole. Si consideri la stringa giapponese seguente. Poiché non include di spazi, è probabile che un analizzatore indipendente dalla lingua analizzi l'intera stringa come un token, quando in realtà si tratta di una frase.
これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)
Per l'esempio precedente, una query con esito positivo dovrebbe includere il token completo o un token parziale che usa un carattere jolly suffisso, causando un'esperienza di ricerca innaturale e limitante.
Un'esperienza migliore consiste nel cercare parole singole: 明るい (Bright), 私たちの (Our), 銀河系 (Galaxy). L'uso di uno degli analizzatori giapponesi disponibili in Azure AI Search è sarà più probabilmente in grado di sbloccare questo comportamento, perché tali analizzatori sono meglio attrezzati per suddividere il blocco di testo in parole con un significato nella lingua di destinazione.
Confronto tra Lucene e Microsoft Analyzers
Azure AI Search supporta 35 analizzatori d linguaggio basati sulla tecnologia Lucene e 50 sono basati sulla tecnologia proprietaria di Microsoft per l'elaborazione del linguaggio naturale usata in Office e Bing.
Alcuni sviluppatori potrebbero preferire la soluzione open source di Lucene, più semplice e familiare. Gli analizzatori del linguaggio Lucene sono più veloci, ma gli analizzatori Microsoft dispongono di funzionalità avanzate, ad esempio lemmatizzazione, scomposizione delle parole (in lingue come tedesco, danese, olandese, svedese, norvegese, estone, finlandese, ungherese, slovacco) e riconoscimento di entità (URL, messaggi di posta elettronica, date, numeri). Si consiglia di confrontare, se possibile, gli analizzatori Microsoft e Lucene per scegliere la soluzione più adatta al proprio caso. È possibile usare 'API Analizza per visualizzare i token generati da un determinato testo usando un analizzatore specifico.
L'indicizzazione con gli analizzatori Microsoft è in media da due a tre volte più lenta rispetto agli analizzatori Lucene corrispondenti, a seconda della lingua. Le prestazioni della ricerca non dovrebbero risultare significativamente compromesse per le query di dimensioni medie.
Analizzatori per la lingua inglese
L'analizzatore predefinito è Lucene standard, che funziona bene per la lingua inglese, ma probabilmente non altrettanto quanto l'analizzatore per la lingua inglese Lucene o l'analizzatore per la lingua inglese di Microsoft.
L'analizzatore per la lingua inglese Lucene estende l'analizzatore standard. Rimuove il genitivo sassone (la 's finale) dalle parole, applica lo stemming in base all'algoritmo Porter Stemming e rimuove le parole non significative per la lingua inglese.
L'analizzatore per la lingua inglese Microsoft esegue la lemmatizzazione anziché lo stemming. Ciò significa che è possibile gestire le forme lessicali flesse e irregolari in modo decisamente migliore, producendo risultati di ricerca più rilevanti.
Come specificare un analizzatore del linguaggio
Impostare l'analizzatore durante la creazione dell'indice, prima vi vengano caricati i dati.
Nella definizione del campo, verificare che il campo sia attribuito come "ricercabile" ed sia di tipo Edm.String.
Impostare la proprietà "analyzer" su uno degli analizzatori del linguaggio dall'elenco degli analizzatori supportati.
La proprietà "analyzer" è l'unica proprietà che accetterà un analizzatore del linguaggio e viene usata sia per l'indicizzazione che per le query. Altre proprietà correlate all'analizzatore ("searchAnalyzer" e "indexAnalyzer") non accetteranno un analizzatore del linguaggio.
Gli analizzatori del linguaggio non possono essere personalizzati. Se un analizzatore non soddisfa i requisiti dell’utente, creare un analizzatore personalizzato con il microsoft_language_tokenizer o il microsoft_language_stemming_tokenizer e quindi aggiungere filtri per l'elaborazione di pre e post-tokenizzazione.
L'esempio seguente illustra una specifica dell'analizzatore del linguaggio in un indice:
{
"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
},
Per altre informazioni sulla creazione di un indice e sull'impostazione di proprietà dei campi, vedere Crea indice (REST). Per altre informazioni sull'analisi del testo, vedere Analizzatori in Azure AI Search.
Analizzatori del linguaggio supportati
Di seguito è riportato l'elenco delle lingue supportate, con i nomi degli analizzatori Lucene e Microsoft.
Lingua | Nome analizzatore Microsoft | Nome analizzatore Lucene |
---|---|---|
arabo | ar.microsoft | ar.lucene |
Armeno | hy.lucene | |
Bengalese | bn.microsoft | |
Basco | eu.lucene | |
Bulgaro | bg.microsoft | bg.lucene |
Catalano | ca.microsoft | ca.lucene |
Cinese Semplificato | zh-Hans.microsoft | zh-Hans.lucene |
Cinese tradizionale | zh-Hant.microsoft | zh-Hant.lucene |
Croato | hr.microsoft | |
Ceco | cs.microsoft | cs.lucene |
Danese | da.microsoft | da.lucene |
Olandese | nl.microsoft | nl.lucene |
italiano | en.microsoft | en.lucene |
Estone | et.microsoft | |
Finlandese | fi.microsoft | fi.lucene |
Francese | fr.microsoft | fr.lucene |
Galiziano | gl.lucene | |
Tedesco | de.microsoft | de.lucene |
Greco | el.microsoft | el.lucene |
Gujarati | gu.microsoft | |
Ebraico | he.microsoft | |
Hindi | hi.microsoft | hi.lucene |
Ungherese | hu.microsoft | hu.lucene |
Islandese | is.microsoft | |
Indonesiano (Bahasa) | id.microsoft | id.lucene |
Irlandese | ga.lucene | |
Italiano | it.microsoft | it.lucene |
Giapponese | ja.microsoft | ja.lucene |
Kannada | kn.microsoft | |
Coreano | ko.Microsoft | ko.lucene |
Lettone | lv.microsoft | lv.lucene |
Lituano | lt.microsoft | |
Malayalam | ml.microsoft | |
Malese (alfabeto latino) | ms.microsoft | |
Marathi | mr.microsoft | |
Norvegese | nb.microsoft | no.lucene |
Persiano | fa.lucene | |
Polacco | pl.microsoft | pl.lucene |
Portoghese (Brasile) | pt-Br.microsoft | pt-Br.lucene |
Portoghese (Portogallo) | pt-Pt.microsoft | pt-Pt.lucene |
Punjabi | pa.microsoft | |
Romeno | ro.microsoft | ro.lucene |
Russo | ru.microsoft | ru.lucene |
Serbo (alfabeto cirillico) | sr-cyrillic.microsoft | |
Serbo (alfabeto latino) | sr-latin.microsoft | |
Slovacco | sk.microsoft | |
Sloveno | sl.microsoft | |
Spagnolo | es.microsoft | es.lucene |
Svedese | sv.microsoft | sv.lucene |
Tamil | ta.microsoft | |
Telugu | te.microsoft | |
Thai | th.microsoft | th.lucene |
Turco | tr.microsoft | tr.lucene |
Ucraino | uk.microsoft | |
Urdu | ur.microsoft | |
Vietnamita | vi.microsoft |
Tutti gli analizzatori con nomi contenenti la parola Lucene sono basati sugli analizzatori del linguaggio Apache Lucene.