Extraire automatiquement des concepts et des mots clés d'un texte (Partie II : approche sémantique)
Publié: 2022-09-20Cet article fait suite à la première partie sur l'extraction automatique des mots clés d'un texte. L'article précédent traitait de l'approche dite "traditionnelle" pour extraire des mots clés d'un texte : à base de statistiques ou à base de graphes.
Ici, nous allons explorer des méthodes avec une approche plus sémantique . Dans un premier temps, nous allons introduire les word embeddings et les transformers , c'est-à-dire les plongements contextuels. Puis nous partagerons un exemple avec le même texte à propos de l'album de John Coltrane, Impressions (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 du dernier état de l'art.
Contrairement à l'approche traditionnelle, l'approche sémantique permet de lier des mots appartenant à un même champ lexical, même s'ils sont différents. L'idée derrière cette approche est de s'affranchir du calcul des fréquences d'occurrence des mots dans le texte pour extraire les mots qui ont le plus de sens, c'est-à-dire ceux qui apportent les informations les plus pertinentes par rapport au texte.
Incorporations de mots
Cette méthode remonte à 2013 avec l'introduction d'un modèle appelé word2vec. Il s'agit d'une architecture « simple » de réseaux de neurones artificiels – contrairement aux architectures dites de « Deep Learning » – qui proposent de représenter l'ensemble des mots d'un vocabulaire sous forme de vecteurs. En d'autres termes, chaque mot est représenté par une ligne de nombres. Cet ensemble de vecteurs représente le champ sémantique du vocabulaire, avec la possibilité de comparer ces vecteurs entre eux. En mesurant une distance entre ces vecteurs, nous pouvons dire si les mots sont sémantiquement similaires . La représentation des mots sous la forme d'un tableau de nombres est appelée plongements .
Une fois que vous avez la représentation vectorielle de votre ensemble de mots, vous pouvez comparer ces mots entre eux. Deux mots auront un sens proche si les deux vecteurs ont un très petit angle entre eux : c'est la distance sémantique – une valeur comprise entre -1 et 1. Plus la valeur est proche de 1, plus les mots ont un « semblable » sens. Une valeur proche de -1 au contraire indiquera des sens « opposés », par exemple « bon » et « mauvais ».
L'objectif de ce modèle est de « fabriquer » ces fameux plongements à partir d'une quantité non négligeable de documents texte. Disons que vous avez quelques centaines de milliers de textes, le modèle apprendra à prédire un mot en fonction des mots qui lui sont similaires.
Le modèle prendra en entrée plusieurs groupes de mots – de taille 5 par exemple – et tentera de trouver les meilleures alternatives à <mask>
. Dans votre corpus, il existe des phrases ou des groupes de mots similaires ; on pourra retrouver les mots : « jazz », « rock », « classique » ou « reggae » par exemple. Ainsi, tous ces mots auront des vecteurs assez similaires. Ainsi, le modèle peut rassembler des concepts et des mots qui se trouvent dans un champ lexical similaire.
[Étude de cas] Rechercher et résoudre les problèmes d'indexation
Par contre, il peut y avoir des ambiguïtés pour un mot qui a la même orthographe mais qui n'a pas le même sens dans le contexte : ce sont des mots homographes.
Par exemple:
- Il s'assit au bord de la Seine.
- Elle a déposé l'argent à la banque Chase.
C'est une limitation de ce type de modèle : le mot aura la même représentation vectorielle quel que soit le contexte.
Transformateurs
Une approche plus récente a émergé principalement en 2017 avec Attention Is All You Need de Google. Là où les méthodes word2vec peinaient à représenter deux mots identiques qui n'avaient pas le même sens, les modèles de type transformateurs sont capables de distinguer le sens d'un mot en fonction de son contexte . A noter qu'il existe aussi des modèles NLP capables de prendre en compte des séquences de mots comme les RNN ou les LSTM, mais nous ne les aborderons pas dans cet article.
Les transformateurs populariseront un nouveau concept dans l'architecture des réseaux de neurones : le mécanisme d'attention . Cela vous permet de trouver, dans une séquence de mots, par exemple une phrase, comment chaque mot est lié aux autres.
Le modèle BERT, créé par Google en 2018, est un modèle puissant et populaire. L'avantage de ces modèles de langage est qu'ils reposent sur un modèle pré-entraîné , c'est-à-dire que le modèle a déjà été entraîné sur une quantité importante de textes en anglais, français, etc. Il est alors possible de l'utiliser sur la base d'un analyse plus détaillée. Il est alors possible de l'utiliser tel quel pour comparer du texte, générer des réponses à partir de questions, faire une analyse des sentiments, affiner un corps de texte plus spécifique, etc.
L'image a été générée avec l' outil de visualisation exBERT . Nous pouvons voir que le mot sélectionné « argent » est fortement lié à « déposé » et « banque ». Il est alors plus facile pour le modèle de lever l'ambiguïté sur le mot « banque » grâce au contexte.
Dans le cas de KeyBERT, il s'agit d'un modèle dérivé de BERT appelé Sentence-BERT qui nous permet de comparer facilement des phrases sémantiquement.
Si vous souhaitez en savoir plus sur tous les modèles open source et pré-entraînés disponibles, vous pouvez visiter le hub Huggingface qui se spécialise dans le stockage et le partage d'ensembles de données et de modèles liés au NLP (mais aussi plus récemment à l'audio et à l'image).
Extraction de mots clés avec KeyBERT
Alors, comment pouvons-nous utiliser les transformateurs pour extraire des mots-clés pertinents d'un texte ? Il existe plusieurs projets dont KeyBERT : Extraction minimale de mots-clés avec BERT, une bibliothèque Python open source qui utilise le modèle BERT.
KeyBERT utilisera, par défaut, les transformateurs de phrase basés sur BERT pour représenter une phrase, plutôt qu'un seul mot, comme un vecteur. C'est un moyen très efficace de comparer des phrases ou des groupes de mots. Le principe de l'algorithme KeyBERT est assez simple. Regardons un exemple de texte, puis :
- Le code extraira tous les mots uniques du texte. Dans cette étape, les mots vides sont souvent éliminés.
- Les plongements de tout le texte et de chaque mot sont calculés.
- On peut alors calculer la distance sémantique entre les vecteurs issus des mots et le vecteur qui représente le texte dans son intégralité.
Une fois toutes les distances calculées, on peut extraire les mots qui sont étroitement liés au sens général du texte : ce seront les mots-clés sélectionnés par l'algorithme.
De plus, KeyBERT vous donne la possibilité de sélectionner la longueur des phrases clés : on peut en effet prendre soit des mots simples, soit des paires voire des triplets de mots. De plus, le code fournit un moyen d'implémenter la méthode "Maximal Marginal Relevance" (MMR) afin d'augmenter la diversité des résultats. Cela permet d'éviter la répétition d'un terme, qui peut être pertinent au regard du contenu du document, mais qui est trop souvent présent dans les résultats, par exemple : « concert jazz », « musique jazz », « style jazz » , etc.
Pour conclure, il est également possible d'utiliser d'autres modèles NLP pour KeyBERT tels que les modèles de spaCy ou flair.
Comme dans l'article précédent, voici un exemple des mots-clés extraits par KeyBERT du même article sur l'album de John Coltrane, Impressions :
« impressions coltrane », « quatuor musical », « trésor de jazz », « concert de john », « séquence de perles », « répertoire de graz », « saxophones ténor »
Méthodes d'évaluation
Dans cet article et le précédent, nous avons présenté plusieurs méthodes utilisées pour extraire des mots-clés d'un document : RAKE, Yake, TextRank et KeyBERT. Cependant, il est important de pouvoir choisir le bon selon votre contexte.
Il est donc pertinent de s'intéresser aux méthodes d'évaluation afin de comparer les résultats d'une méthode à une autre. A partir de données (document, keywords)
où les mots- clés ont été définis et validés par l'homme, il est possible de comparer les résultats d'un modèle avec cette « réalité ». Nous avons des métriques telles que la précision, le rappel et le score f1 qui sont souvent utilisées dans les problèmes de classification . On peut donc construire une matrice de confusion en sachant si un mot-clé donné extrait par le modèle est bien dans la liste des mots-clés pertinents.
Comme les modèles peuvent extraire une série de mots-clés, nous comparons souvent les k premiers mots- clés avec la vérité terrain . Comme les résultats peuvent varier selon le nombre de mots- clés que l'on souhaite comparer, nous évaluons le modèle plusieurs fois selon la valeur de k . Ces métriques sont appelées Precision@k
ce qui signifie : « Je calcule la Précision sur le top-k ».
[Ebook] Comment votre système de liens internes affecte Inrank
Précision
Il s'agit du nombre de mots clés corrects dans le top-k de tous les mots clés prédits .
Rappeler
Il s'agit du nombre de mots- clés corrects dans le top-k sur le total des mots- clés de la vérité terrain.
score f1
C'est une combinaison des deux métriques précédentes - ou en d'autres termes une moyenne harmonieuse entre précision et rappel :
CARTE @ k
Précision moyenne moyenne
La première étape pour calculer le MAP consiste à calculer la précision moyenne. Nous allons prendre tous les mots clés trouvés par le modèle et calculer le P@k
pour chaque mot clé pertinent trouvé par le modèle. A titre d'exemple, pour calculer AP@5
avec 3 mots clés pertinents sur les 5 proposés :
mots-clés: jazz concert musique saxophone radio pertinent : 1 0 1 1 0 P@k : 1/1 2/3 3/4 PA : 1/3 (1 + 2/3 + 3/4) ~= 0,80
Notons ici que la position des mots-clés pertinents est importante. En effet, l' AP n'aura pas le même score si les trois premiers mots-clés sur les cinq ne sont pas pertinents (resp. pertinents).
Ensuite, pour chaque (document, keywords)
, nous calculerons la moyenne de tous les AP pour finalement obtenir le MAP.
A noter que ces différentes métriques sont également largement utilisées pour évaluer des modèles de classement ou des systèmes de référencement.
Une petite critique de certaines de ces métriques concerne le nombre de mots-clés de vérité terrain pertinents, qui peut varier par jeu de données 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. Si vous avez jusqu'à 20 mots-clés pertinents, pour unrecall@10
vous comparerez les 10 premiers mots-clés de 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 pertinents, le score de rappel ne dépassera pas 0,5. - En revanche, si le nombre de mots clés de vérité terrain pertinents est très faible par rapport à ceux proposés par le modèle, vous ne pourrez pas obtenir de bons scores de
precision@k
. Pour cinq mots-clés de vérité terrain pertinents,precision@10
aura au mieux un score de 0,5 mais pas plus.
Quelles que soient les métriques utilisées pour évaluer les résultats, il est nécessaire de disposer d'un jeu de données (texte, mots-clés) où les mots- clés ont été préalablement définis par des personnes - les auteurs des textes, les lecteurs, les éditeurs, etc. Il existe plusieurs jeux de données, principalement en Anglais et sur différents sujets : articles scientifiques, abstracts, actualités, informatique, etc. Voici par exemple ce référentiel Github KeywordExtractor-Datasets qui répertorie une vingtaine de jeux de données.
Repères
Au-delà de cette présentation des différentes méthodes d'évaluation, je souhaite également vous proposer un « digest » de quelques articles de recherche qui proposent des repères.
Le premier est par les chercheurs qui ont mis en œuvre le Yake ! méthode dans l'article, "YAKE ! Extraction de mots-clés à partir de documents uniques à l'aide de plusieurs fonctionnalités locales“. Ils ont analysé leur méthode sur une vingtaine de jeux de données différents : PubMed, WikiNews, SemEval2010, et KDD pour les plus connus, en utilisant la plupart des métriques décrites ci-dessus : P@k
, recall@k
, etc. Yake ! sera comparé à une dizaine d'autres méthodes dont Rake, Text Rank, etc. En consolidant tous les jeux de données disponibles et en calculant la précision et le rappel , le Yake! méthode est soit meilleure soit très proche des méthodes de l'état de l'art. Par exemple, pour f1@10
:
Base de données | Beurk ! | Meilleur ou 2ème |
---|---|---|
WikiNouvelles | 0,450 | 0,337 |
KDD | 0,156 | 0,115 |
Inspecter | 0,316 | 0,378 |
Beurk ! est souvent jusqu'à 50-100% mieux, ce qui est proche de la méthode leader.
Dans un autre article plus récent « TNT-KID : Tagger neural basé sur Transformer pour l'identification des mots clés », nous comparons également les méthodes traditionnelles et basées sur Transformer . Les méthodes d'extraction utilisant des transformateurs sont plus performantes. Attention cependant, car il s'agit de méthodes dites "supervisées" contrairement à Rake, KeyBERT et Yake qui n'ont pas besoin d'être entraînés sur un corpus de données pour produire des résultats.
Enfin, intéressons-nous à deux autres benchmarks :
- L'extraction de phrases clés non supervisée simple à l'aide d'incorporations de phrases utilise des intégrations de mots et fonctionne bien par rapport à TextRank sur des ensembles de données tels que Inspec et DUC.
- Un article de blog qui compare 7 algorithmes (en Python) : Keyword Extraction — A Benchmark of 7 Algorithms in Python. L'auteur compare les performances en termes de temps de calcul entre les méthodes KeyBERT, RAKE, Yake ainsi que le nombre de mots pertinents que chaque méthode peut extraire.
Conclusion
Comme vous l'avez vu tout au long de ces deux articles, il existe vraiment une multitude de manières très différentes d'extraire des mots-clés pertinents d'un texte. En regardant les différents benchmarks, vous aurez remarqué qu'il n'y en a pas un qui dépasse vraiment tous les autres en termes de métriques. Cela dépendra du texte et du contexte. Par ailleurs, comme l'a souligné l'auteur de l'article du blog sur les 7 algorithmes d'extraction, on peut aussi compter sur le temps de traitement d'un algorithme face à un texte long.
Ce temps sera certainement un facteur lorsqu'il s'agira de mettre en action un algorithme et de traiter des centaines de milliers de documents. Dans le cas de KeyBERT, vous devriez envisager une infrastructure avec GPU pour augmenter radicalement le temps de traitement. En fait, cette méthode s'appuie sur des Transformers qui ont une architecture Deep Learning qui nécessite beaucoup de calcul.
Si je devais faire un choix, ce serait sûrement entre KeyBERT et Yake. Le premier pour les transformateurs et l'aspect sémantique , le second pour son efficacité et sa rapidité d'exécution.
Références bibliographiques
- L'attention est tout ce dont vous avez besoin, 2017
- BERT : Pré-formation des transformateurs bidirectionnels profonds pour la compréhension du langage, 2019
- Récupération auto-supervisée de mots clés contextuels et de phrases clés avec auto-étiquetage. Sharma P. & Li Y. (2019)
- Exploration de différents extracteurs de mots clés - Mesures et stratégies d'évaluation