Introduction à SpaCy
SpaCy est une bibliothèque de pointe pour le traitement du langage naturel (Natural Language Processing, NLP), conçue spécialement pour une utilisation en production. Développée par l'équipe d'Explosion AI, cette bibliothèque est devenue la référence de facto pour les solutions NLP industrielles grâce à ses hautes performances, sa précision et sa simplicité d'utilisation.
Principaux avantages de SpaCy
Architecture et performances
SpaCy est construite en langage Cython, ce qui lui confère une vitesse exceptionnelle pour le traitement des données textuelles. La bibliothèque utilise des algorithmes et des structures de données optimisés, permettant de traiter des millions de tokens par minute sur du matériel standard.
Support multilingue
La bibliothèque prend en charge plus de 20 langues, dont le français, l'anglais, le chinois, le japonais, l'arabe et bien d'autres. Chaque langue dispose de modèles pré-entraînés spécialisés, optimisés pour ses particularités linguistiques.
Modèles prêts à l'emploi
SpaCy propose des modèles pré-entraînés de différentes tailles (small, medium, large), permettant de choisir le meilleur équilibre entre vitesse et précision pour chaque tâche.
Installation et configuration de SpaCy
Installation de la bibliothèque de base
pip install spacy
Téléchargement des modèles linguistiques
Pour l'anglais :
python -m spacy download en_core_web_sm
python -m spacy download en_core_web_md
python -m spacy download en_core_web_lg
Pour le français :
python -m spacy download fr_core_news_sm
python -m spacy download fr_core_news_md
python -m spacy download fr_core_news_lg
Connexion et initialisation
import spacy
# Chargement du modèle
nlp = spacy.load("fr_core_news_sm")
# Traitement du texte
doc = nlp("Apple envisage d'acheter une startup au Royaume-Uni.")
Composants principaux du pipeline SpaCy
Tokenisation
SpaCy découpe automatiquement le texte en tokens, en tenant compte des spécificités de la langue, de la ponctuation et des caractères spéciaux :
doc = nlp("Ne t'inquiète pas, ça marche !")
for token in doc:
print(token.text, token.is_alpha, token.is_punct, token.like_num)
Analyse morphologique
Chaque token contient des informations morphologiques riches :
for token in doc:
print(f"Mot : {token.text}")
print(f"Lemme : {token.lemma_}")
print(f"Partie du discours : {token.pos_}")
print(f"Étiquette : {token.tag_}")
print(f"Caractéristiques morphologiques : {token.morph}")
Analyse syntaxique
SpaCy construit un arbre de dépendances pour chaque phrase :
for token in doc:
print(f"{token.text} <- {token.dep_} <- {token.head.text}")
print(f"Enfants : {[child.text for child in token.children]}")
Lemmatisation et racinisation
Lemmatisation dans SpaCy
SpaCy offre une lemmatisation de haute qualité prête à l'emploi :
doc = nlp("Les chats courent et sautent")
for token in doc:
print(f"{token.text} -> {token.lemma_}")
Alternatives pour la racinisation
Bien que SpaCy n'inclue pas la racinisation directement, vous pouvez l'intégrer avec d'autres bibliothèques :
from nltk.stem import PorterStemmer
stemmer = PorterStemmer()
def add_stemming(doc):
for token in doc:
token._.stem = stemmer.stem(token.text)
return doc
# Ajout comme attribut personnalisé
spacy.tokens.Token.set_extension("stem", default=None)
Reconnaissance des parties du discours
Étiquettes POS universelles
SpaCy utilise un système universel