Aggiungere analizzatori del linguaggio ai campi stringa in un indice Ricerca cognitiva 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 delle parole o delle frasi aggiunge valore all'analisi del testo. Un esempio comune è l'associazione di forme verbo irregolari ("bring" e "bring) o sostantivi plurali ("topi" e "mouse"). Senza consapevolezza linguistica, queste stringhe vengono analizzate da sole sulle caratteristiche fisiche, che non riescono a intercettare la connessione. Poiché è più probabile che blocchi di testo di grandi dimensioni abbiano questo contenuto, i campi costituiti da descrizioni, revisioni o riepiloghi sono buoni candidati per un analizzatore del linguaggio.
È anche consigliabile prendere in considerazione gli analizzatori del linguaggio quando il contenuto è costituito da stringhe di linguaggio 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 ha 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, con conseguente un'esperienza di ricerca innaturale e limitazione.
Un'esperienza migliore consiste nel cercare parole singole: 明るい (Bright), 私たちの (Our), 銀河系 (Galaxy). L'uso di uno degli analizzatori giapponesi disponibili in Ricerca cognitiva è 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 analizzatori Microsoft
Ricerca cognitiva di Azure supporta 35 analizzatori di linguaggio supportati da Lucene e 50 analizzatori di linguaggio supportati da Microsoft tecnologia di 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 l'API Analyze 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 significativamente influenzate 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 genera 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.
Nella definizione del campo verificare che il campo sia attribuito come "ricercabile" e sia di tipo Edm.String.
Impostare la proprietà "analyzer" su uno degli analizzatori del linguaggio dall'elenco 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 accettano 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-tokenizzazione 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 cognitiva di Azure.
Analizzatori del linguaggio supportati
Di seguito è riportato l'elenco delle lingue supportate, con Lucene e Microsoft nomi di analizzatore.
Linguaggio | 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.