Polydesk-logotype
Polydesk.ai — Header

Keyword Extraction (Extraction de Mots-Clés)

Le keyword extraction est une technique de NLP qui identifie et extrait automatiquement les mots ou expressions les plus importants et représentatifs d’un texte, sans supervision humaine. C’est la brique de base pour résumer le contenu d’un document, indexer une base documentaire ou alimenter un word cloud.

Prenez un article de 2000 mots sur le déploiement de pipelines RAG en production. Un bon algorithme d’extraction de mots-clés en tire : « RAG », « pipeline », « retrieval », « embedding », « vector database », « reranking ». En quelques termes, vous savez de quoi parle l’article. C’est utile pour l’indexation automatique, le SEO, la catégorisation de documents, la recommandation de contenu et l’analyse de corpus. Les approches vont du statistique pur (TF-IDF, RAKE) au sémantique profond (KeyBERT avec des embeddings Transformer).

Keyword Extraction en bref
Catégorie
NLP / Text Mining
Type
Non supervisé (pas de données annotées requises)
Algorithmes statistiques
RAKE, YAKE, TF-IDF
Algorithmes par graphe
TextRank, TopicRank, PositionRank, SingleRank, MultipartiteRank
Algorithmes sémantiques
KeyBERT (embeddings BERT + similarité cosinus)
Bibliothèques
KeyBERT, rake-nltk, yake, pke, spaCy

Les trois familles d’approches

Approches statistiques : RAKE, YAKE, TF-IDF

RAKE (Rapid Automatic Keyword Extraction) est l’algorithme le plus rapide. Il fonctionne en trois étapes : découper le texte en candidats en utilisant les stop words et la ponctuation comme séparateurs, calculer un score pour chaque candidat basé sur le ratio entre le degré de co-occurrence des mots et leur fréquence, puis classer les candidats par score décroissant. RAKE est extrêmement rapide (2000 documents en 2 secondes), ne nécessite aucun entraînement, et fonctionne sur n’importe quelle langue. Son défaut : il est purement statistique et peut extraire des expressions non pertinentes sémantiquement.

YAKE (Yet Another Keyword Extractor) est une alternative à RAKE qui utilise des caractéristiques statistiques plus riches : fréquence du mot, position dans le document (les mots en début de texte sont souvent plus importants), contexte de co-occurrence, et dispersion dans le texte. YAKE produit généralement des résultats plus précis que RAKE, avec un bon équilibre entre qualité et vitesse. Il est entièrement non supervisé et ne dépend ni d’un corpus d’entraînement ni d’un dictionnaire externe.

TF-IDF (Term Frequency-Inverse Document Frequency) est la méthode la plus classique. Elle identifie les mots qui sont fréquents dans un document donné mais rares dans le corpus global. Un mot présent dans un seul document sur mille a un TF-IDF élevé : il est discriminant. TF-IDF nécessite un corpus de référence (pas un seul document), ce qui le distingue de RAKE et YAKE qui fonctionnent sur un document isolé.

Approches par graphe : TextRank et dérivés

TextRank est une adaptation de PageRank (l’algorithme de Google) au texte. Les mots sont des nœuds d’un graphe, et les arêtes représentent les co-occurrences dans une fenêtre glissante. L’algorithme propage itérativement l’importance à travers le graphe : un mot est important s’il co-apparaît avec d’autres mots importants. TextRank capture les relations entre les mots, pas seulement leur fréquence. Les variantes TopicRank, PositionRank, SingleRank et MultipartiteRank affinent ce principe avec différentes stratégies de construction du graphe et de sélection des candidats.

La bibliothèque Python pke (Python Keyphrase Extraction) implémente TextRank et toutes ses variantes dans une API unifiée.

Approche sémantique : KeyBERT

KeyBERT, créé par Maarten Grootendorst (le même auteur que BERTopic), utilise des embeddings BERT pour extraire les mots-clés sémantiquement les plus représentatifs d’un document. Le processus :

1. Le document entier est encodé en un vecteur par un modèle Sentence Transformer (par défaut all-MiniLM-L6-v2).

2. Tous les n-grammes candidats (mots et expressions de 1 à N mots) sont aussi encodés en vecteurs.

3. Les candidats dont les vecteurs sont les plus similaires (similarité cosinus) au vecteur du document sont sélectionnés comme mots-clés.

KeyBERT capture le sens sémantique, pas juste les statistiques. Si le document parle de « véhicules électriques », KeyBERT peut aussi extraire « mobilité durable » comme mot-clé pertinent, même si ce terme est rare dans le texte. C’est sa force par rapport aux approches statistiques.

KeyBERT propose aussi deux stratégies de diversification pour éviter d’extraire des mots-clés trop similaires entre eux :

Max Sum Distance : Maximise la distance entre les mots-clés extraits pour couvrir un maximum de facettes du document.

MMR (Maximal Marginal Relevance) : Balance entre la pertinence (similarité avec le document) et la diversité (dissimilarité avec les mots-clés déjà sélectionnés). Le paramètre diversity (0 à 1) contrôle ce compromis.


Comparaison des algorithmes

Algorithme Type Vitesse Qualité Multi-mots Multilingue Nécessite un corpus
RAKE Statistique Très rapide Correcte Oui (natif) Oui (via stop words) Non
YAKE Statistique Rapide Bonne Oui Oui Non
TF-IDF Statistique Rapide Bonne Oui (avec n-grammes) Oui Oui (corpus de référence)
TextRank Graphe Moyenne Bonne Via post-traitement Oui Non
KeyBERT Sémantique (BERT) Lente (GPU recommandé) Excellente Oui (n-grammes) Oui (modèle multilingue) Non
Quel algorithme choisir ? Si la vitesse est critique (millions de documents) : RAKE. Si vous voulez un bon compromis sans dépendance lourde : YAKE. Si vous avez un corpus de référence : TF-IDF. Si la qualité sémantique est prioritaire : KeyBERT. En pratique, un benchmark sur un dataset académique a montré que RAKE offre le meilleur ratio qualité/temps, tandis que KeyBERT domine en précision absolue.

Implémentation en Python

KeyBERT (sémantique)

from keybert import KeyBERT

doc = """
Le Retrieval-Augmented Generation (RAG) combine la recherche 
d'information avec la génération de texte par un modèle de langage.
Le pipeline RAG encode les documents en embeddings vectoriels, 
les stocke dans une base de données vectorielle, puis utilise 
un reranker pour affiner la pertinence avant de générer la réponse.
"""

# Extraction avec le modèle par défaut
kw_model = KeyBERT(model='all-MiniLM-L6-v2')

# Mots-clés simples (1 mot)
keywords = kw_model.extract_keywords(doc, top_n=5)
# [('rag', 0.62), ('pipeline', 0.48), ('embeddings', 0.45), ...]

# Keyphrases (1 à 3 mots)
keyphrases = kw_model.extract_keywords(
    doc, 
    keyphrase_ngram_range=(1, 3), 
    top_n=5,
    use_mmr=True,        # Diversification MMR
    diversity=0.5         # Balance pertinence/diversité
)
# [('retrieval augmented generation', 0.71),
#  ('base données vectorielle', 0.58),
#  ('embeddings vectoriels', 0.55), ...]

RAKE (rapide et simple)

from rake_nltk import Rake

# Configurer RAKE pour le français
r = Rake(
    language="french",
    min_length=1,      # Longueur minimale des keyphrases
    max_length=3       # Longueur maximale
)

r.extract_keywords_from_text(doc)

# Keyphrases classées par score décroissant
keyphrases = r.get_ranked_phrases_with_scores()
for score, phrase in keyphrases[:5]:
    print(f"Score: {score:.2f} | {phrase}")

YAKE (équilibré)

import yake

# Configurer YAKE
kw_extractor = yake.KeywordExtractor(
    lan="fr",             # Langue française
    n=3,                  # Jusqu'à 3 mots par keyphrase
    dedupLim=0.7,         # Seuil de déduplication
    top=10,               # Nombre de mots-clés
    features=None
)

keywords = kw_extractor.extract_keywords(doc)
for kw, score in keywords:
    print(f"Score: {score:.4f} | {kw}")
# Note : avec YAKE, un score plus BAS = plus pertinent

TF-IDF (sur un corpus)

from sklearn.feature_extraction.text import TfidfVectorizer
import numpy as np

# Corpus de documents
corpus = [doc1, doc2, doc3, ...]  # Liste de textes

vectorizer = TfidfVectorizer(
    stop_words="french",
    ngram_range=(1, 3),
    max_features=1000
)
tfidf_matrix = vectorizer.fit_transform(corpus)
feature_names = vectorizer.get_feature_names_out()

# Extraire les mots-clés du premier document
doc_idx = 0
tfidf_scores = tfidf_matrix[doc_idx].toarray().flatten()
top_indices = tfidf_scores.argsort()[-10:][::-1]

for idx in top_indices:
    print(f"Score: {tfidf_scores[idx]:.4f} | {feature_names[idx]}")

KeyLLM : extraction par LLM

KeyBERT propose depuis récemment KeyLLM, une extension qui utilise un LLM (GPT-4, Claude, Mistral, ou un modèle open source) pour extraire les mots-clés. Au lieu de la similarité cosinus avec des embeddings, le LLM reçoit le document et une instruction de type « Extrais les 5 mots-clés les plus importants de ce texte ». L’avantage : le LLM comprend le contexte et les nuances mieux qu’un simple calcul de similarité. L’inconvénient : c’est beaucoup plus lent et plus coûteux.

KeyLLM est intéressant pour les cas où la qualité prime sur la vitesse (analyse de documents stratégiques, classification fine) ou quand vous avez besoin de mots-clés formulés d’une façon spécifique (termes métier, taxonomie imposée).


Cas d’usage concrets

SEO et content marketing : Identifier les mots-clés principaux d’un article pour optimiser le référencement. Comparer les mots-clés de votre contenu avec ceux des résultats de recherche concurrents. Détecter les opportunités thématiques manquantes.

Indexation et recherche documentaire : Taguer automatiquement des milliers de documents avec des mots-clés pour améliorer la recherche interne. Utile pour les bases de connaissances, les systèmes de gestion documentaire et les FAQ.

Résumé de contenu : Extraire les termes clés d’un article, d’un rapport ou d’un e-mail pour un aperçu rapide sans lire le texte entier. Alimenter des word clouds avec des mots-clés pondérés par TF-IDF ou KeyBERT.

Catégorisation automatique : Utiliser les mots-clés extraits comme features pour un classifieur de documents. Les mots-clés condensent le contenu en quelques termes discriminants qui facilitent la classification.

Analyse de feedback client : Extraire les termes récurrents dans les avis clients pour identifier les thèmes de satisfaction et d’insatisfaction. Complément du topic modeling : les mots-clés sont plus granulaires, les topics plus structurels.

Veille et intelligence économique : Extraire les mots-clés d’articles de presse, de brevets ou de publications pour détecter les tendances émergentes et les mouvements concurrentiels.


Bonnes pratiques

Prétraitez le texte. Supprimez les stop words, normalisez la casse, et considérez la lemmatisation. Le prétraitement impacte significativement la qualité des mots-clés extraits, surtout pour RAKE et TF-IDF.

Utilisez des n-grammes. Ne vous limitez pas aux mots individuels. Les expressions de 2-3 mots (« base de données vectorielle », « recherche sémantique ») sont souvent plus informatives que les mots seuls. Configurez ngram_range=(1, 3) ou keyphrase_ngram_range=(1, 3).

Dédupliquez les résultats. Les algorithmes peuvent extraire « machine learning » et « learning machine » comme deux mots-clés distincts. YAKE offre un paramètre dedupLim pour filtrer les doublons. KeyBERT utilise MMR pour favoriser la diversité.

Combinez les approches. RAKE pour un premier filtre rapide, KeyBERT pour affiner sémantiquement. Ou TF-IDF pour identifier les termes distinctifs du corpus, puis KeyBERT pour sélectionner ceux qui sont sémantiquement les plus représentatifs de chaque document.

Évaluez sur votre domaine. Aucun algorithme n’est universellement meilleur. Les performances varient selon la longueur des textes, le domaine, et la langue. Testez 2-3 algorithmes sur un échantillon de votre corpus et comparez les résultats avec un jugement humain.

Le piège du mono-mot Les mots-clés d’un seul mot sont souvent ambigus hors contexte. « Python » peut désigner le langage de programmation, le serpent ou un film. Privilégiez l’extraction de keyphrases (2-3 mots) quand le contexte est important : « Python programming », « machine learning pipeline », « base vectorielle ». C’est un des KPI les plus importants dans un benchmark d’extraction : les mots-clés doivent faire sens seuls, même hors contexte.

Limites

Sensibilité à la longueur du texte. RAKE et YAKE peuvent sous-performer sur les textes très courts (tweets, titres) car il n’y a pas assez de matériau statistique. KeyBERT gère mieux les textes courts grâce aux embeddings, mais avec moins de candidats disponibles.

Dépendance linguistique. RAKE et YAKE nécessitent des listes de stop words adaptées à la langue. KeyBERT nécessite un modèle d’embedding multilingue. Pour le français, utilisez les ressources spaCy ou NLTK pour les stop words, et un modèle comme paraphrase-multilingual-MiniLM-L12-v2 pour KeyBERT.

Pas de compréhension de l’importance métier. Les algorithmes identifient les mots statistiquement ou sémantiquement saillants, pas les mots importants pour votre métier. « Pipeline » peut être un mot-clé statistiquement fort mais peu pertinent pour votre analyse marketing. La validation humaine reste nécessaire.

Pas de désambiguïsation. « Bank » (banque ou rive ?), « Java » (langage ou île ?). Les approches statistiques ne désambiguïsent pas. KeyBERT le fait partiellement via le contexte des embeddings, mais ce n’est pas parfait.


Verdict

L’extraction de mots-clés est un outil fondamental du text mining. Les algorithmes se répartissent en un spectre clair : RAKE pour la vitesse brute, YAKE pour l’équilibre, TF-IDF quand vous avez un corpus de référence, TextRank pour les relations entre mots, et KeyBERT pour la précision sémantique. En 2026, KeyBERT est le choix par défaut quand la qualité prime, grâce à sa compréhension sémantique via les embeddings BERT. Pour les traitements en masse (millions de documents), RAKE ou YAKE restent imbattables en vitesse.

Le conseil pragmatique : commencez par YAKE pour un premier résultat rapide, puis passez à KeyBERT avec MMR (diversity=0.5) si la qualité n’est pas suffisante. Et si vous avez un LLM accessible, KeyLLM offre le meilleur résultat absolu pour les cas critiques. Dans tous les cas, extrayez des keyphrases (2-3 mots) plutôt que des mots isolés : le gain d’interprétabilité est considérable.


Questions fréquentes sur le keyword extraction

Quelle est la différence entre keyword extraction et topic modeling ?

Le keyword extraction identifie les mots ou expressions les plus importants d’un document individuel. C’est granulaire et opère au niveau du document. Le topic modeling découvre les thèmes latents d’un corpus entier : chaque topic est un groupe de mots qui co-apparaissent fréquemment. C’est structurel et opère au niveau du corpus. Les deux sont complémentaires : le keyword extraction dit « ce document parle de X, Y, Z », le topic modeling dit « le corpus contient les thèmes A, B, C et ce document est à 60% thème A et 40% thème B ».

KeyBERT est-il meilleur que RAKE ?

KeyBERT est plus précis car il comprend le sens sémantique via des embeddings BERT, tandis que RAKE est purement statistique. KeyBERT capture des synonymes et des termes sémantiquement proches que RAKE ignore. Mais RAKE est environ 100x plus rapide : 2000 documents en 2 secondes contre plusieurs minutes pour KeyBERT. Le choix dépend de votre priorité (qualité vs vitesse) et de votre volume. Pour moins de 10 000 documents, KeyBERT est recommandé. Pour des millions, RAKE ou YAKE sont plus pragmatiques.

Comment extraire des mots-clés d’un texte en français ?

Trois options. YAKE fonctionne nativement en français : yake.KeywordExtractor(lan="fr"). RAKE nécessite les stop words français via NLTK : Rake(language="french"). KeyBERT nécessite un modèle d’embedding multilingue : KeyBERT(model='paraphrase-multilingual-MiniLM-L12-v2'). Pour TF-IDF, passez stop_words="french" dans scikit-learn. Dans tous les cas, la qualité dépend du prétraitement (stop words, lemmatisation) et du modèle d’embedding pour KeyBERT.

Comment évaluer la qualité des mots-clés extraits ?

La méthode standard est la comparaison avec des mots-clés annotés manuellement par des humains (ground truth). Les métriques utilisées sont la précision (proportion de mots-clés extraits qui sont pertinents), le recall (proportion de mots-clés pertinents qui ont été extraits), et le F1-score (moyenne harmonique des deux). En l’absence de ground truth, un jugement expert sur un échantillon de 50-100 documents donne une évaluation rapide et fiable. Des datasets publics comme Inspec, SemEval-2010 ou Krapivin servent de benchmarks académiques.

Peut-on utiliser un LLM pour extraire des mots-clés ?

Oui, et les résultats sont souvent excellents. KeyBERT propose KeyLLM, qui envoie le texte à un LLM (GPT-4, Claude, Mistral) avec une instruction d’extraction. Le LLM comprend le contexte mieux que les algorithmes statistiques et peut produire des mots-clés formulés selon votre terminologie métier. L’inconvénient est le coût (appels API) et la latence (secondes par document vs millisecondes pour RAKE). Utilisez un LLM pour les documents stratégiques et les cas complexes, et un algorithme classique pour le traitement en masse.

Polydesk.ai — Footer