Ajouter des analyseurs de langue à des champs de chaîne dans l’index de Recherche Azure AI
Un analyseur linguistique est un type spécifique d’analyseur de texte qui effectue une analyse lexicale selon les règles linguistiques de la langue cible. Chaque champ de chaîne pouvant faire l’objet d’une recherche dispose d’une propriété analyzer. Si votre contenu est constitué de chaînes traduites, par exemple des champs distincts pour le texte en anglais et le texte en chinois, vous pouvez spécifier des analyseurs linguistiques sur chaque champ pour accéder aux riches fonctionnalités linguistiques de ces analyseurs.
Quand utiliser un analyseur linguistique ?
Vous devez envisager le recours à un analyseur linguistique quand la reconnaissance de la structure des mots ou des phrases ajoute de la valeur à l’analyse du texte. Un exemple courant est l’association de formes de verbes irréguliers (« bring » et « brought ») ou de noms au pluriel (« mice » et « mouse »). Sans reconnaissance linguistique, ces chaînes sont analysées uniquement sur des caractéristiques physiques, et l’association n’est pas détectée. Étant donné que les grands segments de texte sont plus susceptibles de présenter ce contenu, les champs composés de descriptions, d’évaluations ou de résumés sont de bons candidats pour un analyseur linguistique.
Vous devez également prendre en compte le recours aux analyseurs linguistiques quand le contenu est constitué de chaînes en langue non occidentale. Bien que l’analyseur par défaut (Standard Lucene) soit indépendant de la langue, le concept d’utilisation d’espaces et de caractères spéciaux (traits d’union et barres obliques) pour séparer les chaînes s’applique davantage aux langues occidentales qu’aux autres.
Par exemple, en chinois, japonais, coréen (CJK) et d’autres langues asiatiques, un espace n’est pas nécessairement un délimiteur de mots. Prenons la chaîne suivante en japonais. Étant donné qu’il n’y a pas d’espace, un analyseur indépendant de la langue analysera probablement la chaîne entière comme un seul jeton, alors qu’il s’agit en fait d’une phrase.
これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)
Dans l’exemple ci-dessus, une requête correcte devrait inclure le jeton complet, ou un jeton partiel avec caractère générique de suffixe, ce qui donnerait lieu à une expérience de recherche non naturelle et restrictive.
Une meilleure expérience consiste à rechercher des mots individuels : 明るい (brillant), 私たちの (notre), 銀河系 (galaxie). L’utilisation de l’un des analyseurs japonais disponibles dans Recherche Azure AI est plus susceptible de déverrouiller ce comportement, car ces analyseurs sont mieux équipés pour diviser le segment de texte en mots significatifs dans la langue cible.
Comparaison des analyseurs Lucene et Microsoft
Recherche Azure AI prend en charge 35 analyseurs de langues qui s’appuient sur Lucene et 50 analyseurs de langues exploitant la technologie propriétaire Microsoft de traitement du langage naturel utilisée dans Office et Bing.
Certains développeurs peuvent préférer la solution open source, plus familière et simple de Lucene. Les analyseurs de langues Lucene sont plus rapides, mais les analyseurs Microsoft proposent des fonctionnalités avancées, comme la lemmatisation, la décomposition en mots (dans les langues comme l’allemand, le danois, le néerlandais, le suédois, le norvégien, l’estonien, le finnois, le hongrois et le slovaque) et la reconnaissance d’entités (URL, adresses e-mail, dates, numéros). Si possible, vous devez comparer les analyseurs Microsoft et Lucene pour savoir lequel vous convient le mieux. Vous pouvez utiliser l'API Analyser pour voir les jetons générés à partir d'un texte donné à l'aide d'un analyseur spécifique.
L’indexation avec les analyseurs Microsoft est en moyenne trois fois plus lente qu’avec leurs équivalents Lucene, en fonction de la langue. Les performances de recherche ne doivent pas être trop affectées pour les requêtes de taille moyenne.
Analyseurs pour l’anglais
L’analyseur par défaut est Lucene Standard, qui fonctionne bien pour l’anglais, mais peut-être pas aussi bien que l’analyseur d’anglais de Lucene ou l’analyseur d’anglais de Microsoft.
L'analyseur d’anglais de Lucene est une extension de l’analyseur standard. Il supprime la marque du possessif (« ’s ») à la fin des mots, applique l’algorithme de recherche de radical de Porter et supprime les mots vides de l’anglais.
L’analyseur d’anglais de Microsoft procède par lemmatisation plutôt que par recherche de radical. Il gère donc beaucoup mieux les formes fléchies et irrégulières, ce qui donne des résultats de recherche plus pertinents.
Comment spécifier un analyseur de langage
Définissez l’analyseur lors de la création de l’index avant qu’il ne soit chargé avec les données.
Dans la définition de champ, vérifiez que le champ est attribué avec la valeur « pouvant faire l’objet d’une recherche » et qu’il est de type Edm.String.
Définissez la propriété « analyzer » sur l’un des analyseurs de langue de la liste des analyseurs pris en charge.
La propriété « analyzer » est la seule propriété qui accepte un analyseur de langue, et elle est utilisée à la fois pour l’indexation et les requêtes. Les autres propriétés associées à l’analyseur (« searchAnalyzer » et « indexAnalyzer ») n’acceptent pas un analyseur de langue.
Les analyseurs de langue ne peuvent pas être personnalisés. Si un analyseur ne répond pas à vos besoins, créez un analyseur personnalisé avec microsoft_language_tokenizer ou microsoft_language_stemming_tokenizer, puis ajoutez des filtres pour le traitement avant et après segmentation du texte en unités lexicales.
L’exemple suivant illustre une spécification de l’analyseur de langue dans un 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
},
Pour plus d’informations sur la création d’un index et la définition de propriétés de champ, consultez Créer un index (REST). Pour plus d’informations sur l’analyse de texte, consultez Analyseurs dans Recherche Azure AI.
Analyseurs de langage pris en charge
Voici la liste des langages pris en charge avec les noms d’analyseur Lucene et Microsoft.
Langage | Nom de l’analyseur Microsoft | Nom de l’analyseur Lucene |
---|---|---|
Arabe | ar.microsoft | ar.lucene |
Arménien | hy.lucene | |
Bangla | bn.microsoft | |
Basque | eu.lucene | |
Bulgare | bg.microsoft | bg.lucene |
Catalan | ca.microsoft | ca.lucene |
Chinois (simplifié) | zh-Hans.microsoft | zh-Hans.lucene |
Chinois traditionnel | zh-Hant.microsoft | zh-Hant.lucene |
Croate | hr.microsoft | |
Tchèque | cs.microsoft | cs.lucene |
Danois | da.microsoft | da.lucene |
Néerlandais | nl.microsoft | nl.lucene |
Anglais | en.microsoft | en.lucene |
Estonien | et.Microsoft | |
Finnois | fi.microsoft | fi.lucene |
Français | fr.Microsoft | fr.lucene |
Galicien | gl.lucene | |
Allemand | de.Microsoft | de.lucene |
Grec | el.microsoft | el.lucene |
Goudjrati | gu.microsoft | |
Hébreu | he.microsoft | |
Hindi | hi.microsoft | hi.lucene |
Hongrois | hu.microsoft | hu.lucene |
Islandais | is.microsoft | |
Indonésien | id.microsoft | id.lucene |
Irlandais | ga.lucene | |
Italien | it.microsoft | it.lucene |
Japonais | ja.Microsoft | ja.lucene |
Kannada | kn.microsoft | |
Coréen | ko.microsoft | ko.lucene |
Letton | lv.microsoft | lv.lucene |
Lituanien | lt.microsoft | |
Malayalam | ml.microsoft | |
Malais (latin) | ms.microsoft | |
Marathi | mr.microsoft | |
Norvégien | nb.Microsoft | no.lucene |
Persan | fa.lucene | |
Polonais | pl.microsoft | pl.lucene |
Portugais (Brésil) | pt-Br.microsoft | pt-Br.lucene |
Portugais (Portugal) | pt-Pt.microsoft | pt-Pt.lucene |
Pendjabi | pa.microsoft | |
Roumain | ro.microsoft | ro.lucene |
Russe | ru.microsoft | ru.lucene |
Serbe (cyrillique) | sr-cyrillic.microsoft | |
Serbe (latin) | sr-latin.microsoft | |
Slovaque | sk.microsoft | |
Slovène | sl.microsoft | |
Espagnol | es.Microsoft | es.lucene |
Suédois | sv.microsoft | sv.lucene |
Tamoul | ta.microsoft | |
Télougou | te.microsoft | |
Thaï | th.microsoft | th.lucene |
Turc | tr.microsoft | tr.lucene |
Ukrainien | uk.microsoft | |
Ourdou | ur.microsoft | |
Vietnamien | vi.microsoft |
Tous les analyseurs dont le nom est annoté lucene s’appuient sur les analyseurs linguistiques d’Apache Lucene.