Polydesk-logotype
Polydesk.ai — Header

POS Tagging (Part-of-Speech Tagging)

Le POS tagging (Part-of-Speech tagging, ou étiquetage morphosyntaxique) est une tâche de traitement automatique du langage naturel qui consiste à attribuer à chaque mot (ou token) d’un texte sa catégorie grammaticale : nom, verbe, adjectif, adverbe, pronom, etc.

Vous tapez une phrase. Le modèle lit chaque mot, analyse son contexte, et lui colle une étiquette : NOUN, VERB, ADJ, ADV, PRON, DET… C’est la brique la plus fondamentale de toute pipeline NLP. Sans POS tagging fiable, l’analyse syntaxique, la reconnaissance d’entités nommées, la sentiment analysis et la traduction automatique fonctionnent à l’aveugle.

L’étiquetage grammatical semble basique, mais il résout un problème que les humains gèrent sans y penser : la polysémie contextuelle. Le mot « marche » est-il un nom ou un verbe ? « Bien » est-il un adverbe ou un nom ? Seul le contexte tranche, et c’est exactement ce que fait un POS tagger performant.

POS Tagging en bref
Catégorie
Tâche NLP fondamentale (étiquetage de séquence)
Input
Texte brut tokenisé
Output
Chaque token étiqueté avec sa catégorie grammaticale
Tagsets standards
Penn Treebank (45 tags), Universal Dependencies (17 tags)
Précision SOTA
97-98% sur texte formel (anglais, Penn Treebank)
Outils principaux
spaCy, Stanza, Flair, NLTK, Hugging Face Transformers
Prérequis
Tokenisation du texte en amont

Comment fonctionne le POS tagging

Le POS tagging est une tâche d’étiquetage de séquence (sequence labeling). Pour chaque token d’une phrase, le modèle prédit l’étiquette grammaticale la plus probable compte tenu du contexte environnant.

Prenons un exemple concret. La phrase « Le chat mange la souris rapidement » serait étiquetée ainsi :

TokenTag (UD)Catégorie
LeDETDéterminant
chatNOUNNom commun
mangeVERBVerbe
laDETDéterminant
sourisNOUNNom commun
rapidementADVAdverbe

Ce qui paraît trivial pour un humain est un vrai défi algorithmique. Le mot « souris » pourrait être un nom (l’animal) ou un verbe conjugué (« tu souris »). C’est le contexte syntaxique (ici, précédé d’un déterminant « la ») qui lève l’ambiguïté. Les modèles modernes capturent ces dépendances contextuelles grâce aux architectures de réseaux de neurones, en particulier les Transformers.

Place dans la pipeline NLP

Le POS tagging intervient tôt dans la chaîne de traitement, typiquement juste après la tokenisation. Voici l’ordre habituel d’une pipeline NLP classique :

1. Tokenisation : découpage du texte en tokens.
2. POS tagging : attribution de la catégorie grammaticale à chaque token.
3. Lemmatisation : réduction à la forme canonique (utilise le POS tag pour choisir le bon lemme).
4. Analyse syntaxique (parsing) : construction de l’arbre de dépendances.
5. NER : reconnaissance d’entités nommées.
6. Tâches applicatives : sentiment analysis, classification de texte, extraction d’information, etc.

Le POS tag alimente directement les étapes suivantes. Par exemple, la lemmatisation de « mangées » produit « manger » uniquement si le tagger a correctement identifié un verbe (et non un nom). L’analyse syntaxique s’appuie sur les tags pour construire l’arbre de dépendances grammaticales.


Les tagsets : Penn Treebank vs Universal Dependencies

Un tagset est l’ensemble fini d’étiquettes utilisées pour annoter les mots. Deux standards dominent le domaine.

Penn Treebank (PTB)

Le Penn Treebank est le tagset historique de référence pour l’anglais. Développé à l’université de Pennsylvanie entre 1989 et 1996, il comprend 36 tags grammaticaux et 12 tags supplémentaires pour la ponctuation et les symboles. C’est le benchmark classique pour évaluer les POS taggers en anglais : on entraîne sur les sections 0 à 18, on valide sur 19 à 21, et on teste sur 22 à 24 du corpus Wall Street Journal.

Ses tags sont fins (fine-grained) : il distingue par exemple VB (verbe base), VBD (passé), VBG (gérondif), VBN (participe passé), VBP (présent non 3e personne) et VBZ (présent 3e personne du singulier). Cette granularité est utile pour l’anglais mais se transpose mal aux autres langues.

Tag PTBDescriptionExemple
NNNom singulier ou massedog, music
NNSNom plurieldogs, children
NNPNom propre singulierParis, Google
VBVerbe, forme de baserun, eat
VBDVerbe, passéran, ate
VBGVerbe, gérondif/participe présentrunning, eating
VBNVerbe, participe passéeaten, broken
JJAdjectifbig, fast
RBAdverbequickly, very
DTDéterminantthe, a, these
INPréposition ou conjonction de subordinationin, of, that
PRPPronom personnelI, he, they
CCConjonction de coordinationand, but, or

Universal Dependencies (UD)

Universal Dependencies est un projet international qui définit un cadre d’annotation syntaxique multilingue cohérent. Son tagset UPOS (Universal POS) comprend 17 catégories conçues pour fonctionner sur plus de 100 langues. C’est le standard moderne. Les treebanks UD couvrent aujourd’hui plus de 200 corpus dans plus de 100 langues.

Tag UPOSCatégorieExemples (français)
ADJAdjectifgrand, bleu, rapide
ADPAdposition (préposition/postposition)dans, sur, à
ADVAdverberapidement, très, bien
AUXAuxiliaireêtre, avoir, sera
CCONJConjonction de coordinationet, ou, mais
DETDéterminantle, un, cette
INTJInterjectionoh, bravo, hélas
NOUNNom communchat, maison, idée
NUMNuméraldeux, 42, premier
PARTParticulene, n’ (en français)
PRONPronomje, il, celui-ci
PROPNNom propreParis, Claude, Google
PUNCTPonctuation. , ! ? ;
SCONJConjonction de subordinationque, si, lorsque
SYMSymbole$, %, @
VERBVerbemanger, courir, penser
XAutremots étrangers, abréviations inclassables
Quel tagset choisir ? Si vous travaillez uniquement en anglais dans un contexte de recherche, le Penn Treebank reste pertinent pour comparer vos résultats à la littérature. Pour tout le reste (multilingue, production, projets en français), utilisez Universal Dependencies. C’est le standard que supportent nativement spaCy, Stanza et Flair.

En pratique, les outils modernes comme spaCy fournissent les deux niveaux : un tag pos_ UPOS (coarse-grained) et un tag tag_ fin (fine-grained, souvent basé sur Penn Treebank pour l’anglais ou un tagset spécifique à la langue). Vous pouvez utiliser l’un ou l’autre selon la granularité dont vous avez besoin.


Les méthodes de POS tagging : des règles aux Transformers

L’histoire du POS tagging reflète l’évolution de tout le NLP : des règles écrites à la main vers l’apprentissage statistique, puis le deep learning.

Approche par règles

Les premiers taggers, comme celui d’Eric Brill (1995), utilisaient des règles linguistiques définies manuellement. Exemple : « si le mot se termine par -ment et est précédé d’un verbe, c’est probablement un adverbe ». Ces systèmes étaient explicables et fonctionnaient bien dans des domaines contrôlés, mais ils exigeaient un travail d’ingénierie considérable pour chaque langue et s’adaptaient mal aux variations de style.

Cette approche n’est plus utilisée en production, mais elle reste utile pour l’enseignement et pour comprendre les fondamentaux de la linguistique computationnelle.

Approches statistiques

Les modèles statistiques ont dominé le domaine des années 1990 aux années 2010. Ils apprennent les probabilités d’assignation de tags à partir de grands corpus annotés.

Hidden Markov Models (HMM) : modèle génératif qui calcule la séquence de tags la plus probable en se basant sur deux distributions : la probabilité d’émission (quel mot pour un tag donné) et la probabilité de transition (quel tag suit un autre tag). L’algorithme de Viterbi permet de trouver efficacement la meilleure séquence. Les HMM atteignaient déjà environ 96% de précision sur le Penn Treebank.

Maximum Entropy Markov Models (MEMM) : modèle discriminatif qui conditionne la prédiction du tag sur des features observées (préfixe, suffixe, majuscule, tag précédent…). Plus flexible que les HMM car il peut intégrer des caractéristiques arbitraires sans avoir à modéliser leurs distributions.

Conditional Random Fields (CRF) : extension des MEMM qui résout le problème du label bias. Les CRF modélisent la distribution de la séquence entière conjointement, ce qui permet de capturer des dépendances globales. Ils ont longtemps été l’état de l’art et restent utilisés comme couche finale dans certaines architectures neuronales modernes (BiLSTM-CRF).

Approches par deep learning

Le deep learning a transformé le POS tagging à partir de 2015 environ, en supprimant le besoin de feature engineering manuel.

BiLSTM (Bidirectional Long Short-Term Memory) : les réseaux LSTM bidirectionnels lisent la phrase dans les deux sens et apprennent des représentations contextuelles de chaque token. Combinés avec une couche CRF en sortie (architecture BiLSTM-CRF), ils ont défini l’état de l’art pendant plusieurs années. Des résultats de précision autour de 97% sur le Penn Treebank étaient courants avec cette architecture.

Flair Embeddings : les embeddings contextuels de Flair (Akbik et al., 2018) capturent la morphologie à l’échelle du caractère. Le modèle POS anglais de Flair, basé sur des embeddings Flair et une architecture LSTM-CRF, atteint un F1-score de 98,19% sur le corpus OntoNotes.

Transformers (BERT et dérivés) : les modèles de type BERT ont poussé encore plus loin les performances. Un modèle BERT fine-tuné sur le POS tagging exploite son mécanisme d’attention pour capturer des dépendances longue distance que les LSTM peinent à modéliser. Les variantes transformers des pipelines spaCy (modèles *_trf) et Stanza utilisent cette approche.

Le POS tagging a-t-il atteint son plafond ? Sur du texte formel bien structuré (articles de presse, documentation), la précision des meilleurs modèles avoisine 97-98%, ce qui approche le niveau d’accord inter-annotateurs humains. L’enjeu s’est déplacé vers les cas difficiles : réseaux sociaux, textes bruités, langues peu dotées, et code-switching (mélange de langues dans une même phrase).

Tableau comparatif des méthodes

MéthodePrécision typique (anglais, PTB)AvantagesInconvénients
Règles (Brill)~95%Explicable, pas de données annotées nécessairesMaintenance lourde, mal adaptable
HMM~96%Simple, rapideFeatures limitées, indépendance naïve
CRF~97%Features riches, modélisation séquentielleFeature engineering manuel
BiLSTM-CRF~97,5%Pas de feature engineering, contexte bidirectionnelPlus lent à entraîner
Flair (LSTM-CRF + embeddings caractères)~98,2%Embeddings morphologiques richesInférence plus lente que spaCy
Transformer (BERT fine-tuné)~97,8-98%Contexte global, transfer learningLourd en mémoire et en calcul

Outils et bibliothèques pour le POS tagging

Voici les outils que vous utiliserez concrètement en production ou en recherche.

spaCy

spaCy (version 3.8 actuellement) est la bibliothèque de référence pour le NLP en production. Open-source sous licence MIT, elle est développée par Explosion. spaCy intègre le POS tagging dans sa pipeline complète (tokenisation, POS, lemmatisation, parsing, NER) et optimise la vitesse d’inférence.

spaCy propose plusieurs tailles de modèles pour chaque langue : sm (petit, rapide), md (moyen), lg (grand, avec word vectors) et trf (basé sur un Transformer, le plus précis mais le plus lent). Les modèles anglais sont entraînés sur le corpus OntoNotes 5.0 et utilisent le tagset Penn Treebank pour les tags fins et Universal Dependencies pour les tags UPOS.

import spacy

nlp = spacy.load("fr_core_news_lg")  # modèle français large
doc = nlp("Le chat mange la souris rapidement")

for token in doc:
    print(f"{token.text:15} {token.pos_:8} {token.tag_:8} {token.dep_}")

# Le              DET      DET      det
# chat            NOUN     NOUN     nsubj
# mange           VERB     VERB     ROOT
# la              DET      DET      det
# souris          NOUN     NOUN     obj
# rapidement      ADV      ADV      advmod
Conseil pratique Pour du français en production, fr_core_news_lg offre le meilleur compromis vitesse/précision. Si vous avez besoin de la meilleure précision possible et que la latence n’est pas critique, utilisez fr_dep_news_trf (modèle Transformer).

Stanza (Stanford NLP)

Stanza est la bibliothèque Python officielle du Stanford NLP Group. Elle fournit des modèles neuronaux pré-entraînés pour plus de 70 langues, tous basés sur les treebanks Universal Dependencies. Stanza est optimisée pour la précision plutôt que pour la vitesse d’inférence.

Les modèles Stanza utilisent des architectures BiLSTM avec des embeddings de caractères et atteignent des performances proches de l’état de l’art sur la plupart des langues UD. La bibliothèque supporte aussi l’entraînement de modèles personnalisés sur vos propres données annotées au format CoNLL-U.

import stanza

stanza.download('fr')  # télécharge le modèle français
nlp = stanza.Pipeline('fr')

doc = nlp("Le chat mange la souris rapidement")
for sentence in doc.sentences:
    for word in sentence.words:
        print(f"{word.text:15} {word.upos:8} {word.xpos or '-':8} {word.deprel}")

Flair

Flair, développée par l’université Humboldt de Berlin, se distingue par ses embeddings contextuels au niveau du caractère. Son modèle POS anglais (flair/pos-english) atteint un F1-score de 98,19% sur OntoNotes, ce qui en fait l’un des taggers les plus précis disponibles. Le modèle multilingue (flair/upos-multi) couvre 12 langues avec un F1-score de 96,87%.

from flair.data import Sentence
from flair.models import SequenceTagger

tagger = SequenceTagger.load("flair/upos-multi")
sentence = Sentence("Le chat mange la souris rapidement")
tagger.predict(sentence)

for token in sentence:
    print(f"{token.text:15} {token.get_label('upos').value}")

NLTK

NLTK (Natural Language Toolkit) est la bibliothèque historique du NLP en Python. Son POS tagger par défaut utilise un modèle Maximum Entropy entraîné sur le Penn Treebank. NLTK est idéal pour l’apprentissage et le prototypage, mais ses performances et sa vitesse sont inférieures à celles de spaCy ou Stanza pour un usage en production.

import nltk
nltk.download('averaged_perceptron_tagger_eng')

tokens = nltk.word_tokenize("The cat eats the mouse quickly")
tagged = nltk.pos_tag(tokens)
print(tagged)
# [('The', 'DT'), ('cat', 'NN'), ('eats', 'VBZ'),
#  ('the', 'DT'), ('mouse', 'NN'), ('quickly', 'RB')]

Hugging Face Transformers

La bibliothèque Hugging Face Transformers permet d’utiliser n’importe quel modèle de type BERT fine-tuné pour le POS tagging via la pipeline token-classification. C’est l’approche la plus flexible : vous pouvez choisir parmi des centaines de modèles pré-entraînés sur le Hub, ou fine-tuner votre propre modèle sur vos données annotées.

from transformers import pipeline

tagger = pipeline("token-classification",
                  model="vblagoje/bert-english-uncased-finetuned-pos")
result = tagger("The cat eats the mouse quickly")
for token in result:
    print(f"{token['word']:15} {token['entity']}")

Tableau comparatif des outils

OutilVersionLanguesTagsetVitessePrécisionUsage recommandé
spaCy3.870+UPOS + PTB (anglais)RapideTrès bonneProduction, pipelines complètes
Stanza1.9+70+UPOS (UD)MoyenneExcellenteRecherche, précision maximale
Flair0.14+12+ (multi)UPOS + PTBLenteExcellenteRecherche, POS seul
NLTK3.9+Anglais (natif)PTBMoyenneBonneApprentissage, prototypage
HF Transformers4.xVariable (par modèle)VariableLenteVariablePersonnalisation, fine-tuning

Les défis du POS tagging

Malgré des scores impressionnants sur les benchmarks, le POS tagging reste problématique dans plusieurs situations réelles.

Ambiguïté lexicale

C’est le défi fondamental. En anglais, le mot « can » peut être un nom (une canette), un verbe modal (pouvoir), ou un verbe lexical (mettre en conserve). En français, « ferme » peut être un nom (une exploitation agricole), un adjectif (solide), un verbe conjugué (je ferme), ou un adverbe (tenir ferme). Le contexte syntaxique et sémantique doit être analysé pour trancher.

Les modèles modernes gèrent bien l’ambiguïté courante. Là où ils trébuchent, c’est sur les constructions atypiques, les jeux de mots, et les usages créatifs de la langue.

Changement de domaine (domain shift)

Un tagger entraîné sur des articles de presse produit des résultats nettement inférieurs sur des tweets, des textes juridiques, ou des conversations orales. Des études montrent que la précision des meilleurs taggers chute de 98-99% à 94-95% lorsqu’on passe du texte écrit formel au texte parlé. Ce phénomène touche particulièrement les expressions argotiques, les abréviations, et les structures grammaticales non standard.

Code-switching

De plus en plus de textes (surtout sur les réseaux sociaux) mélangent plusieurs langues dans une même phrase : « Je suis trop happy de ce résultat lol ». Les taggers monolingues ne savent pas gérer ces transitions et attribuent des tags incohérents aux mots étrangers.

Langues peu dotées

Pour les langues disposant de peu de corpus annotés, les performances chutent significativement. Des approches de transfer learning multilingue (entraîner sur une langue riche en données, appliquer sur une langue cible) et de zero-shot cross-lingue permettent de compenser partiellement ce manque, mais les résultats restent inférieurs à ceux obtenus sur les langues bien dotées.

Expressions multi-mots

Les expressions figées comme « pomme de terre », « avoir lieu », « en train de » posent problème car le tag de chaque mot pris individuellement ne reflète pas la fonction de l’expression dans son ensemble. Le framework Universal Dependencies traite ce problème avec la notion de multi-word tokens, mais tous les taggers ne le gèrent pas correctement.


Applications concrètes du POS tagging

Le POS tagging n’est presque jamais une fin en soi. C’est une brique sur laquelle reposent de nombreuses applications NLP.

Lemmatisation guidée par le POS

La lemmatisation dépend directement du POS tag. Le mot « avions » se lemmatise en « avion » (nom) ou « avoir » (verbe) selon la catégorie grammaticale identifiée. Sans POS tag fiable, la lemmatisation produit des résultats aberrants.

Analyse syntaxique (dependency parsing)

Les parseurs syntaxiques utilisent les POS tags comme features d’entrée pour construire l’arbre de dépendances. Un parseur dépourvu de POS tags perd typiquement 5 à 10% de précision par rapport à la même architecture avec POS tags.

Extraction d’information

Pour extraire des relations entre entités (« Google a acquis YouTube »), le POS tagging permet d’identifier les verbes (le prédicat de la relation) et les noms propres (les entités participantes). Combiné avec la NER, il structure l’information extraite.

Analyse de sentiment

Dans la sentiment analysis, les adjectifs et adverbes portent l’essentiel de la charge émotionnelle. Identifier correctement ces catégories permet de pondérer les signaux de sentiment et de mieux traiter la négation (« pas bon » vs « bon »).

Traduction automatique

Les systèmes de traduction utilisent les POS tags pour lever les ambiguïtés de traduction. Le mot anglais « book » se traduit « livre » (nom) ou « réserver » (verbe) selon son tag. Même dans les architectures neuronales modernes, les POS tags restent utiles comme features additionnelles, surtout pour les paires de langues à structures syntaxiques différentes.

Correction grammaticale et assistants d’écriture

Des outils comme Grammarly ou Antidote utilisent le POS tagging pour identifier les erreurs d’accord (sujet-verbe, nom-adjectif), les fautes de préposition, et les constructions grammaticales incorrectes.

Analyse SEO et text mining

En SEO et en text mining, le POS tagging permet d’extraire automatiquement les mots-clés pertinents (noms et groupes nominaux), d’analyser la densité lexicale d’un texte, et de comparer le vocabulaire utilisé entre différents documents ou concurrents.


Tutoriel pratique : POS tagging en Python avec spaCy

Voici un exemple complet, de l’installation à l’analyse de résultats.

Installation

# Installation de spaCy
pip install spacy

# Téléchargement du modèle français (large)
python -m spacy download fr_core_news_lg

# Pour l'anglais avec Transformer (meilleure précision)
python -m spacy download en_core_web_trf

Exemple basique

import spacy

nlp = spacy.load("fr_core_news_lg")

texte = """
L'intelligence artificielle transforme rapidement les industries.
Les modèles de langage comme GPT ou Claude génèrent du texte
avec une fluidité remarquable.
"""

doc = nlp(texte)

for token in doc:
    if not token.is_space:
        print(f"{token.text:20} POS: {token.pos_:8} Tag: {token.tag_:10} "
              f"Lemme: {token.lemma_}")

Extraction de patterns grammaticaux

L’un des usages les plus puissants du POS tagging est l’extraction de patterns syntaxiques. Par exemple, extraire tous les groupes « adjectif + nom » d’un corpus :

import spacy

nlp = spacy.load("fr_core_news_lg")
doc = nlp("L'intelligence artificielle offre des perspectives nouvelles "
          "et des applications concrètes dans le monde réel.")

# Extraction des patterns ADJ + NOUN ou NOUN + ADJ
patterns = []
for i, token in enumerate(doc[:-1]):
    next_token = doc[i + 1]
    if token.pos_ == "ADJ" and next_token.pos_ == "NOUN":
        patterns.append(f"{token.text} {next_token.text}")
    elif token.pos_ == "NOUN" and next_token.pos_ == "ADJ":
        patterns.append(f"{token.text} {next_token.text}")

print("Groupes nom-adjectif trouvés :", patterns)
# ['intelligence artificielle', 'perspectives nouvelles',
#  'applications concrètes', 'monde réel']

Utilisation du Matcher spaCy pour des patterns complexes

from spacy.matcher import Matcher

nlp = spacy.load("fr_core_news_lg")
matcher = Matcher(nlp.vocab)

# Pattern : PROPN + VERB + DET + NOUN
# Capture des structures "Sujet propre fait quelque chose à un objet"
pattern = [{"POS": "PROPN"}, {"POS": "VERB"}, {"POS": "DET"}, {"POS": "NOUN"}]
matcher.add("SUJET_VERBE_OBJET", [pattern])

doc = nlp("Google développe une IA. Microsoft lance un produit.")
matches = matcher(doc)
for match_id, start, end in matches:
    span = doc[start:end]
    print(f"Trouvé : {span.text}")
Attention aux performances Le modèle trf (Transformer) de spaCy est 10 à 50 fois plus lent que les modèles sm ou lg. En production sur de gros volumes, privilégiez lg sauf si la différence de précision est critique pour votre cas d’usage. Profilez toujours votre pipeline avant de passer en production.

POS tagging et LLM : quel rôle dans l’ère des grands modèles ?

Question légitime : si des modèles comme GPT ou Claude comprennent la grammaire implicitement, le POS tagging explicite a-t-il encore un sens ?

La réponse est oui, pour plusieurs raisons.

Premièrement, les LLM sont surdimensionnés pour une tâche de POS tagging. Vous n’allez pas envoyer chaque phrase à un modèle à 70 milliards de paramètres juste pour obtenir les tags grammaticaux. Les outils spécialisés (spaCy, Stanza) sont des ordres de grandeur plus rapides et moins coûteux.

Deuxièmement, le POS tagging reste indispensable comme composant de pipeline. Si vous construisez un système de RAG, un moteur de recherche, ou un outil d’analyse de corpus, vous avez besoin d’annotations structurées fiables en amont. Les LLM produisent du texte libre, pas des annotations structurées de manière systématique et reproductible.

Troisièmement, les LLM eux-mêmes bénéficient du POS tagging dans certaines architectures. Des études montrent que l’ajout de features POS peut améliorer les performances de modèles de classification de texte ou de question answering, en particulier pour les modèles de taille modeste.

Le POS tagging ne va pas disparaître. Il se repositionne comme un composant d’infrastructure NLP, fiable, rapide et peu coûteux, sur lequel s’appuient des systèmes plus complexes.


Métriques d’évaluation du POS tagging

L’évaluation d’un POS tagger repose principalement sur l’accuracy (exactitude) au niveau du token : le pourcentage de tokens correctement étiquetés par rapport à un corpus de référence (gold standard).

MétriqueFormuleUsage
AccuracyTokens corrects / Total tokensMétrique principale pour le POS tagging
F1-score (par classe)Moyenne harmonique de précision et rappelÉvaluation détaillée par catégorie grammaticale
OOV AccuracyAccuracy sur les mots hors vocabulaireMesure la capacité de généralisation
Sentence Accuracy% de phrases entièrement correctesMesure plus stricte que l’accuracy par token

L’accuracy globale peut masquer des faiblesses sur certaines catégories. Par exemple, un tagger qui identifie correctement 99% des déterminants mais seulement 85% des interjections affichera une accuracy élevée (les déterminants étant fréquents) mais échouera sur des tâches nécessitant une couverture fine de toutes les catégories.

Pour les évaluations multilingues sur les corpus Universal Dependencies, le script officiel du CoNLL 2018 Shared Task est le standard. Il évalue l’ensemble de la pipeline (tokenisation, POS, features morphologiques, parsing) de bout en bout.


Le POS tagging pour le français

Le français présente des particularités qui complexifient le POS tagging par rapport à l’anglais : accord en genre et en nombre, conjugaisons riches, élision (l’, j’, n’), liaisons, et les fameux multi-word tokens (du = de + le, au = à + le).

Les principaux modèles disponibles pour le français sont :

spaCy : les modèles fr_core_news_sm/md/lg sont entraînés sur des données journalistiques annotées. Le modèle fr_dep_news_trf utilise un Transformer (CamemBERT) pour une meilleure précision.

Stanza : le modèle français de Stanza est entraîné sur le treebank UD_French-GSD et supporte nativement l’expansion des multi-word tokens.

CamemBERT : modèle BERT pré-entraîné spécifiquement sur du français (corpus OSCAR), qui peut être fine-tuné pour le POS tagging. C’est souvent le backbone des modèles Transformer pour le français.

FlauBERT : alternative à CamemBERT, également pré-entraîné sur du français, avec des performances comparables sur les tâches de sequence labeling.

Recommandation pour le français Pour un projet en production en français, notre recommandation est fr_core_news_lg de spaCy. Il offre le meilleur équilibre entre vitesse d’inférence, précision et facilité d’intégration. Si la précision est critique (analyse juridique, médicale), passez au modèle Transformer fr_dep_news_trf ou fine-tunez CamemBERT sur vos données métier.

Bonnes pratiques

Choisissez le bon tagset dès le départ. Si votre projet est multilingue ou que vous utilisez des outils modernes, partez sur Universal Dependencies (UPOS). Le Penn Treebank est pertinent uniquement pour des travaux de recherche en anglais où vous comparez avec la littérature existante.

Évaluez sur vos propres données. Les scores sur les benchmarks standards ne reflètent pas toujours les performances sur votre domaine. Constituez un jeu de test de 500 à 1000 phrases annotées manuellement dans votre domaine cible, et mesurez l’accuracy réelle.

Traitez les erreurs en cascade. Si votre POS tagger se trompe, la lemmatisation et le parsing en aval se trompent aussi. Identifiez les catégories d’erreurs les plus fréquentes et leur impact sur les tâches applicatives.

Adaptez au domaine si nécessaire. Sur des textes très spécifiques (médical, juridique, réseaux sociaux), un fine-tuning sur quelques centaines de phrases annotées peut apporter un gain significatif. spaCy et Stanza supportent tous les deux l’entraînement sur des données personnalisées.

Ne surdimensionnez pas votre modèle. Pour un cas d’usage simple (extraction de mots-clés, lemmatisation), le modèle sm de spaCy suffit largement. Le modèle Transformer n’est pertinent que si vous mesurez une différence significative sur votre tâche finale.


Questions fréquentes sur le POS tagging

Quelle est la différence entre POS tagging et NER ?

Le POS tagging et la NER (Named Entity Recognition) sont deux tâches d’étiquetage de séquence, mais elles ciblent des informations différentes. Le POS tagging attribue une catégorie grammaticale (nom, verbe, adjectif…) à chaque token, quelle que soit sa sémantique. La NER identifie les entités nommées spécifiques (personnes, organisations, lieux, dates…) en les étiquetant avec des tags sémantiques. Les deux tâches sont complémentaires : le POS tagging fournit une couche structurelle, la NER une couche sémantique. Dans une pipeline spaCy ou Stanza, les deux sont exécutées séquentiellement.

Quel est le meilleur outil de POS tagging pour le français ?

Pour une utilisation en production, spaCy avec le modèle fr_core_news_lg offre le meilleur compromis vitesse/précision. Si vous avez besoin de la meilleure précision possible, le modèle Transformer fr_dep_news_trf de spaCy (basé sur CamemBERT) ou Stanza avec le treebank UD_French-GSD sont recommandés. Pour de la recherche académique, Stanza produit des résultats très compétitifs sur les benchmarks Universal Dependencies.

Le POS tagging fonctionne-t-il bien sur les tweets et les textes informels ?

Les performances se dégradent significativement sur les textes informels. Les études montrent une chute d’accuracy de 3 à 5 points par rapport au texte formel. Les principales causes sont les abréviations (tkt, jsp, mdr), l’absence de ponctuation et de majuscules, les fautes d’orthographe volontaires, et le code-switching. Pour améliorer les résultats, vous pouvez fine-tuner un modèle sur un corpus de tweets annotés, ou utiliser des modèles spécialement entraînés sur des données de réseaux sociaux (comme le treebank UD_English-Tweebank pour l’anglais).

Peut-on faire du POS tagging sans corpus annoté (unsupervised) ?

Oui, mais avec des performances inférieures. Les approches non supervisées utilisent des techniques comme le clustering de mots (regrouper les mots qui apparaissent dans des contextes similaires) ou l’induction grammaticale. Les résultats sont utiles pour des langues sans aucune ressource annotée, mais restent 10 à 20 points en dessous des approches supervisées. En pratique, la stratégie la plus efficace pour une langue peu dotée est le transfer learning cross-lingue : entraîner sur une langue riche en données (comme le français ou l’anglais) et appliquer sur la langue cible, en exploitant les embeddings multilingues.

Comment entraîner un POS tagger personnalisé sur mes propres données ?

Avec spaCy, vous pouvez fine-tuner un modèle existant sur vos données annotées au format IOB ou CoNLL-U en utilisant la commande spacy train. Avec Stanza, l’entraînement se fait depuis le code source avec des données au format CoNLL-U. Avec Hugging Face, vous pouvez fine-tuner n’importe quel modèle BERT sur la tâche token-classification avec le Trainer API. Dans tous les cas, il vous faut un corpus annoté d’au moins 500 phrases (idéalement plus) dans votre domaine cible. L’annotation peut être accélérée en utilisant un modèle pré-entraîné pour pré-annoter, puis en corrigeant manuellement les erreurs.

Polydesk.ai — Footer