Utiliser des modèles d'apprentissage automatique avec Elasticsearch pour baliser le contenu
Objectifs
Databases for Elasticsearch prend en charge les charges de travail d'apprentissage automatique. Dans ce tutoriel, vous allez apprendre à mettre à disposition un modèle d'apprentissage automatique dans une instance Databases for Elasticsearch, puis à l'utiliser pour extraire des informations supplémentaires significatives d'un jeu de données de test. Seule une connaissance de base des commandes de terminal est requise pour mettre à disposition et comprendre ce tutoriel.
L' apprentissage automatique est une branche de l'intelligence artificielle (IA) et de l'informatique qui se concentre sur l'utilisation de données et d'algorithmes pour imiter la manière dont les humains apprennent, améliorant progressivement sa précision. En utilisant des méthodes statistiques, les algorithmes sont formés pour effectuer des classifications ou des prévisions et pour découvrir des informations clés dans les projets d'exploration de données.
Ces algorithmes d'apprentissage sont appelés "modèles". Dans ce tutoriel, nous utilisons un modèle NLP (Natural Language Processing) préconfiguré, qui extrait le sens des phrases en langage écrit (Natural). Plus précisément, nous utilisons le modèle distilbert-base-uncased-finetuned-conll03-english qui tente d'identifier les noms des personnes, des emplacements et des organisations dans le texte.
De nombreux autres modèles se spécialisent dans l'analyse d'autres formes de données, telles que l'extraction de texte à partir d'images, la conversion de la parole en texte ou l'identification d'objet dans des images. Pour la liste complète des modèles pris en charge par la pile Elastic, voir Modèles NLP tiers compatibles. Les modèles peuvent être entraînés sur la base de connaissances spécifiques à un domaine, mais la formation de nouveaux modèles dépasse le cadre de ce tutoriel.
Ce tutoriel vous guide dans le processus de :
-
Mise à disposition d'une instance Databases for Elasticsearch
-
Téléchargement d'un modèle d'apprentissage automatique
-
Téléchargement d'un ensemble de données de titres et de récapitulatifs à partir d'articles de presse
-
Transmission de l'ensemble de données via le modèle NLP
-
Interrogation des données étendues pour voir les résultats du modèle sur les données.
Consultez les autres tutoriels de cette série d'apprentissage automatique Elasticsearch:
Commencer à être productif
Pour commencer le processus de mise à disposition, installez des outils de productivité indispensables:
Obtenir une clé API pour provisionner l'infrastructure sur votre compte
Suivez ces étapes pour créer une clé d'API IBM Cloud qui permet à Terraform de mettre à disposition une infrastructure dans votre compte. Vous pouvez créer jusqu'à 20 clés d'API.
Pour des raisons de sécurité, la clé d'API ne peut être copiée ou téléchargée qu'au moment de sa création. Si la clé d'API est perdue, vous devez en créer une autre.
Cloner le projet
Clonez le projet à partir du référentielGitHub.
git clone https://github.com/IBM/elasticsearch-nlp-ml-tutorial.git
cd elasticsearch-nlp-ml-tutorial/terraform
Installation de l'infrastructure
Mettez à disposition votre instance Databases for Elasticsearch.
-
Sur votre machine, créez un document nommé
terraform.tfvars
, avec les zones suivantes:ibmcloud_api_key = "<your_api_key_from_step_1>" region = "<your_region>" es_password = "<make_up_a_password>"
Le document
terraform.tfvars
contient des variables que vous pouvez souhaiter conserver secrètes et qui sont donc ignorées par le référentiel GitHub. -
Installez l'infrastructure à l'aide de la commande suivante :
terraform init terraform apply --auto-approve
Le script Terraform génère les données de configuration nécessaires à l'exécution de l'application. Vous devez donc les copier dans le dossier
scripts
:terraform output -json >../scripts/config.json cd ../scripts
Installer eland
Eland est un client Python Elasticsearch qui permet d'explorer et d'analyser des données dans Elasticsearch. Installez-le à l'aide d'une commande telle que la suivante:
python3 -m pip install 'eland[pytorch]'
Télécharger et analyser des données
Ce tutoriel utilise un petit ensemble de données de 132 articles obtenus à partir des sites Web BBC News et Guardian via leurs flux RSS.
Celles-ci ont été transformées en un fichier json formaté comme requis par la méthode de téléchargement en bloc Elasticsearch.
Exécutez le script upload.sh
, qui effectue les opérations suivantes:
-
Télécharge le modèle NLP dans Elasticsearch.
-
Crée un pipeline de traitement de données dans Elasticsearch qui prend toutes les données entrantes et les analyse pour obtenir des termes significatifs.
-
Télécharge les données préformatées dans Elasticsearch et les transmet via le pipeline pour analyse.
Comme il s'agit d'une démonstration, nous nous connectons de manière non sécurisée à votre base de données. Pour la production, utilisez des connexions sécurisées.
Pour exécuter le script, vérifiez que vous vous trouvez dans le répertoire scripts
et utilisez la commande suivante:
ES_PASSWORD=`cat config.json | jq -r .es_password.value`
ES_PORT=`cat config.json | jq -r .es_port.value`
ES_HOST=`cat config.json | jq -r .es_host.value`
export ES="https://admin:${ES_PASSWORD}@${ES_HOST}:${ES_PORT}"
./upload.sh
Interroger vos données
Vous disposez à présent d'un index nommé test
qui comporte 132 enregistrements. Chacun de ces enregistrements contient les données de nouvelles (ID article, titre et récapitulatif) et un objet supplémentaire appelé tags
.
C'est là que le modèle d'apprentissage automatique a inséré les personnes (PER), les emplacements (LOC) ou les organisations (ORG) qu'il a trouvées dans le texte.
L'index contient également un autre objet, appelé ml
, qui montre le fonctionnement du modèle. Par exemple, il vous indique la probabilité d'exactitude qu'il a affectée à chacun des termes qu'il a trouvés.
Par exemple, utilisez cette requête pour extraire un enregistrement unique à inspecter:
curl -k "$ES/test/_search?size=1" | jq .
Ce modèle d'apprentissage automatique a généré des informations précieuses. Par exemple, si vous exécutez un site Web d'informations, vous pouvez générer des pages de contenu basé sur des balises. Si, par exemple, vos utilisateurs accèdent à une page telle que www.mynewssite.com/tag/rishi-sunak, tout ce que votre système doit faire, c'est effectuer une recherche à l'aide de cette balise dans l'index des articles de presse pour extraire une liste de ceux qui mentionnent Rishi Sunak:
curl -kX POST -d@body.json -H "Content-Type: application/json" "$ES/test/_search" | jq .
Il existe un fichier body.json
dans le répertoire scripts
que vous pouvez utiliser pour effectuer différentes recherches.
Conclusion
Ce tutoriel montre comment utiliser Databases for Elasticsearch pour exploiter la puissance de l'apprentissage automatique afin de générer des informations supplémentaires précieuses à partir de vos données. Nous espérons que vous pourrez l'utiliser comme tremplin pour explorer d'autres façons d'augmenter et de créer de la valeur à partir de vos données.
Pour arrêter d'encourir des frais, n'oubliez pas de supprimer toutes vos infrastructures déployées. Dans votre répertoire terraform, utilisez la commande suivante:
terraform destroy