Aggiungere analizzatori del linguaggio ai campi stringa in un indice di Ricerca di intelligenza artificiale di Azure

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 ha una proprietà dell'analizzatore. Se il contenuto è costituito da stringhe tradotte, ad esempio campi separati per il testo in inglese e cinese, è possibile specificare analizzatori della lingua in ogni campo per accedere alle funzionalità linguistiche avanzate di tali analizzatori.

Quando usare un analizzatore del linguaggio

È consigliabile prendere in considerazione un analizzatore del linguaggio quando la consapevolezza della struttura di parole o frasi aggiunge valore all'analisi del testo. Un esempio comune è l'associazione di forme verbo irregolari ("bring" e "portato) o sostantivi plurali ("topi" e "mouse"). Senza consapevolezza linguistica, queste stringhe vengono analizzate solo sulle caratteristiche fisiche, che non riescono a intercettare la connessione. Poiché è più probabile che i blocchi di testo di grandi dimensioni abbiano questo contenuto, i campi costituiti da descrizioni, recensioni o riepiloghi sono candidati validi per un analizzatore del linguaggio.

È anche consigliabile prendere in considerazione gli analizzatori del linguaggio quando il contenuto è costituito da stringhe non occidentali. Anche se l'analizzatore predefinito (Standard Lucene) è indipendente dal linguaggio, il concetto di utilizzo di spazi e caratteri speciali (trattini e barre) per separare le stringhe è più applicabile alle 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 dispone di spazi, è probabile che un analizzatore indipendente dal linguaggio analizzi l'intera stringa come un token, quando in realtà la stringa è effettivamente una frase.

これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)

Per l'esempio precedente, una query con esito positivo deve includere il token completo o un token parziale usando 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 Ricerca di intelligenza artificiale di Azure è più probabile sbloccare questo comportamento perché tali analizzatori sono meglio attrezzati per suddividere il blocco di testo in parole significative nella lingua di destinazione.

Confronto tra Lucene e Microsoft Analyzers

Ricerca di intelligenza artificiale di Azure supporta 35 analizzatori di linguaggio supportati da Lucene e 50 analizzatori di linguaggio supportati dalla tecnologia proprietaria di elaborazione del linguaggio naturale Microsoft 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 hanno funzionalità avanzate, ad esempio la lemmatizzazione, la decompolazione 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 l'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 devono essere influenzate in modo significativo 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 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 può gestire forme di parole irregolari e inflected molto meglio che generano risultati di ricerca più pertinenti.

Come specificare un analizzatore del linguaggio

Impostare l'analizzatore durante la creazione dell'indice prima che venga caricato con i dati.

  1. Nella definizione del campo verificare che il campo sia attribuito come "ricercabile" ed è 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 accetterà un analizzatore del linguaggio.

Gli analizzatori del linguaggio non possono essere personalizzati. Se un analizzatore non soddisfa i requisiti, 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 delle proprietà dei campi, vedere Creare un indice (REST).For more information about creating an index and setting field properties, see Create Index (REST). Per altre informazioni sull'analisi del testo, vedere Analizzatori in Ricerca di intelligenza artificiale di Azure.

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
Inglese 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