Condividi tramite


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.

  1. Nella definizione del campo, verificare che il campo sia attribuito come "ricercabile" ed sia di tipo Edm.String.

  2. 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.

Vedi anche