avatarKezhan SHI

Summary

L'article fournit des solutions pour résoudre l'erreur "No module named 'fr_core_news_sm'" lors du déploiement d'une application Streamlit utilisant spaCy.

Abstract

Lors de l'utilisation de spaCy pour le traitement du langage naturel dans une application Streamlit, les développeurs peuvent être confrontés à une erreur indiquant l'absence du modèle spaCy 'fr_core_news_sm'. L'article présente deux méthodes pour remédier à ce problème : la première consiste à charger le modèle spaCy directement, ce qui peut ne pas être idéal pour le déploiement, et la deuxième, plus fiable, utilise le fichier requirements.txt pour spécifier les dépendances, y compris les modèles spaCy nécessaires. En s'assurant que la version du modèle correspond à celle de spaCy, comme spécifié dans le fichier requirements.txt, les développeurs peuvent garantir un déploiement sans heurts de leur application Streamlit dans divers environnements.

Opinions

  • L'erreur "No module named 'fr_core_news_sm'" est courante et peut laisser les développeurs perplexes.
  • L'utilisation de la commande python -m spacy download fr_core_news_sm est recommandée pour les environnements de développement locaux, mais elle peut ne pas être efficace dans tous les scénarios de déploiement.
  • L'approche consistant à utiliser os.system pour télécharger le modèle de manière programmatique est mentionnée comme une solution potentielle, mais elle n'est pas recommandée pour des environnements tels que share.streamlit.io.
  • La méthode préférée pour le déploiement est l'utilisation du fichier requirements.txt, car elle est considérée comme plus fiable et adaptée à différents environnements de déploiement.
  • Il est important de s'assurer que la version du modèle spaCy dans le fichier requirements.txt correspond à la version de spaCy installée pour éviter les problèmes de compatibilité.

Comment télécharger les modèles spaCy lors du déploiement avec Streamlit

Ce que j’ai appris avec l’erreur “No module named ‘fr_core_news_sm’”

Lors du déploiement d’une application Streamlit qui utilise spaCy pour le traitement du langage naturel, vous pouvez rencontrer une erreur courante : No module named 'fr_core_news_sm'. Cette erreur survient lorsque le modèle spaCy spécifique, dans ce cas, fr_core_news_sm, est manquant dans l’environnement de déploiement. Dans cet article, nous explorerons deux solutions pour résoudre ce problème et garantir un processus de déploiement fluide.

Problème : No module named ‘fr_core_news_sm’

Le message d’erreur No module named 'fr_core_news_sm' laisse souvent les développeurs Streamlit perplexes. Cette erreur se produit car le modèle spaCy spécifique, dans ce cas, fr_core_news_sm, est absent de l’environnement de déploiement.

Solution 1 : Chargement spaCy, mais pas pour le déploiement

Dans un bloc-notes Jupyter ou un environnement de développement local, vous pouvez facilement charger le modèle spaCy avec le code suivant :

import spacy
nlp = spacy.load("fr_core_news_sm")

Si vous travailliez dans un terminal, vous pourriez installer le modèle à l’aide de la commande suivante :

python -m spacy download fr_core_news_sm

Certains développeurs ont également essayé d’exécuter la commande de téléchargement de manière programmatique en utilisant os.system. Cependant, cette approche peut ne pas fonctionner de manière transparente dans tous les scénarios de déploiement, notamment dans des environnements tels que share.streamlit.io.

Solution 2 : Utilisation de requirements.txt

Une solution plus fiable, adaptée au déploiement Streamlit et à d’autres environnements, consiste à utiliser le fichier requirements.txt. Alors que la plupart des développeurs savent que ce fichier sert à spécifier les dépendances des packages Python, il est moins connu qu'il peut également être utilisé pour télécharger des fichiers spécifiques, tels que des modèles spaCy.

Voici comment vous pouvez spécifier l’exigence du modèle spaCy dans votre fichier requirements.txt :

spacy==3.6.0
https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.6.0/en_core_web_sm-3.6.0-py3-none-any.whl
https://github.com/explosion/spacy-models/releases/download/fr_core_news_sm-3.6.0/fr_core_news_sm-3.6.0-py3-none-any.whl

Dans cet exemple, nous nous assurons que la version spaCy (spacy==3.6.0) correspond à la version du modèle (fr_core_news_sm-3.6.0). Vous pouvez trouver une liste des modèles spaCy sur la page officielle des modèles spaCy : https://spacy.io/models/en.

Pour chaque modèle, vous pouvez accéder à des informations détaillées et au lien approprié pour le fichier. Par exemple, le lien pour le modèle ‘fr_core_news_sm’ en version 3.6.0 se trouve ici : https://github.com/explosion/spacy-models/releases/tag/fr_core_news_sm-3.6.0.

Conclusion

Le déploiement d’applications Streamlit qui dépendent des modèles spaCy peut être un processus fluide en veillant à ce que les modèles requis soient accessibles. L’utilisation d’un fichier requirements.txt pour spécifier les versions des modèles spaCy et les liens de téléchargement est une solution fiable et portable, garantissant que votre application fonctionne sans problème dans divers environnements de déploiement.

Recommended from ReadMedium