Le plugin de tokenisation AliNLP, également connu sous le nom d'analysis-aliws, est un plugin intégré à Alibaba Cloud Elasticsearch. Une fois ce plugin installé sur votre cluster Elasticsearch, un analyseur et un tokenizer sont intégrés au cluster pour permettre l'analyse et la recherche de documents. Le plugin vous permet de télécharger un fichier de dictionnaire personnalisé. Après le téléchargement, le cluster effectue une mise à jour continue pour appliquer le fichier de dictionnaire sans redémarrage.
Le plugin analysis-aliws ajoute deux composants à votre cluster :
Analyseur :
aliws— supprime les mots-outils, les phrases fonctionnelles et les symboles des résultatsTokenizer :
aliws_tokenizer
Après l'installation, utilisez l'analyseur aliws pour indexer et rechercher des documents, téléchargez un fichier de dictionnaire personnalisé pour enrichir le vocabulaire ou créez un analyseur personnalisé basé sur aliws_tokenizer.
Si les résultats de recherche ne correspondent pas à vos attentes, testez directement l'analyseur et le tokenizer pour diagnostiquer le problème. Consultez Test de l'analyseur et Test du tokenizer .
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster Elasticsearch avec le plugin analysis-aliws installé. Le plugin n'est pas installé par défaut. Pour l'installer, consultez Installation et suppression d'un plugin intégré
Des nœuds de données disposant d'au moins 8 GiB de mémoire. Si votre cluster ne répond pas à cette exigence, mettez d'abord à niveau la configuration du cluster. Consultez Mise à niveau de la configuration d'un cluster
Limitations
Le plugin analysis-aliws n'est pas pris en charge sur :
Les clusters Elasticsearch V5.X
Les clusters Elasticsearch V8.X
Les clusters Elasticsearch Kernel-enhanced Edition
Vérifiez si votre cluster prend en charge le plugin dans la console Elasticsearch avant de poursuivre.
Recherche de documents à l'aide de l'analyseur aliws
Cette section explique comment créer un index avec l'analyseur aliws, indexer un document et effectuer une recherche.
Les étapes suivantes utilisent un cluster Elasticsearch V6.7.0 à titre d'exemple. Les étapes peuvent différer pour d'autres versions. Suivez les opérations réelles dans votre console.
Connectez-vous à la console Kibana de votre cluster Elasticsearch. Pour plus de détails, consultez Connexion à la console Kibana.
Dans le volet de navigation de gauche, cliquez sur Dev Tools.
-
Dans l'onglet Console, exécutez la commande correspondant à la version de votre cluster pour créer un index : For clusters running a version earlier than V7.0:
PUT /index { "mappings": { "fulltext": { "properties": { "content": { "type": "text", "analyzer": "aliws" } } } } }Pour les clusters exécutant la V7.0 ou une version ultérieure :
PUT /index { "mappings": { "properties": { "content": { "type": "text", "analyzer": "aliws" } } } }Ces deux commandes créent un index nommé
indexavec un champcontentde typetextet assignent l'analyseuraliwsà ce champ. Le type d'index estfulltextdans les versions antérieures à la V7.0 et_docdans la V7.0 ou les versions ultérieures. Une réponse réussie se présente comme suit :{ "acknowledged": true, "shards_acknowledged": true, "index": "index" } -
Ajoutez un document à l'index :
ImportantLa commande suivante s'applique uniquement aux clusters exécutant une version antérieure à la V7.0. Pour la V7.0 ou une version ultérieure, remplacez
fulltextpar_doc.POST /index/fulltext/1 { "content": "I like go to school." }Cette opération ajoute un document avec l'ID
1et définit son champcontentsurI like go to school.Une réponse réussie se présente comme suit :{ "_index": "index", "_type": "fulltext", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 0, "_primary_term": 1 } -
Recherchez le document :
ImportantLa commande suivante s'applique uniquement aux clusters exécutant une version antérieure à la V7.0. Pour la V7.0 ou une version ultérieure, remplacez
fulltextpar_doc.GET /index/fulltext/_search { "query": { "match": { "content": "school" } } }Cette opération exécute l'analyseur
aliwssur tous les documents du typefulltextet renvoie les documents dont le champcontentcontient le jetonschool. Les mots-outils tels quetosont exclus de l'analyse. Une réponse réussie se présente comme suit :{ "took": 5, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 1, "max_score": 0.2876821, "hits": [ { "_index": "index", "_type": "fulltext", "_id": "2", "_score": 0.2876821, "_source": { "content": "I like go to school." } } ] } }
Configuration d'un dictionnaire personnalisé
Le plugin analysis-aliws prend en charge un seul fichier de dictionnaire personnalisé nommé aliws_ext_dict.txt. Une fois le fichier téléchargé, tous les nœuds du cluster le chargent automatiquement sans redémarrage ; le cluster effectue plutôt une mise à jour continue, qui dure environ 10 minutes.
Aucun fichier de dictionnaire n'est fourni après l'installation. Téléchargez-en un si vous avez besoin d'un vocabulaire personnalisé.
Exigences relatives au fichier de dictionnaire
Avant le téléchargement, assurez-vous que votre fichier de dictionnaire respecte les exigences suivantes :
| Exigence | Détails |
|---|---|
| Nom de fichier | aliws_ext_dict.txt |
| Encodage | UTF-8 |
| Format | Un mot par ligne, chaque ligne se terminant par \n (saut de ligne UNIX/Linux). Aucun espace blanc au début ou à la fin. |
| Fichiers Windows | Utilisez l'outil dos2unix pour convertir le fichier avant le téléchargement. |
Téléchargement du fichier de dictionnaire
Connectez-vous à la console Alibaba Cloud Elasticsearch.
Dans le volet de navigation de gauche, cliquez sur Elasticsearch Clusters.
Dans la barre de navigation supérieure, sélectionnez le groupe de ressources et la région de votre cluster. Sur la page Elasticsearch Clusters, cliquez sur l'ID du cluster.
Dans le volet de navigation de gauche, choisissez Configuration and Management > Plug-ins.
Dans l'onglet Built-in Plug-ins, localisez le plugin analysis-aliws et cliquez sur Configure Dictionary dans la colonne Actions.
Dans le panneau Configure Dictionary, cliquez sur Configure dans le coin inférieur gauche.
-
Téléchargez le fichier de dictionnaire en utilisant l'une des méthodes suivantes :
TXT File : Cliquez sur Upload TXT File et sélectionnez le fichier depuis votre machine locale.
Add OSS File : Saisissez le Bucket Name et le File Name, puis cliquez sur Add. Le bucket Object Storage Service (OSS) doit se trouver dans la même région que votre cluster Elasticsearch. Si le contenu du fichier OSS change ultérieurement, téléchargez à nouveau le fichier de dictionnaire via la console ; les modifications apportées au bucket OSS ne sont pas détectées automatiquement.
-
Cliquez sur Save. Le cluster effectue une mise à jour continue pour appliquer le fichier de dictionnaire. La mise à jour dure environ 10 minutes. Le cluster ne redémarre pas pendant ce processus.
Pour télécharger le fichier importé, cliquez sur l'icône
située à côté du nom du fichier.
Un seul fichier de dictionnaire est autorisé à la fois. Pour le remplacer, cliquez sur x à côté de aliws_ext_dict.txt pour supprimer le fichier actuel, puis téléchargez un nouveau fichier.
Test de l'analyseur
Exécutez la commande suivante pour vérifier comment l'analyseur aliws tokenize le texte :
GET _analyze
{
"text": "I like go to school.",
"analyzer": "aliws"
}
L'analyseur aliws supprime les mots-outils et les symboles. Pour l'entrée "I like go to school.", le résultat attendu est le suivant :
{
"tokens" : [
{
"token" : "i",
"start_offset" : 0,
"end_offset" : 1,
"type" : "word",
"position" : 0
},
{
"token" : "like",
"start_offset" : 2,
"end_offset" : 6,
"type" : "word",
"position" : 2
},
{
"token" : "go",
"start_offset" : 7,
"end_offset" : 9,
"type" : "word",
"position" : 4
},
{
"token" : "school",
"start_offset" : 13,
"end_offset" : 19,
"type" : "word",
"position" : 8
}
]
}
Le mot-outil to et le point . sont exclus du résultat.
Test du tokenizer
Exécutez la commande suivante pour vérifier comment aliws_tokenizer tokenize le texte :
GET _analyze
{
"text": "I like go to school.",
"tokenizer": "aliws_tokenizer"
}
Contrairement à l'analyseur aliws, aliws_tokenizer conserve tous les jetons, y compris les mots-outils, les espaces blancs et la ponctuation. Pour l'entrée "I like go to school.", le résultat attendu est le suivant :
{
"tokens" : [
{
"token" : "I",
"start_offset" : 0,
"end_offset" : 1,
"type" : "word",
"position" : 0
},
{
"token" : " ",
"start_offset" : 1,
"end_offset" : 2,
"type" : "word",
"position" : 1
},
{
"token" : "like",
"start_offset" : 2,
"end_offset" : 6,
"type" : "word",
"position" : 2
},
{
"token" : " ",
"start_offset" : 6,
"end_offset" : 7,
"type" : "word",
"position" : 3
},
{
"token" : "go",
"start_offset" : 7,
"end_offset" : 9,
"type" : "word",
"position" : 4
},
{
"token" : " ",
"start_offset" : 9,
"end_offset" : 10,
"type" : "word",
"position" : 5
},
{
"token" : "to",
"start_offset" : 10,
"end_offset" : 12,
"type" : "word",
"position" : 6
},
{
"token" : " ",
"start_offset" : 12,
"end_offset" : 13,
"type" : "word",
"position" : 7
},
{
"token" : "school",
"start_offset" : 13,
"end_offset" : 19,
"type" : "word",
"position" : 8
},
{
"token" : ".",
"start_offset" : 19,
"end_offset" : 20,
"type" : "word",
"position" : 9
}
]
}
Création d'un analyseur personnalisé
aliws_tokenizer applique les filtres suivants après la tokenisation :
| Filtre | Effet | Comportement par défaut |
|---|---|---|
stemmer |
Réduit les mots à leur forme racine | Activé |
lowercase |
Convertit tous les jetons en minuscules | Activé |
porter_stem |
Applique l'algorithme de racinisation Porter | Activé |
stop |
Supprime les mots vides | Activé |
Pour créer un analyseur personnalisé, ajoutez aliws_tokenizer en tant que tokenizer de base et configurez les filtres selon vos besoins. Utilisez le champ stopwords pour définir des mots vides personnalisés.
L'exemple suivant crée un analyseur personnalisé nommé my_custom_analyzer avec un filtre stop personnalisé :
PUT my-index-000001
{
"settings": {
"analysis": {
"filter": {
"my_stop": {
"type": "stop",
"stopwords": [
" ",
",",
".",
" ",
"a",
"of"
]
}
},
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "aliws_tokenizer",
"filter": [
"lowercase",
"porter_stem",
"my_stop"
]
}
}
}
}
}
Pour ignorer entièrement le filtrage, supprimez le bloc filter de la configuration de l'analyseur.
Pour vérifier que l'analyseur personnalisé fonctionne comme prévu, exécutez :
GET my-index-000001/_analyze
{
"analyzer": "my_custom_analyzer",
"text": ["I like go to school."]
}
aliws_tokenizer prend également en charge la configuration des synonymes en utilisant la même méthode que le plugin analysis-ik. Pour plus de détails, consultez Utilisation des synonymes.
FAQ
Comment configurer le plugin analysis-aliws ? Quel format utilise le fichier de dictionnaire ?
Consultez Configuration d'un dictionnaire personnalisé pour les étapes de téléchargement et Exigences relatives au fichier de dictionnaire pour le format.
Pour d'autres questions sur la configuration du plugin, consultez la FAQ relative à analysis-aliws.
Quelles sont les différences entre les synonymes Elasticsearch, les jetons IK et les jetons AliNLP ?
Consultez Synonymes Elasticsearch vs jetons IK vs jetons AliNLP.
Si le dictionnaire OSS est mis à jour, le cluster détecte-t-il automatiquement les modifications ?
Non. Si le contenu du dictionnaire OSS change, téléchargez à nouveau le fichier via la console. Consultez Configuration d'un dictionnaire personnalisé.
Pour plus de détails sur les mises à jour continues et les dictionnaires basés sur OSS, consultez cette entrée de la FAQ.
Après la tokenisation, le e final est manquant dans des mots comme iPhone (devient Iphon) et Chinese (devient chines). Comment résoudre ce problème ?
aliws_tokenizer effectue une racinisation des mots après la tokenisation. Par conséquent, la lettre e à la fin de chaque mot est supprimée. Pour désactiver la racinisation, créez un analyseur personnalisé qui utilise aliws_tokenizer sans aucun filtre :
PUT my-index1
{
"settings": {
"number_of_shards": 1,
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "aliws_tokenizer"
}
}
}
}
}
Vérifiez le résultat :
GET my-index1/_analyze
{
"analyzer": "my_custom_analyzer",
"text": ["iphone"]
}
Le résultat devrait maintenant renvoyer iphone sans troncature.
Références
Présentation des plugins — tous les plugins disponibles pour Alibaba Cloud Elasticsearch
InstallSystemPlugin — Opération API pour installer un plugin intégré
UpdateAliwsDict — Opération API pour mettre à jour le fichier de dictionnaire analysis-aliws
ListPlugins — Opération API pour répertorier les plugins installés sur un cluster