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.whlDans 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.






