Automatically-extract-concepts-and-keywords-from-a-text-250px (1)

Extraire automatiquement les concepts et mots-clés d’un texte (Part II : approche sémantique)

20 septembre 2022 - 13  min de lecture - par Damien Garaud
Accueil > SEO Technique > Extraire les concepts et mots-clés : Part II

Cet article fait suite à la première partie à propos de l’extraction automatique de mots-clés d’un texte. Ce précédent billet traitait de l’approche dite “classique” pour extraire les mots-clés d’un texte : statistique ou par graphe.

Nous allons ici explorer des méthodes avec une approche plus sémantique. Dans un premier temps, nous ferons une introduction aux words embeddings et aux transformers, i.e. contextual embeddings. Puis nous montrons un exemple avec le même texte à propos de l’album Impressions de John Coltrane (source francemusique.fr) basé sur le modèle BERT. Enfin nous présenterons quelques méthodes d’évaluation telles que P@k f1-score ainsi que des benchmarks issus de l’état de l’art.

Contrairement à l’approche classique, l’approche sémantique permet de lier des mots qui appartiennent à un champ lexical proche, même s’ils sont différents. L’idée derrière cette approche, c’est de se passer du calcul des fréquences d’occurrence de mots dans le texte afin d’extraire les mots qui font le plus de sens, autrement dit ceux qui apportent l’information la plus pertinente par rapport au texte.

Word Embeddings

Cette méthode date de 2013 avec l’introduction d’un modèle appelé word2vec. C’est une architecture de réseaux de neurones artificiels “simple” – contrairement aux architectures dites “Deep Learning” – qui proposent de représenter l’ensemble des mots d’un vocabulaire sous forme de vecteurs. Autrement dit, à chaque mot on fait correspondre une ligne de chiffres.

Cet ensemble de vecteurs représente en quelque sorte le champ sémantique du vocabulaire, avec la capacité de comparer ces vecteurs entre eux. En mesurant une distance entre ces vecteurs, nous pouvons dire si les mots sont sémantiquement proches. La représentation des mots sous forme de tableau de chiffres est appelée embeddings.

word2vec-embedding-example-fr

embeddings-example

 

Une fois que vous avez cette représentation vectorielle de votre corpus, vous pouvez comparer ces mots entre eux. Deux mots vont avoir un sens proche si les deux vecteurs ont un angle très petit entre eux : c’est la distance sémantique – une valeur entre -1 et 1. Plus la valeur est proche de 1, plus les mots ont un sens “proche”. Une valeur proche de -1 au contraire indiquera des sens “opposés”, e.g. “bon” et “mauvais”.

L’objectif de ce modèle, c’est de “fabriquer” ce fameux embeddings à partir d’une quantité non négligeable de documents texte. Supposons que vous ayez quelques centaines de milliers de textes, le modèle va apprendre à prédire un mot en fonction des mots qui lui sont proches.

word2vec-window-fr

words-window

 

Le modèle va prendre en entrée plusieurs groupes de mots – de taille 5 par exemple – et tenter de trouver les meilleures propositions à la place de <mask>. Au sein de votre corpus, il y a des phrases ou des groupes de mots similaires ; on va pouvoir y retrouver les mots : “jazz”, “rock”, “classique” ou “reggae” par exemple. Ainsi, l’ensemble de ces mots auront des vecteurs assez similaires. De cette manière, le modèle arrive à rapprocher des concepts et des mots qui sont dans un champ lexical proche.

[Étude de cas] Trouver et résoudre des problèmes d’indexation

D’un trafic nul à une croissance exponentielle : découvrez comment GroupM Turkey a utilisé Oncrawl pour résoudre les problèmes d'indexation d'Unilever.

Par contre, il peut exister des ambiguïtés pour un mot qui a le même orthographe mais qui n’a pas le même sens en fonction du contexte : ce sont des mots homographes.

Par exemple :

  1. Hier elle a mangé un avocat.
  2. Pour mon contrat, je préfère appeler un avocat.

C’est une limite de ce type de modèle : le mot aura la même représentation vectorielle quel que soit le contexte.

Transformers

Une approche plus récente a vu le jour principalement avec l’article Attention Is All You Need de Google en 2017. Là où les méthodes de type word2vec peinaient à représenter deux mots identiques mais qui n’avaient pas le même sens, les modèles de type transformers sont dans la capacité de distinguer le sens d’un mot en fonction de son contexte. À noter qu’il existe aussi des modèles de NLP capables de prendre en considération des séquences de mots comme les RNNs ou LSTM mais nous ne les traiterons pas dans ce billet.

Les tranformers vont populariser un nouveau concept dans l’architecture des réseaux de neurones : le mécanisme d’attention. Cela permet de trouver, à l’intérieur d’une séquence de mots e.g. une phrase, comment chaque mot est lié aux autres.

Le modèle BERT créé par Google en 2018 est un modèle performant et populaire. L’intérêt de ces modèles de type Language Model consiste à se reposer sur un modèle pré-entrainé, i.e. le modèle a déjà été entraîné sur une quantité non négligeable de textes en anglais, français, etc. Il est alors ensuite possible de l’utiliser tel quel pour comparer du texte, générer des réponses à partir de questions, faire de l’analyse de sentiment, faire du fine tuning sur un corpus de texte plus spécifique, etc.

bert-attention-visualisation

Attention Visualisation

 

L’image a été générée grâce à l’outil de visualisation exBERT. On peut voir que le mot sélectionné “money” est fortement lié à “deposited” et “bank”. Il est alors plus facile pour le modèle de lever l’ambiguïté sur le mot “bank” grâce au contexte.

Pour KeyBERT, c’est un modèle dérivé de BERT nommé Sentence-BERT qui permet très facilement de comparer sémantiquement des phrases entre elles.

Pour l’ensemble des modèles Open Source et pré-entraînés disponibles, vous pouvez aller voir sur le hub de Huggingface spécialisé dans le stockage et le partage de datasets et de modèles liés au NLP (mais aussi plus récemment à l’audio et image).

Extraction de keywords avec KeyBERT

Comment donc utiliser les transformers pour extraire des keywords pertinents à partir d’un texte ? Il existe différents projets dont KeyBERT: Minimal keyword extraction with BERT, une bibliothèque Python Open Source qui utilise le modèle BERT.

KeyBERT va utiliser par défaut le sentence-transformers basé sur BERT pour représenter une phrase, plutôt qu’un simple mot, en tant que vecteur. C’est une méthode très efficace pour comparer des phrases ou des groupes de mots entre eux. Le principe de l’algorithme KeyBERT est assez simple. Prenons un texte, puis :

 

  1. Le code va extraire l’ensemble des mots uniques du texte. Dans cette étape on élimine souvent les stopwords.
  2. Les embeddings de la globalité du texte et de chaque mot sont calculés.
  3. On calcule la distance sémantique entre les vecteurs issus des mots et le vecteur qui représente le texte dans sa globalité.

 

Une fois l’ensemble de ces distances calculées, nous pouvons extraire les mots qui ont sens proche de la globalité du texte : ce seront les mots-clés sélectionnés par l’algorithme.

Par ailleurs, KeyBERT vous donne la capacité de sélectionner la longueur des keyphrases : on peut prendre en effet soit des mots uniques, soit des paires ou des triplets de mots. De plus, le code propose une implémentation de la méthode “Maximal Marginal Relevance” (MMR) afin d’augmenter la diversité des résultats. Cela permet d’éviter des répétitions d’un terme, certes pertinent avec le contenu du document, mais trop souvent présents dans les résultats, par exemple: “jazz concert”, “jazz music”, “jazz style”, etc.

Pour conclure, il est aussi possible d’utiliser d’autres modèles NLP pour KeyBERT comme des modèles issus de spaCy ou de flair.

À l’instar de l’article précédent, voici un exemple des mots-clés extraits par KeyBERT avec le même l’article à propos de l’album Impressions de John Coltrane :

“coltrane impressions”, “musique quartet”, “jazz trésor”, “concert john”, “séquence perles”, “répertoire graz”, “saxophones ténor”

Méthodes d’évaluation

Dans cet article et le précédent, nous avons présenté plusieurs méthodes pour extraire les keywords d’un document : RAKE, Yake, TextRank et KeyBERT. Encore faut-il pouvoir choisir la bonne en fonction de votre contexte.

Il est donc pertinent de s’intéresser à des méthodes d’évaluation pour comparer les résultats d’une méthode plutôt qu’une autre. À partir de données (document, keywords) où les keywords ont été humainement définis et validés, il est possible de comparer les résultats d’un modèle avec cette “réalité”. Nous avons des métriques telles que la precision, le recall et le f1-score qu’on retrouve très souvent dans les problématiques de classification. Nous pouvons construire une matrice de confusion en sachant si tel ou tel mot-clé extrait par le modèle est en effet dans la liste des mots-clés pertinents.

Comme les modèles peuvent extraire une série de keywords, nous comparons souvent les k premiers keywords avec la vérité terrain – ground truth. Comme les résultats peuvent varier en fonction du nombre de keywords qu’on souhaite comparer, on évalue plusieurs fois le modèle en fonction de la valeur k. On note d’ailleurs ces métriques Precision@k qui signifie : “je calcule la Precision sur le top-k”.

[Ebook] Comment votre maillage interne influence l’Inrank

Suivez les expériences de Chris Green pour comprendre comment votre écosystème de liens internes affecte l’importance relative de vos pages en utilisant l’Inrank.

Precision

C’est le nombre de keywords corrects dans le top-k sur la totalité des keywords prédits.

Precision calculation

Recall

C’est le nombre de keywords corrects dans le top-k sur la totalité des keywords de la vérité terrain.

Recall calculation

f1-score

C’est une combinaison des deux métriques précédentes – ou autrement dit une moyenne harmonique entre la precision et le recall :

F1 score calculation

MAP @ k

Mean Average Precision

La première étape pour calculer la MAP, c’est de calculer l’Average Precision. On va prendre l’ensemble des mots-clés trouvés par le modèle et calculer le P@k pour chaque mot-clé pertinent trouvé par le modèle. À titre d’exemple, pour calculer AP@5 avec 3 mots-clés pertinents sur les 5 proposés :

 

   keywords:   jazz   concert   music   saxophone   radio
   relevant:     1       0        1         1         0
   P@k:         1/1              2/3       3/4

   AP:  1/3 (1 + 2/3 + 3/4) ~= 0.80

On note ici que la position des mots-clés effectivement pertinents est importante. En effet, l’AP n’aura pas le même score si les trois premiers mots-clés sur les 5 ne sont pas pertinents (resp. pertinents).

Puis, pour chaque (document, keywords), on va calculer la moyenne de tous les AP pour enfin obtenir la MAP.

À noter que ces différentes métriques sont aussi très utilisées pour évaluer des modèles de ranking ou des systèmes de recommandation.

Petites critiques sur certaines de ces métriques concernent le nombre de mots-clés pertinents de la vérité terrain qui peut être variable par dataset et par document.

  • Par exemple le recall@k : le score peut beaucoup dépendre de la taille des mots-clés pertinents de la vérité terrain. En effet, si vous avez jusqu’à 20 mots-clés pertinents, pour un recall@10 vous allez comparer les 10 premiers sur cet ensemble de 20 mots-clés. Dans le meilleur des cas, si tous les mots-clés proposés par le modèle sont bien pertinents, le score de recall ne dépassera pas 0.5.
  • À l’inverse, si le nombre de mots-clés pertinents de la vérité terrain est très faible par rapport à ceux proposés par le modèle, vous ne pourrez pas avoir des bons scores de precision@k. Pour 5 mots-clés pertinents de la vérité terrain, la precision@10 pourra au mieux avoir un score de 0.5 mais pas plus.

Quelque soit les métriques utilisées pour évaluer les résultats, il est nécessaire d’avoir un dataset (texte, keywords) où les keywords ont été préalablement définis par des personnes – les auteurs des textes, les lecteurs, éditeurs, etc. Il existe plusieurs datasets essentiellement en anglais et sur différents sujets : articles scientifiques, résumés, news, informatique, etc. Voici par exemple ce dépôt Github KeywordExtractor-Datasets qui liste une vingtaine de datasets.

Benchmarks

Suite à cette présentation des différentes méthodes d’évaluation, je vous propose de faire un “digest” de quelques papiers de recherche qui proposent des benchmarks.

Le premier par les checheur·euse·s qui ont implémenté la méthode Yake! dans le papier suivant “YAKE! Keyword extraction from single documents using multiple local features”. Ils ont analysé leur méthode sur une vingtaine de datasets différents: PubMed, WikiNews, SemEval2010, KDD pour les plus connus en utilisant la plupart des métriques décrites précédemment : P@k, recall@k, etc. Yake! va être comparé avec une dizaine d’autres méthodes dont Rake, Text Rank, etc. En unifiant l’ensemble des datasets disponibles et en calculant precision et recall, la méthode Yake! est soit meilleure soit très proche des méthodes à l’état de l’art. À titre d’exemple pour f1@10 :

 

DatasetYake!Best or 2nd
WikiNews0.4500.337
KDD0.1560.115
Inspec0.3160.378

 

Yake! est souvent jusqu’à 50-100% meilleur, soit proche de la méthode de tête.

Un autre papier plus récent “TNT-KID: Transformer-based neural tagger for keyword identification” compare aussi des méthodes classiques et d’autres utilisant les Transformers. Les méthodes d’extraction utilisant les Transformers performent effectivement mieux. Attention cependant puisque ce sont des méthodes dites “supervisées” contrairement à Rake, KeyBERT et Yake qui n’ont pas besoin d’avoir un corpus d’entraînement pour produire des résultats.

Citons enfin deux autres benchmark :

Conclusions

Comme vous avez pu le constater le long de ces deux articles, il existe vraiment une multitude de méthodes très différentes pour extraire les mots-clés pertinents d’un texte. Au vu des différents benchmarks, vous aurez noté qu’il n’y en a pas une qui dépasse vraiment toutes les autres en termes de métriques. Cela va dépendre du corpus et du contexte. De plus, comme le soulignait l’auteur de l’article de blog sur les 7 algorithmes d’extraction, on peut aussi s’appuyer sur le temps de traitement d’un algorithme face à un texte plus ou moins long.

Ce temps va sûrement peser dans la balance quand il s’agira de mettre un algorithme en production et de traiter des centaines de milliers de documents. Dans le cas de KeyBERT, vous devez envisager une infrastructure avec du GPU pour augmenter radicalement le temps de traitement. En effet, cette méthode repose sur des Transformers qui ont une architecture Deep Learning qui demande beaucoup de calcul.

Si je devais faire un choix, ce serait sûrement entre KeyBERT et Yake. Le premier pour l’aspect transformers et sémantique, l’autre pour son efficacité et sa rapidité d’exécution.

Reférences Bibliographiques

Damien Garaud Voir tous ses articles
Précédemment data scientist chez Oncrawl, Damien aime apprendre de nouvelles techniques et outils de développement, de nouveaux langages de programmation afin d'améliorer son travail.
Sujets en lien :