SpaCy – NLP avancé pour Python

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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

Recommendations