Construire une application de résumé de texte
Aperçu
Dans ce guide, vous apprendrez à construire et à exécuter une application de résumé de texte. Vous construirez l'application en utilisant Python avec le Bert Extractive Summarizer, puis vous configurerez l'environnement et exécuterez l'application en utilisant Docker.
L'application de résumé de texte d'exemple utilise le Bert Extractive Summarizer. Cet outil utilise la bibliothèque de transformateurs Pytorch de HuggingFace pour exécuter des résumés extractifs. Cela fonctionne en intégrant d'abord les phrases, puis en exécutant un algorithme de clustering, en trouvant les phrases les plus proches des centroïdes du cluster.
Prérequis
- Vous avez installé la dernière version de Docker Desktop. Docker ajoute régulièrement de nouvelles fonctionnalités et certaines parties de ce guide peuvent ne fonctionner qu'avec la dernière version de Docker Desktop.
- Vous avez un client Git. Les exemples de cette section utilisent un client Git en ligne de commande, mais vous pouvez utiliser n'importe quel client.
Obtenir l'application d'exemple
-
Ouvrez un terminal et clonez le dépôt de l'application d'exemple en utilisant la commande suivante.
$ git clone https://github.com/harsh4870/Docker-NLP.git
-
Vérifiez que vous avez cloné le dépôt.
Vous devriez voir les fichiers suivants dans votre répertoire
Docker-NLP
.01_sentiment_analysis.py 02_name_entity_recognition.py 03_text_classification.py 04_text_summarization.py 05_language_translation.py entrypoint.sh requirements.txt Dockerfile README.md
Explorer le code de l'application
Le code source de l'application de résumé de texte se trouve dans le fichier Docker-NLP/04_text_summarization.py
. Ouvrez 04_text_summarization.py
dans un éditeur de texte ou de code pour explorer son contenu dans les étapes suivantes.
-
Importez les bibliothèques requises.
from summarizer import Summarizer
Cette ligne de code importe la classe
Summarizer
du paquetsummarizer
, essentielle pour votre application de résumé de texte. Le module de résumé implémente le Bert Extractive Summarizer, en tirant parti de la bibliothèque de transformateurs Pytorch de HuggingFace, réputée dans le domaine du NLP (Traitement du Langage Naturel). Cette bibliothèque offre un accès à des modèles pré-entraînés comme BERT, qui a révolutionné les tâches de compréhension du langage, y compris le résumé de texte.Le modèle BERT, ou Bidirectional Encoder Representations from Transformers, excelle dans la compréhension du contexte dans le langage, en utilisant un mécanisme connu sous le nom d'"attention" pour déterminer l'importance des mots dans une phrase. Pour le résumé, le modèle intègre les phrases puis utilise un algorithme de clustering pour identifier les phrases clés, celles les plus proches des centroïdes de ces clusters, capturant efficacement les idées principales du texte.
-
Spécifiez le bloc d'exécution principal.
if __name__ == "__main__":
Cette expression idiomatique Python garantit que le bloc de code suivant ne s'exécute que si ce script est le programme principal. Elle offre une flexibilité, permettant au script de fonctionner à la fois comme un programme autonome et comme un module importé.
-
Créez une boucle infinie pour une saisie continue.
while True: input_text = input("Entrez le texte pour le résumé (tapez 'exit' pour terminer) : ") if input_text.lower() == 'exit': print("Sortie...") break
Une boucle infinie vous invite continuellement à saisir du texte, garantissant l'interactivité. La boucle se termine lorsque vous tapez
exit
, vous permettant de contrôler efficacement le flux de l'application. -
Créez une instance de Summarizer.
bert_model = Summarizer()
Ici, vous créez une instance de la classe Summarizer nommée
bert_model
. Cette instance est maintenant prête à effectuer la tâche de résumé en utilisant le modèle BERT, simplifiant les processus complexes d'intégration de phrases et de clustering en une interface accessible. -
Générez et imprimez un résumé.
summary = bert_model(input_text) print(summary)
Votre texte d'entrée est traité par l'instance
bert_model
, qui renvoie ensuite une version résumée. Cela démontre la puissance des bibliothèques de haut niveau de Python pour permettre des opérations complexes avec un minimum de code. -
Créez
requirements.txt
. L'application d'exemple contient déjà le fichierrequirements.txt
pour spécifier les modules nécessaires que l'application importe. Ouvrezrequirements.txt
dans un éditeur de code ou de texte pour explorer son contenu.... # 04 résumé_de_texte bert-extractive-summarizer==0.10.1 ... torch==2.1.2
Les modules
bert-extractive-summarizer
ettorch
sont requis pour l'application de résumé de texte. Le module de résumé génère un résumé du texte d'entrée. Cela nécessite PyTorch car le modèle BERT sous-jacent, qui est utilisé pour générer le résumé, est implémenté en PyTorch.
Explorer l'environnement de l'application
Vous utiliserez Docker pour exécuter l'application dans un conteneur. Docker vous permet de conteneuriser l'application, fournissant un environnement cohérent et isolé pour son exécution. Cela signifie que l'application fonctionnera comme prévu dans son conteneur Docker, quelles que soient les différences du système sous-jacent.
Pour exécuter l'application dans un conteneur, un Dockerfile est requis. Un Dockerfile est un document texte qui contient toutes les commandes que vous appelleriez sur la ligne de commande pour assembler une image. Une image est un modèle en lecture seule avec des instructions pour créer un conteneur Docker.
L'application d'exemple contient déjà un Dockerfile
. Ouvrez le Dockerfile
dans un éditeur de code ou de texte pour explorer son contenu.
Les étapes suivantes expliquent chaque partie du Dockerfile
. Pour plus de détails, consultez la
référence du Dockerfile.
-
Spécifiez l'image de base.
FROM python:3.8-slim
Cette commande définit la base de la construction.
python:3.8-slim
est une version légère de l'image Python 3.8, optimisée pour la taille et la vitesse. L'utilisation de cette image légère réduit la taille globale de votre image Docker, ce qui entraîne des téléchargements plus rapides et moins de surface pour les vulnérabilités de sécurité. Ceci est particulièrement utile pour une application basée sur Python où vous n'avez peut-être pas besoin de l'image Python standard complète. -
Définissez le répertoire de travail.
WORKDIR /app
WORKDIR
définit le répertoire de travail actuel dans l'image Docker. En le définissant sur/app
, vous vous assurez que toutes les commandes suivantes dans le Dockerfile (commeCOPY
etRUN
) sont exécutées dans ce répertoire. Cela aide également à organiser votre image Docker, car tous les fichiers liés à l'application sont contenus dans un répertoire spécifique. -
Copiez le fichier des exigences dans l'image.
COPY requirements.txt /app
La commande
COPY
transfère le fichierrequirements.txt
de votre machine locale dans l'image Docker. Ce fichier répertorie toutes les dépendances Python -
Installez les dépendances Python dans l'image.
RUN pip install --no-cache-dir -r requirements.txt
Cette ligne utilise
pip
, l'installateur de paquets Python, pour installer les packages listés dansrequirements.txt
. L'option--no-cache-dir
désactive le cache, ce qui réduit la taille de l'image Docker en ne stockant pas les données de cache inutiles. -
Exécutez des commandes supplémentaires.
RUN python -m spacy download en_core_web_sm
Cette étape est spécifique aux applications NLP qui nécessitent la bibliothèque spaCy. Il télécharge le modèle
en_core_web_sm
, qui est un petit modèle de langage anglais pour spaCy. Bien que ce n'est pas nécessaire pour cette application, il est inclus pour la compatibilité avec d'autres applications qui pourraient utiliser ce Dockerfile. -
Copiez le code de l'application dans l'image.
COPY *.py /app COPY entrypoint.sh /app
Ces commandes copient vos scripts Python et le script
entrypoint.sh
dans le répertoire/app
de l'image. C'est crucial car le conteneur a besoin de ces scripts pour exécuter l'application. Le scriptentrypoint.sh
est particulièrement important car il indique comment l'application démarre à l'intérieur du conteneur. -
Définissez les permissions pour le script
entrypoint.sh
.RUN chmod +x /app/entrypoint.sh
Cette commande modifie les permissions du fichier
entrypoint.sh
, le rendant exécutable. Cette étape est nécessaire pour s'assurer que le conteneur Docker peut exécuter ce script pour démarrer l'application. -
Définissez le point d'entrée.
ENTRYPOINT ["/app/entrypoint.sh"]
L'instruction
ENTRYPOINT
configure le conteneur pour exécuterentrypoint.sh
comme son exécutable par défaut. Cela signifie que lorsque le conteneur démarre, il exécute automatiquement le script.Vous pouvez explorer le script
entrypoint.sh
en l'ouvrant dans un éditeur de code ou de texte. Comme l'échantillon contient plusieurs applications, le script vous permet de spécifier quelle application exécuter lorsque le conteneur démarre.
Exécuter l'application
Pour exécuter l'application en utilisant Docker:
-
Construire l'image.
Dans un terminal, exécutez la commande suivante à l'intérieur du répertoire où se trouve le
Dockerfile
.$ docker build -t basic-nlp .
La commande suivante est une décomposition de la commande:
docker build
: C'est la commande principale utilisée pour construire une image Docker à partir d'un Dockerfile et d'un contexte. Le contexte est généralement un ensemble de fichiers à un emplacement spécifié, souvent le répertoire contenant le Dockerfile.-t basic-nlp
: C'est une option pour étiqueter l'image. La marque-t
signifie tag. Il attribue un nom à l'image, ce qui est dans ce casbasic-nlp
. Les étiquettes sont une manière pratique de faire référence aux images plus tard, surtout lors de leur envoi vers un registre ou lors de la création de conteneurs..
: C'est la dernière partie de la commande et spécifie le contexte de construction. Le point (.
) indique le répertoire actuel. Docker va chercher un Dockerfile dans ce répertoire. Le contexte de construction (le répertoire actuel, dans ce cas) est envoyé au daemon Docker pour permettre la construction. Il inclut tous les fichiers et sous-répertoires dans le répertoire spécifié.
Pour plus de détails, consultez la référence de la CLI docker build.
Docker affiche plusieurs journaux à votre console lors de la construction de l'image. Vous verrez qu'il télécharge et installe les dépendances. En fonction de votre connexion réseau, cela peut prendre plusieurs minutes. Docker a une fonctionnalité de mise en cache, donc les constructions suivantes peuvent être plus rapides. La console retourne à l'invite de commande lorsqu'elle est terminée.
-
Exécuter l'image en tant que conteneur.
Dans un terminal, exécutez la commande suivante.
$ docker run -it basic-nlp 04_text_summarization.py
La commande suivante est une décomposition de la commande:
docker run
: C'est la commande principale utilisée pour créer un nouveau conteneur à partir d'une image Docker.-it
: C'est une combinaison de deux options:-i
ou--interactive
: Cela maintient l'entrée standard (STDIN) ouverte même si elle n'est pas attachée. Cela permet au conteneur de rester en cours d'exécution en premier plan et d'être interactif.-t
ou--tty
: Cela alloue un pseudo-TTY, essentiellement simulant un terminal, comme une invite de commande ou un shell. C'est ce qui vous permet d'interagir avec l'application à l'intérieur du conteneur.
basic-nlp
: Cela spécifie le nom de l'image Docker à utiliser pour créer le conteneur. Dans ce cas, c'est l'image nomméebasic-nlp
que vous avez créée avec la commandedocker build
.04_text_summarization.py
: C'est le script que vous souhaitez exécuter à l'intérieur le conteneur Docker. Il est transmis au scriptentrypoint.sh
, qui l'exécute lorsque le conteneur démarre.
Pour plus de détails, consultez la référence de la CLI docker run.
NotePour les utilisateurs Windows, vous pouvez obtenir une erreur lors de l'exécution du conteneur. Vérifiez que les fins de ligne dans le
entrypoint.sh
sontLF
(\n
) et nonCRLF
(\r\n
), puis reconstruisez l'image. Pour plus de détails, consultez [Éviter les erreurs de syntaxe inattendues, utiliser des fins de ligne Unix pour les fichiers dans les conteneurs](/desktop/troubleshoot-and-support/troubleshoot/topics/#Unexpected-syntax-errors-use-Unix-style-line endings-for-files-in-containers).Vous verrez la suivante dans votre console après le démarrage du conteneur.
Entrez le texte pour le résumé (tapez 'exit' pour terminer) :
-
Tester l'application.
Entrez du texte pour obtenir le résumé de texte.
Entrez le texte pour le résumé (tapez 'exit' pour terminer) : Intelligence artificielle (IA) est une branche de la science informatique qui vise à créer des machines capables de comportement intelligent. Ces machines sont conçues pour imiter les fonctions cognitives humaines telles que l'apprentissage, la résolution de problèmes et la prise de décision. Les technologies IA peuvent être classées en deux types principaux : IA étroite ou faible, conçue pour une tâche spécifique, et IA générale ou forte, qui possède la capacité d'apprendre, d'apprendre et d'appliquer des connaissances dans divers domaines. L'une des approches les plus populaires en IA est l'apprentissage machine, où les algorithmes sont entraînés sur des grands ensembles de données pour reconnaître les motifs et faire des prédictions. Intelligence artificielle (IA) est une branche de la science informatique qui vise à créer des machines capables de comportement intelligent. Ces machines sont conçues pour imiter les fonctions cognitives humaines telles que l'apprentissage, la résolution de problèmes et la prise de décision.
Résumé
Dans ce guide, vous avez appris à construire et à exécuter une application de résumé de texte. Vous avez appris à construire l'application en utilisant Python avec Bert Extractive Summarizer, puis à configurer l'environnement et exécuter l'application en utilisant Docker.
Informations connexes:
- Référence de la CLI docker
- Référence du Dockerfile
- Bert Extractive Summarizer
- PyTorch
- Documentation Python
Étapes suivantes
Explorez plus guides de traitement du langage naturel.