Cours 4 · 2026–2027
L'IA symbolique et certaines applications
Du texte aux vecteurs, des vecteurs aux Transformers — et retour aux règles.
John Samuel · CPE Lyon
Intelligence artificielle et Deep Learning
Langage naturel · Embeddings · Transformers · Recommandation · Connaissances · Prolog
sim(A, B) = cos θ = A·B / ‖A‖‖B‖un mot devient un vecteur ; la proximité des vecteurs approxime la proximité des sens
Fil rougeChaque application — étiqueter, traduire, recommander, raisonner — choisit entre règles écrites à la main et modèles appris des données.
4.1 · Intelligence artificielle
Où se situent ces applications : IA, apprentissage machine, apprentissage profond
notes
- Intelligence artificielle : figure deeplearningposition.svg du cours original, redessinée — l'apprentissage profond ⊂ apprentissage machine ⊂ intelligence artificielle.
4.1 · Traitement automatique des langues naturelles
Le TAL analyse et comprend le langage humain
Le traitement automatique des langues (TAL) est un domaine interdisciplinaire de la linguistique informatique qui se concentre sur l'analyse et la compréhension du langage naturel — celui utilisé par les humains.
Analyser et comprendre le langage naturel
Le TAL se consacre à la compréhension du langage naturel dans divers contextes, qu'il s'agisse de textes écrits ou de discours verbal.
Interaction homme-machine
Permettre à une machine de recevoir, d'interpréter et de produire du langage humain.
Syntaxe d'une langue
Parsing : analyser la structure grammaticale des phrases. Étiquetage en parties du discours (PoS) : assigner des catégories grammaticales (verbe, nom, adjectif…) aux mots d'une phrase.
notes
- Le traitement automatique des langues (TAL) est un domaine interdisciplinaire de la linguistique informatique qui se concentre sur l'analyse et la compréhension du langage naturel (celui utilisé par les humains). Aspects clés : analyser et comprendre le langage naturel (humain) — textes écrits ou discours verbal ; interaction homme-machine ; syntaxe d'une langue — parsing (analyser la structure grammaticale des phrases), étiquetage en parties du discours (PoS : assigner des catégories grammaticales comme verbe, nom, adjectif aux mots d'une phrase).
4.1 · Traitement automatique des langues naturelles
Sémantique, traduction, entités, sentiments
Sémantique d'une langue
Représenter et comparer le sens des mots et des phrases — embeddings (4.2), Word2Vec (4.3).
Traduction automatique
Traduire un texte d'une langue à une autre : règles, statistiques, puis réseaux neuronaux (4.6).
Reconnaissance d'entités nommées
Identifier des entités spécifiques — noms de personnes, de lieux ou d'organisations — dans un texte (4.4).
Analyse des sentiments
Mesurer la positivité, la négativité ou la neutralité d'un texte (4.5).
notes
- Sémantique d'une langue ; traduction automatique ; reconnaissance d'entités nommées (NER) : identifier des entités spécifiques (noms de personnes, de lieux ou d'organisations) dans un texte ; analyse des sentiments.
4.1 · Analyse de systèmes TAL
Quatre traitements de base sur les mots
- Racinisation
réduire les mots à leur forme de base ou de racine
4.1.1 - Étiquetage morpho-syntaxique
attribuer des balises aux mots en fonction de leur rôle grammatical et de leur structure
4.1.2 - Lemmatisation
contrairement à la racinisation, ramener les mots à leur forme canonique ou lemme
4.1.3 - Morphologie
l'étude de la structure des mots : comment ils sont formés à partir de morphèmes (unités de sens)
4.1.4
notes
- Racinisation : le processus de réduction des mots à leur forme de base ou de racine. Étiquetage morpho-syntaxique : attribuer des balises ou des étiquettes aux mots dans un texte en fonction de leur rôle grammatical et de leur structure. Lemmatisation : contrairement à la racinisation, ramener les mots à leur forme canonique ou lemmes. Morphologie : l'étude de la structure des mots, notamment comment ils sont formés à partir de morphèmes (unités de sens).
4.1.1 · Racinisation · [Frakes 2003]
Raciniser, c'est couper les affixes pour garder une racine
Normalisation linguistique
La racinisation réduit les mots à leur forme racine en ignorant les affixes, pour simplifier les variations morphologiques des mots. Les algorithmes appliquent généralement des règles heuristiques pour éliminer les préfixes et suffixes courants.
Limitations
La racinisation peut conduire à des résultats non valides : elle peut produire des racines qui ne sont pas des mots réels.
| engineer | engineer |
| engineered | engineer |
| engineering | engineer |
Trois formes, une racine : c'est le but.
notes
- La racinisation, souvent appelée stemming en anglais, est un processus de normalisation linguistique visant à réduire les mots à leur forme racine, en ignorant les affixes. Elle est utilisée pour simplifier les variations morphologiques des mots. Les algorithmes de racinisation appliquent généralement des règles heuristiques pour éliminer les préfixes et suffixes courants. Exemples : Porter, Snowball. Limitations : la racinisation peut conduire à des résultats non valides, car elle peut produire des racines qui ne sont pas des mots réels. Exemple — engineer : engineer, engineered, engineering.
4.1.1 · Racinisation
Quand la racine n'est pas un mot : quatre défauts typiques
| Défaut | Mot d'origine | Racinisation | Forme attendue |
|---|---|---|---|
| Racinisation excessive | happily | happi | happy |
| Racinisation incorrecte | better | bet | better |
| Création de faux mots | unhappiness | unhappi | unhappy |
| Ambiguïté des règles | flies (verbe) | fli | peut être confondu avec le nom « fly » |
notes
- Quelques exemples d'issues potentiellement non valides. Racinisation excessive : « happily » → « happi » (au lieu de « happy »). Racinisation incorrecte : « better » → « bet » (au lieu de « better »). Création de faux mots : « unhappiness » → « unhappi » (crée un faux mot au lieu de « unhappy »). Ambiguïté des règles : « flies » (verbe) → « fli » (peut être confondu avec le nom « fly »).
4.1.1 · Racinisation · évaluation · [Frakes 2003]
Évaluer un raciniseur : sa force et sa similarité à d'autres
Force de l'algorithme
La mesure dans laquelle un algorithme modifie les mots qu'il réduit à leurs racines est appelée la force de l'algorithme.
Métrique de similarité
Une métrique de similarité des algorithmes met en correspondance les n-tuples d'algorithmes (n au moins 2) avec un nombre indiquant la similarité des algorithmes.
notes
- La mesure dans laquelle un algorithme modifie des mots qu'il réduit à ses racines est appelée la force de l'algorithme. Une métrique de similarité des algorithmes met en correspondance les n-tuples d'algorithmes (n au moins 2), avec un nombre indiquant la similarité des algorithmes.
4.1.1 · Racinisation · distance de Hamming · [Frakes 2003]
La distance de Hamming compte les positions qui diffèrent
Définition
La distance de Hamming entre deux chaînes de longueur égale est le nombre de caractères des deux chaînes qui sont différents à la même position.
Distance modifiée \(d\)
Pour les chaînes de longueur inégale, ajouter la différence de longueur à la distance de Hamming pour obtenir une fonction de distance de Hamming modifiée \(d\).
| d(tri, try) | 1 |
| d(tri, tried) | 2 |
| d(tri, trying) | 4 |
try : 1 position diffère ; tried : 0 + 2 de longueur ; trying : 1 + 3.
notes
- La distance de Hamming entre deux chaînes de longueur égale est définie comme le nombre de caractères des deux chaînes qui sont différents à la même position. Pour les chaînes de longueur inégale, ajouter la différence de longueur à la distance de Hamming pour obtenir une fonction de distance de Hamming modifiée d. Exemples — tri : try, tried, trying ; d(tri, try) = 1 ; d(tri, tried) = 2 ; d(tri, trying) = 4.
4.1.1 · Racinisation · force · [Frakes 2003]
Cinq mesures de la force
- Le nombre moyen de mots par classe
- Le facteur de compression de l'indice
\(n\) le nombre de mots dans le corpus, \(s\) le nombre de racines
- Le nombre de mots et de racines qui diffèrent
- Le nombre moyen de caractères supprimés lors de la formation des racines
- La médiane et la moyenne de la distance de Hamming modifiée
entre les mots et leur racine
plus l'algorithme est fort, plus il fusionne de mots en une même racine et plus ce facteur est élevé
notes
- Force : le nombre moyen de mots par classe ; le facteur de compression de l'indice — soit n le nombre de mots dans le corpus et s le nombre de racines, (n − s)/n ; le nombre de mots et de racines qui diffèrent ; le nombre moyen de caractères supprimés lors de la formation des racines ; la médiane et la moyenne de la distance de Hamming modifiée entre les mots et leur racine.
4.1.1 · Racinisation · similarité · [Frakes 2003]
Deux raciniseurs sont similaires si leurs racines sont proches
notes
- Soit A1 et A2 deux algorithmes ; soit W une liste de mots et n le nombre de mots dans W : M(A1, A2, W) = n / Σ d(x_i, y_i) — pour tous les mots w_i en W, x_i est le résultat de l'application de A1 à w_i et y_i le résultat de l'application de A2 à w_i ; des algorithmes plus similaires auront des valeurs plus élevées de M.
4.1.1 · Racinisation · nltk
Deux raciniseurs de NLTK : Porter et Snowball
L'objectif est de réduire les mots à leur forme de base ou racine, en éliminant les suffixes, ce qui permet de regrouper différentes formes d'un mot sous une forme commune.
Porter
Le Porter Stemming Algorithm, créé par Martin Porter en 1980, est basé sur un ensemble de règles heuristiques. Il suit une approche itérative en appliquant une série de transformations séquentielles aux mots.
Snowball
Le Snowball (anciennement appelé Porter2) est une amélioration du Porter Stemmer. Il suit également une approche basée sur des règles, mais il est plus systématique dans son traitement des différents cas de racinisation.
notes
- L'objectif est de réduire les mots à leur forme de base ou racine, en éliminant les suffixes, ce qui permet de regrouper différentes formes d'un mot sous une forme commune. Porter [Porter 1980] : créé par Martin Porter en 1980, basé sur un ensemble de règles heuristiques ; approche itérative, série de transformations séquentielles. Snowball (anciennement Porter2) : amélioration du Porter Stemmer ; approche basée sur des règles, plus systématique.
4.1.1 · Porter
L'algorithme de Porter en trois phases
L'algorithme de Porter, développé par Martin Porter en 1980, réduit les mots à leur forme racine en éliminant les suffixes couramment utilisés en anglais.
- Prétraitement
convertir le mot en minuscules ; identifier le « y » initial et le traiter comme une voyelle s'il est en première position, sinon comme une consonne
- Application des règles de racinisation
une série de règles pour éliminer les suffixes, appliquées séquentiellement jusqu'à ce qu'aucune ne s'applique plus : suppression de suffixes, transformation de suffixes, manipulation de la longueur des mots
- Post-traitement
certains ajustements sont effectués pour améliorer la précision de la racinisation
notes
- L'algorithme de Porter, également connu sous le nom de stemmer de Porter, est un algorithme de racinisation développé par Martin Porter en 1980. Son objectif est de réduire les mots à leur forme racine ou base en éliminant les suffixes couramment utilisés en anglais. Prétraitement : convertir le mot en minuscules ; identifier le préfixe 'y' et le traiter comme une voyelle s'il est en première position, sinon comme une consonne. Application des règles de racinisation : une série de règles pour éliminer les suffixes, appliquées séquentiellement jusqu'à ce qu'aucune ne s'applique plus ; suppression de suffixes spécifiques, transformation de certains suffixes en d'autres, manipulation de la longueur des mots. Post-traitement : ajustements pour améliorer la précision.
4.1.1 · Porter · règles
Supprimer ou traiter les suffixes
| Famille | Règle | Exemple |
|---|---|---|
| Suppression de suffixes | « s » : supprimer le suffixe « s » à la fin des mots | cats → cat |
| « sses » : remplacer par « ss » si la séquence se termine par « sses » | caresses → caress | |
| Suffixes spécifiques | « eed » ou « eedly » : remplacer par « ee » si la séquence se termine par « eed » ou « eedly » | agreed → agree |
| « ed » : supprimer « ed » à la fin du mot s'il y a une voyelle précédente | plastered → plaster | |
| « ing » : supprimer « ing » à la fin du mot s'il y a une voyelle précédente | motoring → motor |
notes
- Règles de suppression de suffixes : « s » — supprimer le suffixe « s » à la fin des mots ; « sses » — remplacer par « ss » si la séquence se termine par « sses ». Règles de traitement de suffixes spécifiques : « eed » ou « eedly » — remplacer par « ee » ; « ed » — supprimer « ed » à la fin du mot s'il y a une voyelle précédente ; « ing » — supprimer « ing » à la fin du mot s'il y a une voyelle précédente. (Les exemples de la colonne de droite sont ceux de l'article de Porter.)
4.1.1 · Porter · règles
Transformer, raccourcir, dédoubler
| Famille | Règle | Exemple |
|---|---|---|
| Transformation de suffixes | « at » : remplacer par « ate » si la séquence se termine par « at » | conflat(ed) → conflate |
| « bl » : ajouter « e » à la fin si la séquence se termine par « bl » | troubl(ed) → trouble | |
| Longueur des mots | si la séquence se termine par une consonne suivie de « y », remplacer par « i » à la fin | happy → happi |
| si la séquence se termine par deux consonnes, supprimer la dernière consonne si la précédente est une voyelle | règle de la mesure de Porter | |
| Doubles consonnes | supprimer une lettre double à la fin du mot | hopp(ing) → hop |
notes
- Règles de transformation de suffixes en d'autres suffixes : « at » — remplacer par « ate » ; « bl » — ajouter « e » à la fin. Règles de manipulation de la longueur des mots : si la séquence se termine par une consonne suivie de « y », remplacer par « i » à la fin ; si la séquence se termine par deux consonnes, supprimer la dernière consonne si la précédente est une voyelle. Règles de manipulation des doubles consonnes : supprimer une lettre double à la fin du mot.
4.1.1 · Racinisation · Porter · nltk
Porter en cinq lignes
from nltk.stem.porter import PorterStemmer words = ["words", "eating", "went", "engineer", "tried"] porter = PorterStemmer() for word in words: print(porter.stem(word), end=" ")
| words | word |
| eating | eat |
| went | went |
| engineer | engin |
| tried | tri |
« went » reste « went » : un raciniseur ne connaît pas la conjugaison irrégulière.
notes
from nltk.stem.porter import PorterStemmer words = ["words", "eating", "went", "engineer", "tried"] porter = PorterStemmer() for word in words: print(porter.stem(word), end=" ")Affichage : word eat went engin tri
4.1.1 · Snowball
Snowball : Porter rendu modulaire et multilingue
L'algorithme de Snowball, développé par Martin Porter comme une extension de son algorithme de Porter, a été conçu pour être plus modulaire et extensible, permettant de créer des stemmers pour différentes langues en utilisant un ensemble commun de conventions.
Modularité
L'algorithme est conçu de manière modulaire, permettant la définition de règles spécifiques pour chaque langue. Chaque règle est encapsulée dans une unité appelée « step ».
Structure du langage
Souvent utilisé pour différentes langues ; la structure du langage est définie par des fichiers de règles spécifiques à chaque langue, qui décrivent comment les suffixes et préfixes doivent être traités.
notes
- L'algorithme de Snowball, également connu sous le nom de Snowball stemmer, est un algorithme de racinisation développé par Martin Porter comme une extension de son algorithme de Porter. Snowball a été conçu pour être plus modulaire et extensible, permettant aux utilisateurs de créer des stemmers pour différentes langues en utilisant un ensemble commun de conventions. Modularité : règles spécifiques pour chaque langue ; chaque règle est encapsulée dans une unité appelée « step ». Structure du langage : fichiers de règles spécifiques à chaque langue qui décrivent comment les suffixes et préfixes doivent être traités.
4.1.1 · Snowball
Extensible, par étapes de règles, itératif
Extensibilité
Les utilisateurs peuvent étendre l'algorithme pour traiter des langues spécifiques en ajoutant des règles appropriées dans un fichier dédié à cette langue.
Étape de règle
Chaque étape (step) est constituée de règles qui décrivent comment transformer un mot. Chaque règle a une forme « condition → action » : la condition spécifie quand appliquer la règle, l'action définit la transformation.
Itération
L'algorithme applique les étapes de règle itérativement jusqu'à ce qu'aucune ne puisse être appliquée. Cette itération réduit progressivement les mots à leur forme racine.
notes
- Extensibilité : étendre l'algorithme pour traiter des langues spécifiques en ajoutant des règles dans un fichier dédié. Étape de règle : chaque étape (step) est constituée de règles « condition → action ». Itération : les étapes de règle sont appliquées itérativement jusqu'à ce qu'aucune ne puisse être appliquée.
4.1.1 · Racinisation · Snowball · nltk
Snowball, même sortie sur ces cinq mots
from nltk.stem.snowball import SnowballStemmer words = ["words", "eating", "went", "engineer", "tried"] snowball = SnowballStemmer("english") for word in words: print(snowball.stem(word))
| words | word |
| eating | eat |
| went | went |
| engineer | engin |
| tried | tri |
SnowballStemmer("french") existe aussi : c'est tout l'intérêt de la modularité.
À retenirRaciniser coupe des suffixes sans dictionnaire : rapide, mais « university » et « universe » donnent tous deux « univers ».
notes
from nltk.stem.snowball import SnowballStemmer words = ["words", "eating", "went", "engineer", "tried"] snowball = SnowballStemmer("english") for word in words: print(snowball.stem(word))Affichage : word eat went engin tri. Raciniser coupe des suffixes sans dictionnaire : rapide, mais « university » et « universe » donnent tous deux « univers ».
4.1.2 · Étiquetage morpho-syntaxique · [Màrquez 2000]
Chaque mot reçoit une balise selon son rôle grammatical et son contexte
Définition
L'étiquetage morpho-syntaxique (Part of Speech Tagging) attribue à chaque mot d'un texte une balise morpho-syntaxique appropriée en fonction de son rôle grammatical et de son contexte d'apparition. Ces balises indiquent la catégorie grammaticale de chaque mot.
Pourquoi
Il permet de capturer la structure grammaticale d'un texte, facilitant ainsi la compréhension et l'analyse linguistique automatisées.
Algorithmes
Ils utilisent généralement des modèles statistiques ou des règles linguistiques pour assigner ces balises en fonction du contexte entourant chaque mot.
notes
- L'étiquetage morpho-syntaxique, également appelé Part of Speech (PoS) Tagging, est un processus dans lequel chaque mot d'un texte se voit attribuer une balise morpho-syntaxique appropriée en fonction de son rôle grammatical et de son contexte d'apparition. Ces balises indiquent la catégorie grammaticale à laquelle chaque mot appartient. Il permet de capturer la structure grammaticale d'un texte, facilitant la compréhension et l'analyse linguistique automatisées. Les algorithmes utilisent généralement des modèles statistiques ou des règles linguistiques pour assigner ces balises en fonction du contexte.
4.1.2 · Étiquetage morpho-syntaxique · [Màrquez 2000]
Quatre balises et leurs exemples
Noms
Indiquent des entités ou objets concrets. Exemple : « chat », « maison », « fleur ».
Verbes
Indiquent des actions ou des états. Exemple : « marcher », « manger », « être ».
Adjectifs
Décrivent ou qualifient des noms. Exemple : « beau », « rapide », « intelligent ».
Adverbes
Modifient des verbes, des adjectifs ou d'autres adverbes ; informations sur la manière, le lieu, le temps, etc. Exemple : « rapidement », « bien », « ici ».
notes
- Exemples de balises — Noms : entités ou objets concrets (« chat », « maison », « fleur »). Verbes : actions ou états (« marcher », « manger », « être »). Adjectifs : décrivent ou qualifient des noms (« beau », « rapide », « intelligent »). Adverbes : modifient des verbes, des adjectifs ou d'autres adverbes ; manière, lieu, temps (« rapidement », « bien », « ici »).
4.1.2 · Construction de modèles linguistiques
Trois façons de construire un modèle : à la main, par les statistiques, par apprentissage
Approche manuelle
Construction de règles linguistiques manuelles pour analyser la structure linguistique. Exemple : définir des règles pour identifier les parties du discours en fonction de la syntaxe.
Approche statistique
Statistiques et probabilités pour modéliser les relations linguistiques : collection de n-grammes (bi-grammes, tri-grammes…), ensemble de fréquences de cooccurrence ; la probabilité d'une séquence de longueur n est estimée à partir de son occurrence dans le corpus d'entraînement.
Apprentissage machine
Techniques d'apprentissage machine pour apprendre automatiquement des modèles linguistiques à partir de données d'entraînement ; les algorithmes reconnaissent des motifs et des structures linguistiques complexes.
notes
- Approche manuelle : construction de règles linguistiques manuelles pour analyser la structure linguistique ; exemple : définir des règles pour identifier les parties du discours en fonction de la syntaxe. Approche statistique : utilisation de statistiques et de probabilités pour modéliser les relations linguistiques ; collection de n-grammes (bi-grammes, tri-grammes, …) ; ensemble de fréquences de cooccurrence ; l'estimation de la probabilité d'une séquence de longueur n est calculée en tenant compte de son occurrence dans le corpus d'entraînement. Apprentissage machine : apprendre automatiquement des modèles linguistiques à partir de données d'entraînement ; reconnaître des motifs et des structures linguistiques complexes.
4.1.2 · nltk · ngrams
Découper une phrase en n-grammes
from nltk import ngrams sentence = "He went to school yesterday and attended the classes" for n in range(1, 5): print("\n{}-grams".format(n)) n_grams = ngrams(sentence.split(), n) for ngram in n_grams: print(ngram, end=" ")
1-grams
('He',) ('went',) ('to',) ('school',) …
2-grams
('He', 'went') ('went', 'to') ('to', 'school') …
3-grams
('He', 'went', 'to') ('went', 'to', 'school') …
4-grams
('He', 'went', 'to', 'school') …9 mots donnent 9 unigrammes, 8 bigrammes, 7 trigrammes, 6 quadrigrammes.
notes
from nltk import ngrams sentence = "He went to school yesterday and attended the classes" for n in range(1, 5): print("\n{}-grams".format(n)) n_grams = ngrams(sentence.split(), n) for ngram in n_grams: print(ngram, end=" ")- Affichage complet — 1-grams : ('He',) ('went',) ('to',) ('school',) ('yesterday',) ('and',) ('attended',) ('the',) ('classes',). 2-grams : ('He', 'went') ('went', 'to') ('to', 'school') ('school', 'yesterday') ('yesterday', 'and') ('and', 'attended') ('attended', 'the') ('the', 'classes'). 3-grams : ('He', 'went', 'to') ('went', 'to', 'school') ('to', 'school', 'yesterday') ('school', 'yesterday', 'and') ('yesterday', 'and', 'attended') ('and', 'attended', 'the') ('attended', 'the', 'classes'). 4-grams : ('He', 'went', 'to', 'school') ('went', 'to', 'school', 'yesterday') ('to', 'school', 'yesterday', 'and') ('school', 'yesterday', 'and', 'attended') ('yesterday', 'and', 'attended', 'the') ('and', 'attended', 'the', 'classes').
4.1.2 · nltk · ngrams
Les n-grammes de la phrase, au complet
| n | n-grammes de « He went to school yesterday and attended the classes » |
|---|---|
| 1 | He · went · to · school · yesterday · and · attended · the · classes |
| 2 | He went · went to · to school · school yesterday · yesterday and · and attended · attended the · the classes |
| 3 | He went to · went to school · to school yesterday · school yesterday and · yesterday and attended · and attended the · attended the classes |
| 4 | He went to school · went to school yesterday · to school yesterday and · school yesterday and attended · yesterday and attended the · and attended the classes |
LectureUn modèle n-gramme estime P(mot | n−1 mots précédents) en comptant ces fenêtres dans un grand corpus.
notes
- Affichage de nltk.ngrams pour n = 1 à 4 (voir la diapositive précédente pour la sortie brute).
4.1.2 · nltk · pos_tag
pos_tag étiquette chaque token
from nltk import pos_tag, word_tokenize sentence = "He goes to school daily" tokens = word_tokenize(sentence) print(pos_tag(tokens))
| He | PRP |
| goes | VBZ |
| to | TO |
| school | NN |
| daily | RB |
[('He', 'PRP'), ('goes', 'VBZ'), ('to', 'TO'), ('school', 'NN'), ('daily', 'RB')]
notes
from nltk import pos_tag, word_tokenize sentence = "He goes to school daily" tokens = word_tokenize(sentence) print(pos_tag(tokens))
Affichage : [('He', 'PRP'), ('goes', 'VBZ'), ('to', 'TO'), ('school', 'NN'), ('daily', 'RB')]
4.1.2 · nltk · pos_tag
Lire les balises du Penn Treebank
| Balise | Signification | Dans la phrase |
|---|---|---|
| PRP | pronoun, personal | He |
| VBZ | verb, present tense, 3rd person singular | goes |
| TO | « to » as preposition | to |
| NN | noun, common, singular or mass | school |
| RB | adverb | daily |
notes
- [('He', 'PRP'), ('goes', 'VBZ'), ('to', 'TO'), ('school', 'NN'), ('daily', 'RB')]. PRP : pronoun, personal ; VBZ : verb, present tense, 3rd person singular ; TO : « to » as preposition ; NN : noun, common, singular or mass ; RB : adverb.
4.1.2 · spaCy
spaCy : installer un modèle, le charger, analyser
# Installation $ pip3 install spacy $ python3 -m spacy download en_core_web_sm # Usage import spacy nlp = spacy.load("en_core_web_sm")
import spacy nlp = spacy.load("en_core_web_sm") doc = nlp("He goes to school daily") for token in doc: print(token.text, token.pos_, token.dep_) # He PRON nsubj · goes VERB ROOT · to ADP prep # school NOUN pobj · daily ADV advmod
notes
- Installation : $ pip3 install spacy ; $ python3 -m spacy download en_core_web_sm. Usage : import spacy ; nlp = spacy.load("en_core_web_sm").
import spacy nlp = spacy.load("en_core_web_sm") doc = nlp("He goes to school daily") for token in doc: print(token.text, token.pos_, token.dep_)Affichage : He PRON nsubj / goes VERB ROOT / to ADP prep / school NOUN pobj / daily ADV advmod
4.1.2 · spaCy
Un token porte lemme, PoS, balise fine, dépendance, forme, mot vide
import spacy nlp = spacy.load("en_core_web_sm") doc = nlp("He goes to school daily") for token in doc: print(token.text, token.lemma_, token.pos_, token.tag_, token.dep_, token.shape_, token.is_alpha, token.is_stop)
| text | lemma_ | pos_ | tag_ | dep_ | shape_ | is_alpha | is_stop |
|---|---|---|---|---|---|---|---|
| He | -PRON- | PRON | PRP | nsubj | Xx | True | True |
| goes | go | VERB | VBZ | ROOT | xxxx | True | False |
| to | to | ADP | IN | prep | xx | True | True |
| school | school | NOUN | NN | pobj | xxxx | True | False |
| daily | daily | ADV | RB | advmod | xxxx | True | False |
notes
import spacy nlp = spacy.load("en_core_web_sm") doc = nlp("He goes to school daily") for token in doc: print(token.text, token.lemma_, token.pos_, token.tag_, token.dep_, token.shape_, token.is_alpha, token.is_stop)Affichage : He -PRON- PRON PRP nsubj Xx True True / goes go VERB VBZ ROOT xxxx True False / to to ADP IN prep xx True True / school school NOUN NN pobj xxxx True False / daily daily ADV RB advmod xxxx True False
4.1.3 · Lemmatisation · [Gesmundo 2012]
Lemmatiser : regrouper les formes fléchies sous leur lemme
Définition
La lemmatisation regroupe les différentes formes d'un mot qui appartiennent au même paradigme morphologique flexionnel et attribue à chaque paradigme son lemme correspondant. Elle ramène les variations flexionnelles d'un mot à sa forme canonique.
Simplifier la représentation
Ramener les mots à leur forme de base facilite la recherche, l'analyse et le traitement automatique du langage naturel.
| go | go |
| goes | go |
| going | go |
| went | go |
| gone | go |
Contrairement à la racinisation, « went » rejoint « go » : le lemme est un mot du dictionnaire.
notes
- La lemmatisation consiste à regrouper les différentes formes d'un mot qui appartiennent au même paradigme morphologique flexionnel et à attribuer à chaque paradigme son lemme correspondant. Cette méthode vise à ramener les variations flexionnelles d'un mot à sa forme canonique ou à sa racine. La lemmatisation permet de simplifier la représentation des mots en les ramenant à leur forme de base, ce qui facilite la recherche, l'analyse et le traitement automatique du langage naturel. Exemple — go : go, goes, going, went, gone.
4.1.3 · Lemmatisation · [Chrupała 2006, Gesmundo 2012]
La lemmatisation comme une tâche d'étiquetage : une transformation en quatre nombres
- Supprimer un suffixe de longueur \(N_s\)
- Ajouter un nouveau suffixe de lemme \(L_s\)
- Supprimer un préfixe de longueur \(N_p\)
- Ajouter un nouveau préfixe de lemme \(L_p\)
enlever 3 lettres (« ing »), ne rien ajouter : le lemmatiseur apprend à prédire ce label pour chaque mot
notes
- La lemmatisation comme une tâche d'étiquetage : attribuer un label pour chaque transformation d'un mot en lemme. 4 étapes [Gesmundo 2012] : supprimer un suffixe de longueur N_s ; ajouter un nouveau suffixe de lemme L_s ; supprimer un préfixe de longueur N_p ; ajouter un nouveau préfixe de lemme L_p. Transformation τ = ⟨N_s, L_s, N_p, L_p⟩ ; (going, go) = ⟨3, ∅, 0, ∅⟩.
4.1.3 · nltk · WordNetLemmatizer
WordNet : une base lexicale de synsets, et son lemmatiseur
WordNet
Une base de données lexicale de la langue anglaise qui organise les mots en synsets (ensembles de synonymes) et les relie par des relations lexicales telles que l'hypernymie (relation « est-un ») et l'hyponymie (relation « a pour instance »).
WordNetLemmatizer
Le module WordNetLemmatizer utilise WordNet pour la lemmatisation : il attribue à chaque mot sa forme canonique ou lemme, en tenant compte des différentes formes flexionnelles.
import nltk nltk.download('punkt') nltk.download('wordnet') nltk.download('averaged_perceptron_tagger')
notes
- WordNet [Miller 1995] : base de données lexicale de la langue anglaise qui organise les mots en synsets (ensembles de synonymes) et les relie par des relations lexicales telles que l'hypernymie (« est-un ») et l'hyponymie (« a pour instance »). WordNetLemmatizer : le module de NLTK utilise WordNet pour la lemmatisation ; il attribue à chaque mot sa forme canonique ou lemme, en tenant compte des formes flexionnelles.
import nltk nltk.download('punkt') nltk.download('wordnet') nltk.download('averaged_perceptron_tagger')
4.1.3 · nltk · WordNetLemmatizer
Sans balise PoS, le lemmatiseur suppose que tout est un nom
from nltk.stem import WordNetLemmatizer sentence = "He went to school yesterday and attended the classes" lemmatizer = WordNetLemmatizer() for word in sentence.split(): print(lemmatizer.lemmatize(word), end=' ')
He went to school yesterday and attended the class
Seul « classes → class » a changé : « went » et « attended » sont restés, faute de savoir que ce sont des verbes.
notes
from nltk.stem import WordNetLemmatizer sentence = "He went to school yesterday and attended the classes" lemmatizer = WordNetLemmatizer() for word in sentence.split(): print(lemmatizer.lemmatize(word), end=' ')Affichage : He went to school yesterday and attended the class
4.1.3 · nltk · WordNetLemmatizer
Avec les balises PoS : convertir Penn Treebank vers WordNet
from nltk.stem import WordNetLemmatizer from nltk import word_tokenize, pos_tag from nltk.corpus import wordnet as wn # Check the complete list of tags http://www.nltk.org/book/ch05.html def wntag(tag): if tag.startswith("J"): return wn.ADJ elif tag.startswith("R"): return wn.ADV elif tag.startswith("N"): return wn.NOUN elif tag.startswith("V"): return wn.VERB return None
| J… (JJ, JJR) | wn.ADJ |
| R… (RB, RBR) | wn.ADV |
| N… (NN, NNS) | wn.NOUN |
| V… (VB, VBD, VBZ) | wn.VERB |
| autre | None |
notes
from nltk.stem import WordNetLemmatizer from nltk import word_tokenize, pos_tag from nltk.corpus import wordnet as wn # Check the complete list of tags http://www.nltk.org/book/ch05.html def wntag(tag): if tag.startswith("J"): return wn.ADJ elif tag.startswith("R"): return wn.ADV elif tag.startswith("N"): return wn.NOUN elif tag.startswith("V"): return wn.VERB return None
4.1.3 · nltk · WordNetLemmatizer
Étiqueter d'abord, lemmatiser ensuite
lemmatizer = WordNetLemmatizer() sentence = "I went to school today and he goes daily" tokens = word_tokenize(sentence) for token, tag in pos_tag(tokens): if wntag(tag): print(lemmatizer.lemmatize(token, wntag(tag)), end=' ') else: print(lemmatizer.lemmatize(token), end=' ')
I go to school today and he go daily
« went » et « goes » deviennent « go » : la balise VBD / VBZ a dit au lemmatiseur qu'il s'agissait de verbes.
À retenirLemmatiser rend le mot du dictionnaire (« était » → « être ») ; il faut connaître la catégorie grammaticale, donc étiqueter d'abord.
notes
lemmatizer = WordNetLemmatizer() sentence = "I went to school today and he goes daily" tokens = word_tokenize(sentence) for token, tag in pos_tag(tokens): if wntag(tag): print(lemmatizer.lemmatize(token, wntag(tag)), end=' ') else: print(lemmatizer.lemmatize(token), end=' ')Affichage : I go to school today and he go daily. Lemmatiser rend le mot du dictionnaire (« était » → « être ») ; il faut connaître la catégorie grammaticale, donc étiqueter d'abord.
4.1.3 · spaCy · lemme
spaCy lemmatise en une ligne, PoS compris
import spacy nlp = spacy.load("en_core_web_sm") doc = nlp("I went to school today and he goes daily") for token in doc: print(token.lemma_, end=' ')
-PRON- go to school today and -PRON- go daily
Le pipeline spaCy a déjà étiqueté chaque token ; -PRON- est le lemme conventionnel des pronoms dans les anciennes versions (les versions récentes renvoient « I » / « he »).
notes
import spacy nlp = spacy.load("en_core_web_sm") doc = nlp("I went to school today and he goes daily") for token in doc: print(token.lemma_, end=' ')Affichage : -PRON- go to school today and -PRON- go daily
4.1.4 · Morphologie
La morphologie lexicale étudie la forme et la structure des mots
Objet
La morphologie lexicale est une branche de la linguistique qui se concentre sur l'étude des mots, de leurs formes, de leurs paradigmes et de l'organisation des catégories grammaticales.
Ce qu'elle examine
Les parties du discours, l'intonation, l'accentuation, ainsi que la manière dont le contexte peut influencer la prononciation et le sens d'un mot.
Comment
Elle explore la structure interne des mots et comment ils interagissent avec la grammaire et le contexte pour communiquer des significations spécifiques.
notes
- La morphologie lexicale est une branche de la linguistique qui se concentre sur l'étude des mots, de leurs formes, de leurs paradigmes et de l'organisation des catégories grammaticales. Elle examine de près les parties du discours, l'intonation, l'accentuation, ainsi que la manière dont le contexte peut influencer la prononciation et le sens d'un mot. Elle explore la structure interne des mots et comment ils interagissent avec la grammaire et le contexte pour communiquer des significations spécifiques.
4.1.4 · spaCy · displaCy
Visualiser l'arbre de dépendances avec displaCy
import spacy from spacy import displacy nlp = spacy.load("en_core_web_sm") doc = nlp("He goes to school daily") displacy.render(doc, style="dep", jupyter=True)
notes
import spacy from spacy import displacy nlp = spacy.load("en_core_web_sm") doc = nlp("He goes to school daily") displacy.render(doc, style="dep", jupyter=True)Figure : spacy-dep-output.svg.
4.2 · Word Embeddings
Un embedding : chaque mot devient un vecteur dense, les voisins ont un sens voisin
Des mots aux vecteurs de réels
Les embeddings de mots sont une technique d'apprentissage de caractéristiques où des mots ou des phrases du vocabulaire sont associés à des vecteurs de nombres réels. Chaque mot est représenté par un vecteur dense dans un espace continu, de telle sorte que des mots similaires aient des vecteurs similaires, capturant ainsi les relations sémantiques.
Le contexte fait le sens
Quantifier et catégoriser les similarités sémantiques en fonction des propriétés de distribution dans de grands échantillons de données linguistiques : les mots qui apparaissent dans des contextes similaires auront des embeddings similaires.
notes
- Les embeddings de mots sont une technique d'apprentissage de caractéristiques où des mots ou des phrases du vocabulaire sont associés à des vecteurs de nombres réels. L'idée principale est de représenter chaque mot par un vecteur dense dans un espace continu, de telle sorte que des mots similaires aient des vecteurs similaires, capturant ainsi les relations sémantiques entre les mots. Quantifier et catégoriser les similarités sémantiques entre les éléments linguistiques en fonction de leurs propriétés de distribution dans de grands échantillons de données linguistiques. En d'autres termes, les mots qui ont des contextes similaires ou qui apparaissent dans des contextes similaires auront des embeddings de mots similaires. (Figure : projection illustrative en deux dimensions.)
4.2 · Word Embeddings
Deux avantages : dense plutôt que creux, et sémantique
Représentation dense
Les embeddings fournissent une représentation dense, contrairement à une représentation creuse (one-hot) où chaque mot serait représenté par un vecteur binaire indiquant sa présence ou son absence.
Capture des relations sémantiques
Les embeddings captent les relations sémantiques et les similitudes entre les mots, ce qui les rend utiles dans de nombreuses tâches de traitement du langage naturel.
| one-hot | 50 000 dimensions, un seul 1 |
| embedding | 300 dimensions, toutes non nulles |
| distance one-hot(chat, chien) | identique à celle de (chat, fusée) |
| distance embedding(chat, chien) | petite |
notes
- Avantages de Word Embeddings — Représentation dense : contrairement à une représentation creuse où chaque mot serait représenté par un vecteur binaire indiquant sa présence ou son absence. Capture des relations sémantiques : les embeddings captent les relations sémantiques et les similitudes entre les mots, utiles dans de nombreuses tâches de TAL.
4.2 · Word Embeddings
Applications — et la limite des embeddings statiques
Similarité sémantique
Mesurer la similarité sémantique entre les mots.
Traduction automatique
Améliorer les performances des systèmes de traduction automatique.
Analyse des sentiments
Mieux comprendre le contexte et les relations sémantiques dans l'analyse des sentiments, entre autres applications.
LimiteUn vecteur unique par mot, quel que soit le contexte (« avocat » le fruit ou le métier). Les embeddings contextuels des Transformers (BERT, voir 4.7) donnent un vecteur différent à chaque occurrence et ont supplanté les embeddings statiques depuis 2018.
notes
- Applications de Word Embeddings : similarité sémantique (mesurer la similarité sémantique entre les mots) ; traduction automatique (améliorer les performances) ; analyse des sentiments (mieux comprendre le contexte et les relations sémantiques). Limite : un vecteur unique par mot, quel que soit le contexte (« avocat » le fruit ou le métier). Les embeddings contextuels produits par les Transformers (BERT, voir 4.7) donnent un vecteur différent à chaque occurrence et ont supplanté les embeddings statiques depuis 2018.
4.2 · spaCy
spaCy : une bibliothèque NLP rapide, précise, facile
spaCy est une bibliothèque open-source pour le traitement du langage naturel en Python. Elle offre des outils performants pour diverses tâches, de l'analyse syntaxique à la reconnaissance d'entités nommées, et est conçue pour être rapide, précise et facile à utiliser.
- Collecte de données
de vastes ensembles annotés : corpus textuels avec annotations pour l'analyse syntaxique, la NER, etc.
- Annotation
manuelle : parties du discours, entités nommées, relations syntaxiques…
- Entraînement initial
sur ces données annotées, pour apprendre les structures linguistiques ; réseaux de neurones
- Optimisation et réglage
itérations en ajustant les hyperparamètres
notes
- spaCy est une bibliothèque open-source pour le traitement du langage naturel (NLP) en Python. Elle offre des outils performants et efficaces pour effectuer diverses tâches, de l'analyse syntaxique à la reconnaissance d'entités nommées. spaCy est conçu pour être rapide, précis et facile à utiliser. Collecte de données : les modèles spaCy sont souvent entraînés sur de vastes ensembles de données annotées (corpus textuels avec annotations pour l'analyse syntaxique, la NER, etc.). Annotation des données : annotées manuellement avec des informations linguistiques (parties du discours, entités nommées, relations syntaxiques). Entraînement initial : sur ces ensembles annotés pour apprendre les structures linguistiques ; peut inclure des réseaux de neurones. Optimisation et réglage : itérations sur l'entraînement en ajustant les hyperparamètres.
4.2 · spaCy
Évaluer, empaqueter, télécharger : le cycle d'un modèle spaCy
- Évaluation
sur des ensembles de test distincts : précision, rappel et autres métriques spécifiques à la tâche
- Modèles pré-entraînés
spaCy construit des modèles linguistiques pré-entraînés qui encapsulent les connaissances acquises sur la structure linguistique
- Téléchargement et utilisation
les utilisateurs téléchargent ces modèles et les utilisent sans entraîner un modèle de zéro
# Installation du modèle spaCy (en_core_web_lg)
$ python3 -m spacy download en_core_web_lg
# Chargement du modèle spaCy import spacy nlp = spacy.load("en_core_web_lg")
Repèreen_core_web_lg est un modèle vectoriel large d'anglais ; spaCy en propose pour différentes langues et tâches.
notes
- Évaluation : sur des ensembles de données de test distincts pour mesurer précision, rappel et autres métriques. Construction des modèles linguistiques pré-entraînés : une fois le modèle entraîné et évalué, spaCy construit des modèles pré-entraînés qui encapsulent les connaissances acquises. Téléchargement et utilisation : les utilisateurs téléchargent ces modèles et les utilisent dans leurs applications sans entraîner un modèle de zéro. spaCy propose différents modèles pré-entraînés pour différentes langues et tâches ; en_core_web_lg est un modèle vectoriel large d'anglais. Installation : $ python3 -m spacy download en_core_web_lg. Chargement : import spacy ; nlp = spacy.load("en_core_web_lg").
4.2 · spaCy
Cinq avantages de spaCy
Performance
Rapide : adapté au traitement de grands volumes de texte en temps réel.
Modèles pré-entraînés
Pour plusieurs langues, sans entraînement à partir de zéro.
Analyse linguistique riche
Parties du discours, entités nommées, relations syntaxiques, lemmes.
API conviviale
Intuitive : des tâches complexes en quelques lignes de code concises.
Écosystème
S'intègre bien avec les autres bibliothèques Python.
notes
- Avantages de spaCy — Performance : rapide, adapté au traitement de grands volumes de texte en temps réel. Modèles pré-entraînés : pour plusieurs langues, sans entraînement à partir de zéro. Analyse linguistique riche : parties du discours, entités nommées, relations syntaxiques, lemmes. API conviviale : intuitive, des tâches complexes en quelques lignes ; l'API facilite la réalisation de tâches complexes avec des lignes de code concises. Écosystème Python : s'intègre bien avec les autres bibliothèques Python.
4.2 · spaCy
Quatre limites de spaCy
Dépendance des modèles linguistiques
La qualité des résultats dépend de la qualité du modèle pré-entraîné. Dans des domaines de spécialité ou pour des langues moins courantes, les modèles peuvent être moins performants.
Gestion des entités nommées
spaCy excelle en reconnaissance d'entités nommées, mais peut avoir du mal avec des tâches plus complexes impliquant des variations contextuelles.
Taille des modèles
Les modèles pré-entraînés peuvent être volumineux : un inconvénient avec des restrictions de mémoire ou pour des applications mobiles.
Personnalisation limitée
Les fonctionnalités de personnalisation peuvent être limitées par rapport à d'autres bibliothèques NLP plus flexibles.
notes
- Limites de spaCy — Dépendance des modèles linguistiques : la qualité des résultats dépend de la qualité du modèle ; domaines de spécialité ou langues moins courantes moins bien couverts. Gestion des entités nommées : difficultés avec des tâches plus complexes impliquant des variations contextuelles. Taille des modèles : volumineux, inconvénient en mémoire restreinte ou sur mobile. Personnalisation limitée par rapport à d'autres bibliothèques NLP plus flexibles.
4.2 · spaCy · similarity
Comparer des mots deux à deux avec similarity()
import spacy # Charger le modèle spaCy nlp = spacy.load("en_core_web_lg") # Définir les mots à comparer words_to_compare = ["dog", "cat", "apple"] # Calculer la similarité entre les paires de mots for i in range(len(words_to_compare)): for j in range(i + 1, len(words_to_compare)): word1, word2 = words_to_compare[i], words_to_compare[j] doc1, doc2 = nlp(word1), nlp(word2) similarity_score = doc1.similarity(doc2) print("Similarité ({} / {}): {:.4f}".format(word1, word2, similarity_score))
| Similarité (dog / cat) | 0.80 |
| Similarité (dog / apple) | 0.24 |
| Similarité (cat / apple) | 0.28 |
Valeurs typiques d'en_core_web_lg (le cours original laisse « … ») : deux animaux sont proches, un fruit est loin.
notes
import spacy # Charger le modèle spaCy nlp = spacy.load("en_core_web_lg") # Définir les mots à comparer words_to_compare = ["dog", "cat", "apple"] # Calculer la similarité entre les paires de mots for i in range(len(words_to_compare)): for j in range(i + 1, len(words_to_compare)): word1, word2 = words_to_compare[i], words_to_compare[j] doc1, doc2 = nlp(word1), nlp(word2) similarity_score = doc1.similarity(doc2) print("Similarité ({} / {}): {:.4f}".format(word1, word2, similarity_score))Affichage : Similarité (dog / cat): … / Similarité (dog / apple): … / Similarité (cat / apple): … (les valeurs de la diapositive sont indicatives).
4.2 · spaCy · vector
Le vecteur d'un token, et ce qu'en fait la similarité cosinus
import spacy # Charger le modèle spaCy nlp = spacy.load("en_core_web_sm") # Texte à analyser text_to_analyze = "cat" doc = nlp(text_to_analyze) # Imprimer les vecteurs de chaque jeton sur une seule ligne vector_list = [token.vector for token in doc] print("Vecteurs de '{}' : {}".format(text_to_analyze, vector_list))
token.vector renvoie 96 réels avec en_core_web_sm, 300 avec en_core_web_lg
À retenirUn mot = un vecteur ; la similarité cosinus entre vecteurs approxime la similarité de sens.
notes
import spacy # Charger le modèle spaCy nlp = spacy.load("en_core_web_sm") # Texte à analyser text_to_analyze = "cat" doc = nlp(text_to_analyze) # Imprimer les vecteurs de chaque jeton sur une seule ligne vector_list = [token.vector for token in doc] print("Vecteurs de '{}' : {}".format(text_to_analyze, vector_list))Un mot = un vecteur ; la similarité cosinus entre vecteurs approxime la similarité de sens.
4.3 · Word2Vec · [Mikolov 2013]
Word2Vec : un réseau apprend un vecteur par mot à partir d'un corpus
Word2Vec a marqué un tournant significatif dans la représentation des mots en apprentissage automatique : une technique publiée en 2013 par une équipe dirigée par Tomas Mikolov chez Google.
Représentation vectorielle
Word2Vec représente chaque mot distinct par un vecteur dans un espace continu. Ces vecteurs captent les relations sémantiques et syntaxiques entre les mots.
Apprentissage basé sur un réseau neuronal
Le modèle utilise un réseau neuronal pour apprendre des associations de mots à partir d'un vaste corpus de texte, capturant des nuances complexes dans la signification des mots.
Entrée et sortie
Word2Vec prend en entrée un large corpus de texte et produit un espace vectoriel, généralement de plusieurs centaines de dimensions, qui permet de mesurer la similarité sémantique entre les mots.
notes
- Word2Vec a marqué un tournant significatif dans la représentation des mots dans le domaine de l'apprentissage automatique. C'est une technique publiée en 2013 par une équipe de chercheurs dirigée par Tomas Mikolov chez Google. Représentation vectorielle : chaque mot distinct est représenté par un vecteur dans un espace continu ; ces vecteurs captent les relations sémantiques et syntaxiques. Apprentissage basé sur un réseau neuronal : associations de mots apprises à partir d'un vaste corpus ; nuances complexes de la signification. Entrée et sortie : un large corpus en entrée, un espace vectoriel de plusieurs centaines de dimensions en sortie ; similarité sémantique mesurable.
4.3 · Word2Vec · [Mikolov 2013]
Implémenter Word2Vec : six étapes
- Prétraitement des données
le texte est nettoyé pour éliminer les éléments indésirables tels que la ponctuation et les stopwords
- Création d'un vocabulaire
les mots uniques du corpus construisent un vocabulaire ; chaque mot est associé à un index
- Génération de paires mot-contexte
pour chaque mot, des paires mot-contexte sont créées avec une fenêtre contextuelle glissante ; ce sont les exemples d'entraînement
- Construction du modèle
un réseau neuronal : une couche d'entrée représentant les mots, une couche cachée (skip-gram ou CBOW), une couche de sortie pour prédire le mot suivant dans le contexte
- Entraînement
sur les paires mot-contexte, en ajustant les poids pour minimiser la différence entre prédictions et vrais mots du contexte
- Obtention des embeddings
les vecteurs de mots appris sont extraits : chaque mot du vocabulaire est représenté par un vecteur dense dans l'espace continu
notes
- L'implémentation de Word2Vec se déroule en plusieurs étapes. Prétraitement des données : le texte est nettoyé et prétraité pour éliminer la ponctuation et les stopwords. Création d'un vocabulaire : les mots uniques du corpus ; chaque mot est associé à un index. Génération de paires mot-contexte : fenêtre contextuelle glissante ; ces paires servent d'exemples d'entraînement. Construction du modèle Word2Vec : couche d'entrée représentant les mots, couche cachée (skip-gram ou CBOW), couche de sortie pour prédire le mot suivant dans le contexte. Entraînement du modèle : ajustement des poids pour minimiser la différence entre les prédictions et les vrais mots du contexte. Obtention des embeddings : les vecteurs de mots appris sont extraits ; chaque mot est représenté par un vecteur dense dans l'espace continu.
4.3 · Word2Vec
Contextes communs, vecteurs voisins
Positionnement dans l'espace
Les vecteurs de mots sont positionnés de telle sorte que les mots qui partagent des contextes communs dans le corpus soient situés à proximité les uns des autres dans l'espace.
Une simple fonction mathématique
La similarité cosinus entre les vecteurs indique le niveau de similarité sémantique entre les mots représentés par ces vecteurs.
notes
- Les vecteurs de mots sont positionnés dans l'espace vectoriel de telle sorte que les mots qui partagent des contextes communs dans le corpus soient situés à proximité les uns des autres dans l'espace. Une simple fonction mathématique (par exemple, la similarité cosinus entre les vecteurs) indique le niveau de similarité sémantique entre les mots représentés par ces vecteurs : similarity = cos(θ) = A·B / (‖A‖ ‖B‖) = Σ A_i B_i / (√Σ A_i² √Σ B_i²).
4.3.1 · Context Bag of Words (CBOW)
CBOW prédit le mot courant à partir de ses voisins, sans tenir compte de l'ordre
Un modèle spécifique de Word2Vec
La prédiction du mot courant se fait en utilisant une fenêtre de mots contextuels voisins. L'ordre des mots de contexte n'influence pas la prédiction, ce qui en fait une approche robuste.
Modèle prédictif
CBOW prédit le mot cible en se basant sur le contexte qui l'entoure, mais contrairement à d'autres modèles, l'ordre spécifique des mots dans ce contexte n'est pas pris en compte.
notes
- CBOW est un modèle spécifique de Word2Vec. Dans ce modèle, la prédiction du mot courant se fait en utilisant une fenêtre de mots contextuels voisins. L'ordre des mots de contexte n'influence pas la prédiction, ce qui en fait une approche robuste. Modèle prédictif : CBOW prédit le mot cible en se basant sur le contexte qui l'entoure, mais l'ordre spécifique des mots dans ce contexte n'est pas pris en compte. Figure : cbow.svg.
4.3.1 · Context Bag of Words (CBOW)
CBOW : entrée, architecture, entraînement, sortie, avantages
Entrée
Une fenêtre de mots contextuels entourant le mot cible, définie par un paramètre appelé la taille de la fenêtre.
Architecture
Un réseau neuronal à une seule couche cachée : la couche d'entrée représente les mots du contexte, la couche de sortie le mot cible à prédire.
Entraînement
Ajuster les poids du réseau pour minimiser la différence entre les prédictions et le mot cible réel, par rétropropagation du gradient.
Sortie
Une fois entraîné, les poids de la couche d'entrée sont utilisés comme embeddings de mots : chaque mot est un vecteur dans un espace continu.
notes
- Entrée : une fenêtre de mots contextuels entourant le mot cible, définie par la taille de la fenêtre. Architecture : réseau neuronal à une seule couche cachée ; la couche d'entrée représente les mots du contexte, la couche de sortie représente le mot cible à prédire. Entraînement : ajuster les poids pour minimiser la différence entre les prédictions et le mot cible réel, par rétropropagation du gradient. Sortie : les poids de la couche d'entrée servent d'embeddings de mots ; ils capturent les relations sémantiques et représentent chaque mot par un vecteur dans un espace continu. Avantages : CBOW est souvent plus rapide à entraîner que le Skip-gram et peut être plus efficace dans des contextes où l'ordre séquentiel des mots n'est pas critique.
4.3.1 · gensim · CBOW
Entraîner un CBOW avec gensim : sg=0
import gensim from nltk.tokenize import sent_tokenize, word_tokenize # Données d'exemple data = "This is a class. This is a table" # Prétraitement des données en utilisant nltk pour obtenir des phrases et des mots sentences = [word_tokenize(sentence.lower()) for sentence in sent_tokenize(data)] # Construction du modèle CBOW avec Gensim # min_count: Ignorer tous les mots dont la fréquence totale est inférieure à cette valeur. # vector_size: Dimension des embeddings de mots # window: Distance maximale entre le mot courant et le mot prédit dans une phrase cbow_model = gensim.models.Word2Vec(sentences, min_count=1, vector_size=100, window=3, sg=0)
| min_count | 1 — garder tous les mots |
| vector_size | 100 dimensions |
| window | 3 mots de chaque côté |
| sg | 0 → CBOW |
sentences : [['this', 'is', 'a', 'class', '.'], ['this', 'is', 'a', 'table']]
notes
import gensim from nltk.tokenize import sent_tokenize, word_tokenize # Données d'exemple data = "This is a class. This is a table" # Prétraitement des données en utilisant nltk pour obtenir des phrases et des mots sentences = [word_tokenize(sentence.lower()) for sentence in sent_tokenize(data)] # Construction du modèle CBOW avec Gensim # min_count: Ignorer tous les mots dont la fréquence totale est inférieure à cette valeur. # vector_size: Dimension des embeddings de mots # window: Distance maximale entre le mot courant et le mot prédit dans une phrase cbow_model = gensim.models.Word2Vec(sentences, min_count=1, vector_size=100, window=3, sg=0)
4.3.1 · gensim · CBOW
Lire le modèle : vecteur, similarité, mots les plus proches
# Affichage du vecteur du mot "this" print("Vecteur du mot 'this':", cbow_model.wv["this"]) # Similarité entre les mots "this" et "class" print("Similarité entre 'this' et 'class':", cbow_model.wv.similarity("this", "class")) # Prédiction des deux mots les plus probables suivant le mot "is" predicted_words = cbow_model.wv.most_similar(positive=["is"], topn=2) print("Prédiction des mots suivant 'is':", predicted_words)
| wv["this"] | un tableau de 100 réels |
| wv.similarity(a, b) | un cosinus dans [−1, 1] |
| wv.most_similar(…, topn=2) | deux (mot, score) |
Avec deux phrases seulement, les valeurs sont quasi aléatoires : Word2Vec a besoin de millions de mots.
notes
# Affichage du vecteur du mot "this" print("Vecteur du mot 'this':", cbow_model.wv["this"]) # Similarité entre les mots "this" et "class" print("Similarité entre 'this' et 'class':", cbow_model.wv.similarity("this", "class")) # Prédiction des deux mots les plus probables suivant le mot "is" predicted_words = cbow_model.wv.most_similar(positive=["is"], topn=2) print("Prédiction des mots suivant 'is':", predicted_words)
4.3.2 · Skip-grams
Skip-gram fait l'inverse : du mot courant vers ses voisins
Prédire la fenêtre voisine
Le modèle Skip-gram, autre variante de Word2Vec, prend un mot source (le mot courant) et prédit les mots qui l'entourent dans une fenêtre de contexte donnée.
Le mot source
Le mot source est la donnée d'entrée du modèle ; la sortie souhaitée est la distribution des probabilités des mots du contexte.
notes
- Le modèle Skip-gram est une autre variante de Word2Vec qui se concentre sur la prédiction de la fenêtre voisine des mots de contexte à partir du mot courant. Objectif : prendre un mot source (le mot courant) et prédire les mots qui l'entourent dans une fenêtre de contexte donnée. Entrée : le mot source ; la sortie souhaitée est la distribution des probabilités des mots du contexte. Figure : skipgram.svg.
4.3.2 · Skip-grams
Skip-gram : architecture, entraînement, pondération, embeddings
Architecture
Un réseau à une seule couche cachée : la couche d'entrée représente le mot source, la couche de sortie les mots du contexte.
Entraînement
Les poids sont ajustés pour minimiser la différence entre les prédictions et la véritable distribution des mots du contexte.
Pondération du contexte
L'architecture accorde plus de poids aux mots de contexte proches du mot source qu'à ceux plus éloignés : mieux capturer les relations locales.
Embeddings
Une fois entraîné, les poids de la couche d'entrée sont les embeddings de mots, qui capturent les similitudes sémantiques.
notes
- Architecture : réseau neuronal à une seule couche cachée ; la couche d'entrée représente le mot source, la couche de sortie représente les mots du contexte. Entraînement : les poids sont ajustés pour minimiser la différence entre les prédictions et la véritable distribution des mots du contexte, par rétropropagation du gradient. Pondération du contexte : l'architecture accorde plus de poids aux mots de contexte proches du mot source ; mieux capturer les relations sémantiques et syntaxiques locales. Embeddings : les poids de la couche d'entrée servent d'embeddings ; ils capturent les similitudes sémantiques entre les mots.
4.3.2 · gensim · Skip-gram
Entraîner un Skip-gram avec gensim : sg=1
import gensim from nltk.tokenize import sent_tokenize, word_tokenize # Données d'exemple data = "This is a class. This is a table" # Prétraitement des données en utilisant nltk pour obtenir des phrases et des mots sentences = [word_tokenize(sentence.lower()) for sentence in sent_tokenize(data)] # Construction du modèle Skip-gram avec Gensim # min_count: Ignorer tous les mots dont la fréquence totale est inférieure à cette valeur. # vector_size: Dimension des embeddings de mots # window: Distance maximale entre le mot courant et le mot prédit dans une phrase # sg: 1 pour skip-gram ; sinon CBOW. skipgram_model = gensim.models.Word2Vec(sentences, min_count=1, vector_size=100, window=5, sg=1)
| sg | 1 → Skip-gram |
| window | 5 |
| le reste | identique au CBOW |
Un seul paramètre sépare les deux modèles dans gensim.
notes
import gensim from nltk.tokenize import sent_tokenize, word_tokenize # Données d'exemple data = "This is a class. This is a table" # Prétraitement des données en utilisant nltk pour obtenir des phrases et des mots sentences = [word_tokenize(sentence.lower()) for sentence in sent_tokenize(data)] # Construction du modèle Skip-gram avec Gensim # min_count: Ignorer tous les mots dont la fréquence totale est inférieure à cette valeur. # vector_size: Dimension des embeddings de mots # window: Distance maximale entre le mot courant et le mot prédit dans une phrase # sg: 1 pour skip-gram ; sinon CBOW. skipgram_model = gensim.models.Word2Vec(sentences, min_count=1, vector_size=100, window=5, sg=1)
4.3.2 · gensim · Skip-gram
Interroger le Skip-gram
# Affichage du vecteur du mot "this" print("Vecteur du mot 'this':", skipgram_model.wv["this"]) # Similarité entre les mots "this" et "class" print("Similarité entre 'this' et 'class':", skipgram_model.wv.similarity("this", "class")) # Prédiction des mots les plus probables dans le contexte entourant le mot "is" predicted_words = skipgram_model.wv.most_similar(positive=["is"], topn=2) print("Prédiction des mots dans le contexte de 'is':", predicted_words)
| CBOW | contexte → mot ; rapide ; mots fréquents |
| Skip-gram | mot → contexte ; plus lent ; mots rares mieux appris |
À retenirCBOW prédit le mot à partir du contexte, skip-gram le contexte à partir du mot ; les vecteurs sont un sous-produit de cette tâche.
notes
# Affichage du vecteur du mot "this" print("Vecteur du mot 'this':", skipgram_model.wv["this"]) # Similarité entre les mots "this" et "class" print("Similarité entre 'this' et 'class':", skipgram_model.wv.similarity("this", "class")) # Prédiction des mots les plus probables dans le contexte entourant le mot "is" predicted_words = skipgram_model.wv.most_similar(positive=["is"], topn=2) print("Prédiction des mots dans le contexte de 'is':", predicted_words)CBOW prédit le mot à partir du contexte, skip-gram le contexte à partir du mot ; les vecteurs sont un sous-produit de cette tâche.
4.4 · Reconnaissance d'entités nommées
La NER extrait des entités typées d'un texte non structuré
Identifier et classer
La reconnaissance d'entités nommées consiste à identifier et classer des entités spécifiques dans un texte : personnes, lieux, organisations, dates, montants monétaires, etc.
Le but est d'extraire des informations structurées à partir de données textuelles non structurées.
notes
- La Reconnaissance d'Entités Nommées (NER) consiste à identifier et classer des entités spécifiques dans un texte. Ces entités peuvent inclure des personnes, des lieux, des organisations, des dates, des montants monétaires, etc. Le but est d'extraire des informations structurées à partir de données textuelles non structurées. Figure : datarepresentation.svg.
4.4 · Reconnaissance d'entités nommées
Identifier, classer, contextualiser
Identification d'entités
Identifier les mots ou groupes de mots qui représentent des entités dans le texte : noms de personnes, de lieux, d'organisations, etc.
Classification des entités
Une fois identifiées, les entités sont classifiées dans des catégories : « PERSON » pour une personne, « LOCATION » pour un lieu, « ORGANIZATION » pour une organisation, et ainsi de suite.
Contextualisation
La NER tient compte du contexte : « banc » peut être une entité financière dans une discussion sur l'économie, mais une entité physique dans le contexte d'un parc.
notes
- Identification d'entités : la première étape de la NER consiste à identifier les mots ou groupes de mots qui représentent des entités dans le texte (noms de personnes, de lieux, d'organisations, etc.). Classification des entités : une fois identifiées, elles sont classifiées dans des catégories spécifiques : « PERSON », « LOCATION », « ORGANIZATION », etc. Contextualisation : la NER tient compte du contexte ; « banc » peut être classé comme une entité financière dans le contexte d'une discussion sur l'économie, mais comme une entité physique dans le contexte d'un parc.
4.4 · Reconnaissance d'entités nommées
Relations entre entités, et à quoi sert la NER
Relations entre entités
Dans certains cas, la NER inclut la détection des relations entre différentes entités du texte — par exemple la relation entre une personne et l'organisation où elle travaille.
Applications pratiques
Amélioration de la recherche d'informations, extraction de relations, catégorisation de documents, création de résumés automatiques, etc.
notes
- Relations entre entités : dans certains cas, la NER peut également inclure la détection des relations entre différentes entités dans le texte ; par exemple, la relation entre une personne et l'organisation où elle travaille. Applications pratiques : amélioration de la recherche d'informations, extraction de relations, catégorisation de documents, création de résumés automatiques, etc.
4.4 · NER · algorithmes
Des HMM aux réseaux de neurones et aux Transformers
La NER est souvent réalisée à l'aide de modèles d'apprentissage automatique ; plusieurs algorithmes sont couramment employés.
Modèles de Markov cachés (HMM)
La séquence des étiquettes d'entités est modélisée comme une séquence cachée derrière la séquence observable de mots.
Réseaux de neurones
Les réseaux récurrents, bidirectionnels et à mémoire à court terme ont montré des performances significatives en NER.
Transformers
Les modèles basés sur les transformers, tels que BERT et ses variantes, ont considérablement amélioré la NER : pré-entraînés sur de grandes quantités de texte, ils captent des représentations contextuelles riches.
notes
- La NER est souvent réalisée à l'aide de modèles d'apprentissage automatique. Modèles de Markov cachés (HMM) : modéliser la séquence des étiquettes d'entités en tant que séquence cachée derrière la séquence observable de mots. Réseaux de neurones : RNN, réseaux récurrents bidirectionnels (BiRNN), LSTM. Transformers : BERT (Bidirectional Encoder Representations from Transformers) et ses variantes ; pré-entraînés sur de grandes quantités de données textuelles, ils captent des représentations contextuelles riches.
4.4 · NER · algorithmes
Modèles statistiques, règles, entraînement supervisé
Modèles statistiques traditionnels
Modèles de séquence et classificateurs basés sur des caractéristiques, utilisés dans des scénarios où des quantités limitées de données annotées sont disponibles.
Règles et expressions régulières
Des règles manuelles ou des expressions régulières peuvent extraire des entités spécifiques, surtout lorsque des motifs clairs et récurrents peuvent être définis — dates, montants, numéros.
Entraînement supervisé
Annoter manuellement un ensemble de données avec des entités nommées, puis entraîner un modèle sur ces données annotées.
notes
- Modèles statistiques traditionnels : modèles de séquence et classificateurs basés sur des caractéristiques, utilisés lorsque peu de données annotées sont disponibles. Règles et expressions régulières : règles manuelles ou expressions régulières pour extraire des entités spécifiques, lorsque des motifs clairs et récurrents peuvent être définis. Entraînement supervisé : annoter manuellement un ensemble de données avec des entités nommées, puis entraîner un modèle.
4.4 · spaCy · NER
Analyser un texte, puis parcourir doc.ents
import spacy # Charger le modèle spaCy nlp = spacy.load("en_core_web_sm") # Texte à analyser text_to_analyze = "Paris is the capital of France." + "In 2015, its population was recorded as 2,206,488" # Analyser le texte doc = nlp(text_to_analyze) # Afficher les informations sur les entités for entity in doc.ents: entity_text = entity.text start_char = entity.start_char end_char = entity.end_char label = entity.label_ print("Entité: {}, Début: {}, Fin: {}, Catégorie: {}".format(entity_text, start_char, end_char, label))
Entité: Paris, Début: 0, Fin: 5, Catégorie: GPE Entité: France, Début: 24, Fin: 30, Catégorie: GPE Entité: 2015, Début: 35, Fin: 39, Catégorie: DATE Entité: 2,206,488, Début: 72, Fin: 81, Catégorie: CARDINAL
Chaque entité connaît sa position en caractères dans le texte source.
notes
import spacy # Charger le modèle spaCy nlp = spacy.load("en_core_web_sm") # Texte à analyser text_to_analyze = "Paris is the capital of France." + "In 2015, its population was recorded as 2,206,488" # Analyser le texte doc = nlp(text_to_analyze) # Afficher les informations sur les entités for entity in doc.ents: entity_text = entity.text start_char = entity.start_char end_char = entity.end_char label = entity.label_ print("Entité: {}, Début: {}, Fin: {}, Catégorie: {}".format(entity_text, start_char, end_char, label))Affichage : Entité: Paris, Début: 0, Fin: 5, Catégorie: GPE / Entité: France, Début: 24, Fin: 30, Catégorie: GPE / Entité: 2015, Début: 35, Fin: 39, Catégorie: DATE / Entité: 2,206,488, Début: 72, Fin: 81, Catégorie: CARDINAL
4.4 · spaCy · displaCy
Visualiser les entités : serve() dans un navigateur, render() dans un notebook
import spacy from spacy import displacy def visualize_entities(text): # Charger le modèle spaCy nlp = spacy.load("en_core_web_sm") # Analyser le texte doc = nlp(text) # Visualiser les entités nommées avec displaCy displacy.serve(doc, style="ent") # Texte à analyser et visualiser text_to_analyze = "Paris is the capital of France." + "In 2015, its population was recorded as 2,206,488" # Appeler la fonction pour analyser et visualiser les entités visualize_entities(text_to_analyze)
import spacy from spacy import displacy def visualize_entities(text): # Charger le modèle spaCy nlp = spacy.load("en_core_web_sm") # Analyser le texte doc = nlp(text) # Visualiser les entités nommées avec displaCy displacy.render(doc, style="ent", jupyter=True) # Texte à analyser et visualiser text_to_analyze = "Paris is the capital of France. In 2015, its population was recorded as 2,206,488" # Appeler la fonction pour analyser et visualiser les entités visualize_entities(text_to_analyze)
notes
- Version serveur (displacy.serve, ouvre une page dans le navigateur) et version notebook (displacy.render avec jupyter=True). Le code est identique à cela près.
4.4 · spaCy · NER
Le rendu displaCy, et le sens des trois balises
| Balise | Signification |
|---|---|
| GPE | Pays, villes, états. |
| DATE | Dates ou périodes absolues ou relatives. |
| CARDINAL | Les chiffres qui ne correspondent à aucun autre type. |
À retenirLa NER étiquette chaque token (B-PER, I-PER, O…) : un problème de séquence, d'où les RNN puis BERT.
notes
- Rendu displaCy : Paris [GPE] is the capital of France [GPE]. In 2015 [DATE], its population was recorded as 2,206,488 [CARDINAL]. GPE : pays, villes, états ; DATE : dates ou périodes absolues ou relatives ; CARDINAL : les chiffres qui ne correspondent à aucun autre type. La NER étiquette chaque token (B-PER, I-PER, O…) : un problème de séquence, d'où les RNN puis BERT.
4.5 · Analyse des sentiments · VADER
VADER : un lexique qui note la positivité, la négativité et la neutralité
Un lexique annoté
Le lexique VADER est spécifiquement conçu pour analyser les sentiments dans du texte en attribuant des scores de positivité, négativité et neutralité aux mots ainsi qu'aux expressions.
VADER est une bibliothèque d'analyse de sentiment conçue pour évaluer le sentiment d'un morceau de texte, généralement une phrase ou un paragraphe.
# Installation import nltk nltk.download('vader_lexicon')
notes
- Le lexique VADER (Valence Aware Dictionary and sEntiment Reasoner) est spécifiquement conçu pour analyser les sentiments dans du texte en attribuant des scores de positivité, négativité et neutralité aux mots ainsi qu'aux expressions. Installation : import nltk ; nltk.download('vader_lexicon'). VADER est une bibliothèque d'analyse de sentiment conçue pour évaluer le sentiment d'un morceau de texte, généralement une phrase ou un paragraphe.
4.5 · VADER
Dictionnaire, polarité, modificateurs
Dictionnaire et scores
VADER utilise un dictionnaire pré-annoté avec des scores de positivité, négativité et neutralité pour des milliers de mots et expressions. Chaque mot est associé à un score qui indique dans quelle mesure il est perçu comme positif ou négatif.
Polarité des mots
Pour chaque mot du texte, VADER examine son score dans le dictionnaire. Certains mots ont des scores forts, indiquant une polarité positive ou négative ; d'autres sont plus neutres.
Modificateurs et emphase
VADER prend en compte les modificateurs, tels que les adverbes, qui influencent la polarité d'un mot. Il reconnaît aussi l'emphase en attribuant des poids différents aux mots en majuscules.
notes
- Dictionnaire et scores : un dictionnaire pré-annoté avec des scores de positivité, négativité et neutralité pour des milliers de mots et expressions ; chaque mot est associé à un score qui indique dans quelle mesure il est perçu comme positif ou négatif. Polarité des mots : pour chaque mot dans le texte, VADER examine son score dans le dictionnaire ; certains mots ont des scores forts, d'autres plus neutres. Modificateurs et emphase : les modificateurs, tels que les adverbes, influencent la polarité d'un mot ; l'emphase est reconnue en attribuant des poids différents aux mots en majuscules.
4.5 · VADER
Un score composé entre −1 et 1
Calcul du score composé
VADER agrège les scores des mots en utilisant une formule qui prend en compte la distribution des polarités dans le texte. Le score composé résultant est une mesure globale du sentiment de la phrase.
Résultats
Un ensemble de scores : positivité, négativité, neutralité et un score composé global, normalisés dans une échelle de −1 à 1 — −1 extrêmement négatif, 1 extrêmement positif, 0 neutre.
VADER est souvent utilisé pour l'analyse de sentiment rapide et basée sur des règles. Efficace dans de nombreux cas, il peut être moins précis que des méthodes plus complexes basées sur l'apprentissage automatique, notamment quand l'analyse nécessite une compréhension plus profonde du langage et de la syntaxe.
notes
- Calcul du score composé : VADER agrège les scores des mots en utilisant une formule qui prend en compte la distribution des polarités dans le texte ; le score composé résultant est une mesure globale du sentiment de la phrase. Résultats : un ensemble de scores qui indiquent la positivité, la négativité, la neutralité et un score composé global ; normalisés dans une échelle de −1 à 1. VADER est souvent utilisé pour l'analyse de sentiment rapide et basée sur des règles ; il peut ne pas être aussi précis que des méthodes basées sur l'apprentissage automatique quand l'analyse nécessite une compréhension plus profonde du langage et de la syntaxe.
4.5 · VADER · usage
Trois phrases, trois dictionnaires de scores
from nltk.sentiment.vader import SentimentIntensityAnalyzer sia = SentimentIntensityAnalyzer() sentiment = sia.polarity_scores("this movie is good") print(sentiment) sentiment = sia.polarity_scores("this movie is not very good") print(sentiment) sentiment = sia.polarity_scores("this movie is bad") print(sentiment)
{'neg': 0.0, 'neu': 0.508, 'pos': 0.492, 'compound': 0.4404}
{'neg': 0.344, 'neu': 0.656, 'pos': 0.0, 'compound': -0.3865}
{'neg': 0.538, 'neu': 0.462, 'pos': 0.0, 'compound': -0.5423}« not very good » bascule en négatif : VADER gère la négation.
notes
from nltk.sentiment.vader import SentimentIntensityAnalyzer sia = SentimentIntensityAnalyzer() sentiment = sia.polarity_scores("this movie is good") print(sentiment) sentiment = sia.polarity_scores("this movie is not very good") print(sentiment) sentiment = sia.polarity_scores("this movie is bad") print(sentiment)Affichage : {'neg': 0.0, 'neu': 0.508, 'pos': 0.492, 'compound': 0.4404} / {'neg': 0.344, 'neu': 0.656, 'pos': 0.0, 'compound': -0.3865} / {'neg': 0.538, 'neu': 0.462, 'pos': 0.0, 'compound': -0.5423}
4.5 · VADER · scores
Lire les quatre scores
Positivité
Mesure la positivité relative du texte : dans quelle mesure il contient des éléments positifs. Plus le score est élevé, plus le texte est perçu comme positif.
Négativité
Mesure la négativité relative du texte : dans quelle mesure il contient des éléments négatifs. Plus le score est élevé, plus le texte est perçu comme négatif.
Neutralité
Mesure la neutralité relative : dans quelle mesure le texte est dépourvu d'éléments fortement positifs ou négatifs. Plus le score est élevé, plus le texte est perçu comme neutre.
Score composé
Une mesure agrégée qui combine les scores positif, négatif et neutre en une seule valeur, souvent utilisée pour le sentiment global : élevé = sentiment fort, proche de zéro = texte neutre.
ÉchelleDe −1 (extrêmement négatif) à 1 (extrêmement positif), 0 la neutralité ; les scores s'interprètent individuellement ou conjointement.
notes
- Positivité (Positive Score) : mesure la positivité relative du texte ; plus le score est élevé, plus le texte est perçu comme positif. Négativité (Negative Score) : mesure la négativité relative ; plus le score est élevé, plus le texte est perçu comme négatif. Neutralité (Neutral Score) : mesure la neutralité relative — texte dépourvu d'éléments fortement positifs ou négatifs. Score composé (Compound Score) : mesure agrégée qui prend en compte à la fois la positivité et la négativité ; combine les scores positif, négatif et neutre en une seule valeur ; un score composé élevé indique un sentiment fort, un score proche de zéro un texte neutre. Les scores sont normalisés de −1 à 1 ; ils peuvent être interprétés individuellement ou conjointement.
4.5 · Avec un modèle Transformer
La même tâche avec un Transformer pré-entraîné
from transformers import pipeline modele = "distilbert-base-uncased-finetuned-sst-2-english" classifier = pipeline("sentiment-analysis", model=modele) print(classifier("this movie is good")) # [{'label': 'POSITIVE', 'score': 0.9998}] print(classifier("this movie is not very good")) # [{'label': 'NEGATIVE', 'score': 0.9995}]
| VADER | lexique de règles ; rapide et transparent |
| DistilBERT (SST-2) | juge la phrase entière en contexte ; plus précis, multilingue possible, mais opaque et coûteux |
DistilBERT est fine-tuné sur des critiques de films (voir 4.7).
À retenirVADER : rapide et transparent ; Transformer : plus précis et multilingue, mais opaque et coûteux.
notes
- VADER est un lexique de règles ; un Transformer pré-entraîné (ici DistilBERT fine-tuné sur des critiques de films, voir 4.7) juge la phrase entière en contexte.
from transformers import pipeline modele = "distilbert-base-uncased-finetuned-sst-2-english" classifier = pipeline("sentiment-analysis", model=modele) print(classifier("this movie is good")) # [{'label': 'POSITIVE', 'score': 0.9998}] print(classifier("this movie is not very good")) # [{'label': 'NEGATIVE', 'score': 0.9995}]VADER : rapide et transparent ; Transformer : plus précis et multilingue, mais opaque et coûteux.
4.6 · Traduction automatique
Traduire par des règles, ou par des statistiques
La traduction automatique est le processus d'utilisation de logiciels pour traduire un texte ou un discours d'une langue à une autre. Il existe plusieurs approches pour aborder ce problème complexe.
Approche manuelle (règles)
Repose sur des règles linguistiques définies manuellement par des linguistes ou des experts : correspondances mot à mot, règles de grammaire, et d'autres connaissances linguistiques spécifiques.
Approche statistique
Des modèles statistiques apprennent les relations entre les phrases dans différentes langues à partir de grands ensembles de données parallèles ; probabilités conditionnelles et méthodes statistiques avancées.
notes
- La traduction automatique est le processus d'utilisation de logiciels pour traduire un texte ou un discours d'une langue à une autre. Approche manuelle (règles) : règles linguistiques définies manuellement par des linguistes ou des experts en langues ; correspondances mot à mot, règles de grammaire, connaissances linguistiques spécifiques. Approche statistique : les modèles statistiques apprennent les relations entre les phrases dans différentes langues à partir de grands ensembles de données parallèles ; probabilités conditionnelles et méthodes statistiques avancées.
4.6 · Traduction automatique
Hybride, puis apprentissage machine
Approche hybride
Combine des éléments des approches manuelles et statistiques : des règles pour des aspects spécifiques de la traduction, l'apprentissage statistique pour d'autres parties du processus.
Apprentissage machine
Les modèles neuronaux ont considérablement amélioré les performances de la traduction automatique. Les réseaux récurrents et les transformers ont montré des résultats impressionnants en capturant des structures linguistiques complexes.
notes
- Approche hybride (règles et statistique) : combine des éléments des approches manuelles et statistiques ; des règles pour des aspects spécifiques de la traduction, l'apprentissage statistique pour d'autres parties. Apprentissage machine : en particulier les modèles neuronaux ; les RNN et les transformers ont montré des résultats impressionnants en capturant des structures linguistiques complexes.
4.6 · Traduction automatique
Soixante-dix ans de traduction automatique
À retenirChaque ère a remplacé la précédente en apprenant davantage à partir des données et en écrivant moins de règles à la main.
notes
- Frise : règles (années 1950–1980), statistique (1990–2015), neuronale RNN/seq2seq (2014), Transformer (2017–). Chaque ère a remplacé la précédente en apprenant davantage à partir des données et en écrivant moins de règles à la main.
4.6 · Traduction automatique · apprentissage machine
Traduction neuronale : des données parallèles et un modèle séquence à séquence
L'approche machine automatise la traduction par des algorithmes d'apprentissage automatique ; elle a considérablement évolué avec l'apprentissage profond, notamment les modèles de séquence à séquence.
Ensembles de données parallèles
Des phrases dans la langue source et leurs traductions correspondantes dans la langue cible : ce sont les données d'entraînement du modèle.
Modèle de séquence à séquence
Le modèle central : un réseau récurrent (RNN) ou une architecture de transformer pour traiter des séquences de données.
notes
- L'approche machine dans la traduction automatique fait référence à l'utilisation de techniques d'apprentissage machine pour automatiser le processus de traduction entre langues. Cette approche a considérablement évolué avec le développement de modèles plus avancés basés sur l'apprentissage profond, notamment les modèles de séquence à séquence. Ensembles de données parallèles : des phrases dans la langue source et leurs traductions dans la langue cible ; données d'entraînement. Modèle de séquence à séquence (Seq2Seq) : le modèle central, un RNN ou une architecture de transformer pour traiter des séquences.
4.6 · Traduction automatique · apprentissage machine
Encoder la source, décoder la cible
- Phrase source
« le chat dort »
tokens - Encodage
la phrase source est encodée en une représentation vectorielle qui capture ses informations sémantiques et syntaxiques
encodeur - Décodage
le modèle décode la représentation pour générer la séquence de mots dans la langue cible
décodeur - Phrase cible
« the cat sleeps »
mot à mot
Entraînement supervisé
Le modèle est entraîné sur les ensembles parallèles : il apprend à minimiser la différence entre la séquence générée et la traduction attendue.
Optimisation
Des techniques d'optimisation, telles que la descente de gradient stochastique ou des optimiseurs plus avancés comme Adam, ajustent les poids pendant l'entraînement.
notes
- Encodage de la phrase source : la phrase source est encodée en une représentation vectorielle par le réseau neuronal ; elle capture les informations sémantiques et syntaxiques. Décodage vers la langue cible : le modèle décode la représentation encodée pour générer la séquence de mots dans la langue cible ; c'est la génération de la traduction. Entraînement supervisé : sur les ensembles parallèles ; minimiser la différence entre la séquence générée et la traduction attendue. Optimisation : SGD ou optimiseurs plus avancés comme Adam.
4.6 · Traduction automatique · apprentissage machine
Évaluer, ajuster, puis ajouter l'attention
Évaluation et ajustement
Le modèle est évalué sur des ensembles de test indépendants pour mesurer sa performance ; des ajustements peuvent être effectués pour améliorer les résultats.
Incorporation de méthodes plus avancées
L'attention permet au modèle de se concentrer sur des parties spécifiques de la phrase source lors de la génération de la traduction. Le Transformer (voir 4.7) généralise cette idée et est aujourd'hui l'architecture de tous les systèmes de traduction neuronale.
À retenirTraduire = encoder la source, décoder la cible ; l'attention décide, pour chaque mot produit, quels mots sources regarder.
notes
- Évaluation et ajustement : évalué sur des ensembles de données de test indépendants ; ajustements pour améliorer les résultats. Incorporation de méthodes plus avancées : l'attention permet au modèle de se concentrer sur des parties spécifiques de la phrase source lors de la génération ; le Transformer (voir 4.7) généralise cette idée et est aujourd'hui l'architecture de tous les systèmes de traduction neuronale. Traduire = encoder la source, décoder la cible ; l'attention décide, pour chaque mot produit, quels mots sources regarder.
4.7 · Modèles de langage Transformer
Le Transformer, 2017 : l'architecture qui a révolutionné le TAL
Une architecture de réseau de neurones
Le Transformer a révolutionné le traitement du langage naturel depuis son introduction par Vaswani et al. en 2017.
Deux des modèles les plus célèbres basés sur cette architecture : BERT (Bidirectional Encoder Representations from Transformers) et GPT (Generative Pre-trained Transformer).
encodeur seul, bidirectionnel — comprendre
décodeur seul, auto-régressif — générer
notes
- Le Transformer est une architecture de réseau de neurones qui a révolutionné le domaine du traitement du langage naturel depuis son introduction par Vaswani et al. en 2017. Deux des modèles les plus célèbres basés sur l'architecture Transformer sont BERT (Bidirectional Encoder Representations from Transformers) et GPT (Generative Pre-trained Transformer).
4.7 · Modèles de langage Transformer
Trois familles, un même bloc d'attention
À retenirMême brique (attention multi-tête), trois masques : BERT voit toute la phrase, GPT ne voit que le passé, l'encodeur-décodeur lit la source en entier et écrit la cible mot à mot.
notes
- Schéma : encodeur seul (BERT), décodeur seul (GPT), encodeur-décodeur (T5, BART, traduction). Même brique (attention multi-tête), trois masques.
4.7 · BERT
BERT lit dans les deux sens
BERT, développé par Google, est un modèle pré-entraîné formé sur de vastes corpus de texte. Ce qui le distingue : son approche bidirectionnelle — il prend en compte le contexte à la fois avant et après un mot dans une phrase, contrairement aux modèles précédents à compréhension unidirectionnelle.
Utilisation
BERT a été pré-entraîné sur la prédiction de mots masqués dans une phrase (Masked Language Model) et la prédiction de la relation entre deux phrases (Next Sentence Prediction). Ces pré-entraînements lui donnent une compréhension profonde du langage.
Applications
Souvent utilisé comme base pour des tâches spécifiques : classification de texte, extraction d'entités nommées, compréhension de texte. Des versions pré-entraînées sont disponibles et peuvent être fine-tunées.
notes
- BERT, développé par Google, est un modèle pré-entraîné qui a été formé sur de vastes corpus de texte. Ce qui distingue BERT, c'est son approche bidirectionnelle pour la représentation des mots : il prend en compte le contexte à la fois avant et après un mot dans une phrase. Utilisation : pré-entraîné sur la prédiction de mots masqués (Masked Language Model) et la prédiction de la relation entre deux phrases (Next Sentence Prediction). Applications : base pour la classification de texte, l'extraction d'entités nommées, la compréhension de texte ; des versions pré-entraînées peuvent être fine-tunées.
4.7 · BERT · composants
Les composants de BERT (1/3) : les embeddings
Embedding token
Cette couche transforme les tokens (mots ou sous-mots) d'une séquence en vecteurs d'embedding. Chaque token est représenté par un vecteur qui capture son sens sémantique ; ces embeddings peuvent inclure des informations de position.
Embedding de segment
BERT prend en compte le contexte global d'une séquence, même lorsqu'elle contient plusieurs phrases : une couche d'embedding de segment attribue un segment à chaque token pour indiquer à quelle partie il appartient.
notes
- Un modèle BERT est composé de plusieurs éléments clés, reflétant l'architecture Transformer. Embedding token : transforme les tokens (mots ou sous-mots) en vecteurs d'embedding ; chaque token est représenté par un vecteur qui capture son sens sémantique ; ces embeddings peuvent inclure des informations de position. Embedding de segment : BERT prend en compte le contexte global d'une séquence, même avec plusieurs phrases ; une couche d'embedding de segment attribue un segment à chaque token.
4.7 · BERT · composants
Les composants de BERT (2/3) : l'encodeur et l'attention multi-tête
Encodeur BERT
L'élément central : l'encodeur suit l'architecture du Transformer. Il est composé de plusieurs couches d'attention multi-têtes ; chaque couche prend en compte les relations entre les tokens et attribue des poids selon leur importance contextuelle.
Attention multi-tête
Chaque couche d'attention contient plusieurs « têtes » ; chacune capture des aspects différents des relations entre les tokens. Plusieurs têtes permettent de capturer des relations complexes dans le contexte.
notes
- Encoder BERT (Transformateur) : l'élément central, qui suit l'architecture du Transformer ; composé de plusieurs couches d'attention multi-têtes ; chaque couche prend en compte les relations entre les tokens et utilise l'attention pour attribuer des poids selon leur importance contextuelle. Attention multi-tête : chaque couche contient plusieurs « têtes » ; chaque tête capture des aspects différents des relations entre les tokens.
4.7 · BERT · composants
Les composants de BERT (3/3) : pooling, classification, fine-tuning
Couche de pooling
BERT agrège souvent les représentations de tous les tokens en une seule représentation, utilisable pour des tâches comme la classification de texte.
Couche de classification
Pour les tâches de classification, une couche est ajoutée au-dessus de BERT : une ou plusieurs couches denses qui projettent la représentation agrégée sur l'espace de sortie de la tâche.
Fine-tuning et couches spécifiques
Lorsque BERT est fine-tuné, des couches supplémentaires adaptent le modèle à la tâche : classification, régression, ou autres couches spécifiques à la sortie souhaitée.
notes
- Couche de pooling : agrège les représentations de tous les tokens en une seule représentation, pour des tâches comme la classification de texte. Couche de classification : une ou plusieurs couches denses qui projettent la représentation agrégée sur l'espace de sortie de la tâche. Fine-tuning et couches spécifiques à la tâche : des couches supplémentaires (classification, régression, etc.) adaptent le modèle à la tâche.
4.7 · BERT · fonctionnement
BERT en marche (1/2) : prétraiter, encoder, pré-entraîner
- Prétraitement des données
tokenisation en mots ou sous-mots ; ajout des tokens spéciaux [CLS] (début) et [SEP] (séparation entre phrases) ; embeddings de segment pour indiquer à quel segment appartient chaque token
- Architecture
un Transformer avec un encodeur bidirectionnel : le contexte avant et après chaque mot est pris en compte, ce qui améliore la compréhension du sens
- Pré-entraînement
sur de grandes quantités de texte non annoté : prédire les mots masqués (MLM) et la relation entre deux phrases (NSP) ; le modèle apprend une représentation profonde et contextuelle du langage
notes
- Prétraitement des données : tokenisation (mots ou sous-mots), ajout de tokens spéciaux [CLS] (début de la phrase) et [SEP] (séparation entre les phrases) ; embeddings de segment pour indiquer à quel segment appartient chaque token. Architecture du modèle BERT : un Transformer avec un encodeur bidirectionnel ; le contexte avant et après chaque mot est pris en compte. Pré-entraînement : sur de grandes quantités de données textuelles non annotées ; prédire les mots masqués (Masked Language Model, MLM) et la relation entre deux phrases (Next Sentence Prediction, NSP) ; représentation profonde et contextuelle du langage.
4.7 · BERT · fonctionnement
BERT en marche (2/2) : fine-tuner, utiliser, gérer la longueur
Fine-tuning
Après le pré-entraînement, BERT peut être fine-tuné sur des tâches spécifiques : pour la classification de texte, une couche de classification est ajoutée et le modèle est entraîné sur des données annotées.
Utilisation du modèle fine-tuné
Classification de texte, reconnaissance d'entités nommées, ou d'autres tâches de traitement du langage naturel.
Gestion de la longueur des séquences
BERT a une limitation sur la longueur maximale des séquences. Pour les textes plus longs : fractionnement du texte ou choix d'une sous-séquence significative.
notes
- Fine-tuning : après le pré-entraînement, BERT peut être fine-tuné sur des tâches spécifiques ; par exemple une couche de classification ajoutée au-dessus de la représentation BERT, entraînée sur des données annotées. Utilisation du modèle fine-tuné : classification de texte, reconnaissance d'entités nommées, autres tâches. Gestion de la longueur des séquences : limitation sur la longueur maximale des séquences ; pour les textes plus longs, fractionnement du texte ou choix d'une sous-séquence significative.
4.7 · GPT
GPT prédit le mot suivant — et donc génère
GPT, développé par OpenAI, est un modèle basé sur l'architecture Transformer avec une approche de génération de texte : un modèle de langage pré-entraîné qui a appris à prédire le mot suivant dans une séquence, capable de générer du texte cohérent et contextuellement approprié.
Utilisation
GPT est pré-entraîné sur un large corpus de texte pour apprendre la structure et les motifs du langage. Il peut ensuite être fine-tuné sur des tâches spécifiques selon les besoins.
Applications
Rédaction automatique de contenu, complétion de texte, et autres applications où la création de texte naturel est requise.
notes
- GPT, développé par OpenAI, est un modèle basé sur l'architecture Transformer, mais avec une approche de génération de texte. GPT utilise un modèle de langage pré-entraîné qui a appris à prédire le mot suivant dans une séquence de mots. Il est capable de générer du texte cohérent et contextuellement approprié. Utilisation : pré-entraîné sur un large corpus pour apprendre la structure et les motifs du langage ; peut être fine-tuné. Applications : génération de texte, rédaction automatique de contenu, complétion de texte.
4.7 · GPT · composants
Les composants de GPT (1/2) : embeddings, positions, décodeur seul
Embedding token
GPT utilise une couche d'embedding pour convertir les tokens (mots ou sous-mots) en vecteurs qui capturent leur sens sémantique.
Positional encoding
GPT prend en compte la position des mots : une couche de Positional Encoding est ajoutée aux embeddings de token pour introduire des informations de position.
Décodeur Transformer seul
Contrairement à BERT (encodeur seul), GPT n'utilise que la partie décodeur : une pile de blocs d'attention masquée, où chaque token ne peut « voir » que les tokens qui le précèdent.
notes
- Embedding token : comme dans BERT, une couche d'embedding convertit les tokens (mots ou sous-mots) en vecteurs qui capturent leur sens sémantique. Positional encoding : une couche de Positional Encoding est ajoutée aux embeddings de token pour introduire des informations de position. Décodeur Transformer seul : contrairement à BERT (encodeur seul), GPT n'utilise que la partie décodeur du Transformer : une pile de blocs d'attention masquée, où chaque token ne peut « voir » que les tokens qui le précèdent ; il n'y a pas d'encodeur.
4.7 · GPT · composants
Les composants de GPT (2/2) : attention, masque, tête de langage, fine-tuning
Attention multi-tête
Comme dans BERT, plusieurs têtes capturent des relations complexes entre les mots ; chaque tête se concentre sur différents aspects des relations entre tokens.
Attention masquée
Le masque interdit à un token de prêter attention aux tokens suivants : c'est ce qui rend le modèle auto-régressif et permet l'entraînement en parallèle sur toute la séquence.
Tête de langage
Une couche linéaire suivie d'un softmax donne, pour chaque position, la probabilité du token suivant ; la génération échantillonne ce token puis le réinjecte en entrée.
Fine-tuning
Après le pré-entraînement, GPT peut être fine-tuné en ajoutant des couches spécifiques — souvent de classification ou de régression, selon la tâche.
notes
- Attention multi-tête : comme dans BERT ; chaque tête se concentre sur différents aspects des relations entre les tokens. Attention masquée (causale) : le masque interdit à un token de prêter attention aux tokens suivants ; c'est ce qui rend le modèle auto-régressif et permet l'entraînement en parallèle sur toute la séquence. Tête de langage : une couche linéaire suivie d'un softmax sur le vocabulaire donne, pour chaque position, la probabilité du token suivant ; la génération consiste à échantillonner ce token puis à le réinjecter en entrée. Fine-tuning : des couches spécifiques à la tâche, souvent de classification ou de régression.
4.7 · GPT · fonctionnement
GPT en marche (1/2) : pré-entraîner, encoder, décoder
- Pré-entraînement
sur un vaste corpus non annoté, pour apprendre une représentation riche et contextuelle du langage : le modèle apprend à prédire le token suivant (modèle de langage causal)
- Embedding et positional encoding
chaque mot est représenté par un vecteur d'embedding ; la position de chaque mot est prise en compte par une couche de Positional Encoding
- Décodeur seul, auto-régressif
pas d'encodeur : la séquence d'entrée (le prompt) et la séquence générée sont traitées par la même pile de blocs décodeur ; un token à la fois, les précédents servant de contexte
notes
- Pré-entraînement : sur un vaste corpus de texte non annoté ; apprendre une représentation riche et contextuelle du langage ; prédire le token suivant dans une séquence (modèle de langage causal). Embedding et positional encoding : chaque mot est représenté par un vecteur d'embedding ; la position est prise en compte par une couche de Positional Encoding. Décodeur seul, auto-régressif : GPT n'a pas d'encodeur ; le prompt et la séquence générée sont traités par la même pile de blocs décodeur ; le modèle génère un token à la fois en utilisant les tokens précédents comme contexte.
4.7 · GPT · fonctionnement
GPT en marche (2/2) : attention, génération, adaptation, longueur
Attention multi-tête
Chaque tête se concentre sur différents aspects du contexte, ce qui permet de saisir des dépendances à long terme et des relations subtiles.
Génération de texte
Le modèle prend une séquence initiale et génère séquentiellement les mots suivants ; à chaque étape, les mots générés servent de contexte pour prédire le suivant, jusqu'à une séquence complète.
Adaptation à une tâche
GPT-1 (2018) était fine-tuné. Les modèles récents (GPT-4/5, Llama, Mistral, Claude…) sont plutôt alignés par instruction (instruction tuning, RLHF) puis guidés par le texte de la requête (prompting), sans ré-entraînement.
Longueur des séquences
GPT gère des séquences de longueur variable, mais avec une limite pratique sur la longueur maximale qu'il peut générer.
notes
- Attention multi-tête : chaque tête se concentre sur différents aspects du contexte, dépendances à long terme et relations subtiles. Génération de texte : une séquence initiale en entrée, génération séquentielle des mots suivants ; à chaque étape, les mots générés précédemment servent de contexte ; jusqu'à une séquence complète. Adaptation à une tâche : après le pré-entraînement, GPT peut être fine-tuné (GPT-1, 2018) ; les modèles récents (GPT-4/5, Llama, Mistral, Claude…) sont plutôt alignés par instruction (instruction tuning, RLHF) puis guidés directement par le texte de la requête (prompting), sans ré-entraînement. Gestion de la longueur des séquences : séquences de longueur variable, mais limite pratique sur la longueur maximale.
4.7 · BERT vs GPT
BERT contre GPT (1/2) : objectif, architecture, fine-tuning
| Caractéristique | BERT | GPT |
|---|---|---|
| Objectif du pré-entraînement | Prédiction bidirectionnelle des mots (MLM) et prédiction de relation entre deux phrases (NSP) | Génération de texte autorégressive |
| Architecture | Encodeur seul (bidirectionnel) | Décodeur seul (attention masquée, auto-régressif) |
| Utilisation en fine-tuning | Classification de texte, extraction d'entités nommées, etc. | Génération de texte, complétion automatique, etc. |
notes
- Objectif du pré-entraînement — BERT : prédiction bidirectionnelle des mots (MLM) et prédiction de relation entre deux phrases (NSP) ; GPT : génération de texte autorégressive. Architecture — BERT : encodeur seul (bidirectionnel) ; GPT : décodeur seul (attention masquée, auto-régressif). Utilisation en fine-tuning — BERT : classification de texte, extraction d'entités nommées ; GPT : génération de texte, complétion automatique.
4.7 · BERT vs GPT
BERT contre GPT (2/2) : contexte, applications, taille
| Caractéristique | BERT | GPT |
|---|---|---|
| Approche du contexte | Bidirectionnelle : le contexte avant et après chaque mot | Autorégressive : génère séquentiellement en utilisant le contexte précédent |
| Applications pratiques | Classification, extraction d'entités, détection de paraphrases | Génération de texte, complétion automatique, conversation naturelle |
| Taille des modèles | Généralement plus petits — BERT-base : 110 millions de paramètres | Beaucoup plus grands : GPT-3 (2020) 175 milliards ; modèles récents (GPT-4/5, Llama, Mistral, Claude…) de quelques milliards à plus de 1 000 milliards |
À retenirEncodeur seul (BERT) pour comprendre, décodeur seul (GPT) pour générer, encodeur-décodeur (T5, BART) pour traduire.
notes
- Approche du contexte — BERT : bidirectionnelle ; GPT : autorégressive. Applications pratiques — BERT : classification, extraction d'entités, détection de paraphrases ; GPT : génération de texte, complétion automatique, conversation naturelle. Taille des modèles — BERT : généralement plus petits (BERT-base : 110 millions de paramètres) ; GPT : GPT-3 (2020) 175 milliards ; modèles récents (GPT-4/5, Llama, Mistral, Claude…) de quelques milliards à plus de 1 000 milliards. Encodeur seul (BERT) pour comprendre, décodeur seul (GPT) pour générer, encodeur-décodeur (T5, BART) pour traduire.
4.8 · Systèmes de recommandation
Un système de recommandation filtre la surcharge d'informations
Réduire la surcharge d'informations
Le système de recommandation est un domaine essentiel de l'informatique qui vise à réduire la surcharge d'informations en fournissant des suggestions filtrées et pertinentes aux utilisateurs.
Aider les utilisateurs à naviguer à travers une grande quantité d'informations en fournissant des recommandations ciblées et adaptées à leurs préférences.
Prédire la préférence de l'utilisateur
Analyser le comportement passé de l'utilisateur, ses préférences et d'autres données pertinentes afin de prédire les éléments qui pourraient l'intéresser à l'avenir.
Gérer la surcharge cognitive
En filtrant et en triant les informations, présenter à l'utilisateur uniquement ce qui est le plus susceptible de l'intéresser.
notes
- Le système de recommandation est un domaine essentiel de l'informatique qui vise à réduire la surcharge d'informations en fournissant des suggestions filtrées et pertinentes aux utilisateurs. Réduction de la surcharge d'informations : aider les utilisateurs à naviguer à travers une grande quantité d'informations en fournissant des recommandations ciblées et adaptées à leurs préférences. Prédire la préférence de l'utilisateur : analyser le comportement passé, les préférences et d'autres données pour prédire les éléments qui pourraient l'intéresser. Gestion de la surcharge d'informations : filtrer et trier pour éviter la surcharge cognitive.
4.8 · Systèmes de recommandation
Deux types de recommandations, trois familles d'algorithmes
Recommandations personnalisées
Basées sur l'historique et les préférences individuelles de l'utilisateur.
Recommandations non personnalisées
Générales et applicables à un large groupe d'utilisateurs.
Filtrage collaboratif
Basé sur les comportements et les préférences d'utilisateurs similaires.
Filtrage basé sur le contenu
Utilise des caractéristiques du produit ou de l'élément lui-même pour faire des recommandations.
Apprentissage profond
Des réseaux de neurones profonds peuvent modéliser des modèles complexes de préférences.
notes
- Types de recommandations — personnalisées : basées sur l'historique et les préférences individuelles ; non personnalisées : générales et applicables à un large groupe. Algorithmes couramment utilisés — filtrage collaboratif : basé sur les comportements et les préférences d'utilisateurs similaires ; filtrage basé sur le contenu : caractéristiques du produit ou de l'élément ; apprentissage profond : réseaux de neurones profonds pour modéliser des préférences complexes.
4.8 · Systèmes de recommandation
Playlists, produits, livres, réseaux sociaux
Générateurs de playlists
Pour les services de vidéo et de musique : des chansons recommandées selon le goût musical de l'utilisateur.
Recommandations de produits
Sur les plateformes de commerce électronique : des articles basés sur les achats antérieurs ou les préférences.
Recommandations de livres
Sur les plateformes de vente de livres en ligne : des ouvrages similaires à ceux déjà appréciés.
Contenu sur les réseaux sociaux
Publications, amis ou groupes proposés en fonction de l'activité passée et des préférences.
notes
- Applications — générateurs de playlists (services de vidéo et de musique) ; recommandations de produits (commerce électronique, basées sur les achats antérieurs ou les préférences) ; recommandations de livres (ouvrages similaires à ceux déjà appréciés) ; recommandations de contenu sur les réseaux sociaux (publications, amis ou groupes en fonction de l'activité passée).
4.8 · Réalisation · [Pazzani 2007, Ricci 2011]
L'hypothèse : les gens suivent les recommandations des autres
Les préférences des uns prédisent celles des autres
Les individus suivent souvent les recommandations des autres utilisateurs. Cela suppose que les préférences et les actions des utilisateurs peuvent être des indicateurs fiables pour recommander des articles ou des objets similaires à d'autres utilisateurs.
Utilisateurs
Les informations relatives aux utilisateurs : préférences, comportements, actions.
Articles ou objets
Les données concernant les articles à recommander : caractéristiques, catégories, etc.
Transactions
Les interactions entre utilisateurs et articles : achats, clics, évaluations, etc.
notes
- Hypothèse : les individus suivent souvent les recommandations des autres utilisateurs. Cela suppose que les préférences et les actions des utilisateurs peuvent être des indicateurs fiables pour recommander des articles ou des objets similaires à d'autres utilisateurs. Sources des données — Utilisateurs : préférences, comportements, actions. Articles ou objets : les données concernant les articles à recommander (caractéristiques, catégories, etc.). Transactions : les interactions entre utilisateurs et articles (achats, clics, évaluations, etc.).
4.8 · Réalisation
Collecter les préférences : explicites ou déduites des actions
Préférences explicitement exprimées
Les évaluations et actions directement exprimées : avis positifs et négatifs, évaluations numériques, etc.
Interprétation des actions des utilisateurs
Observer et interpréter les actions, en particulier dans la navigation web : pages visitées, temps passé sur une page, articles ajoutés au panier, etc.
Surveillance des activités
Technologies de suivi pour observer et enregistrer les actions des utilisateurs sur une plateforme en ligne.
Systèmes de retour d'information
Encourager les utilisateurs à fournir des retours explicites : évaluations, commentaires, etc.
Analyse des transactions
Extraire des informations des transactions entre utilisateurs et articles pour déduire préférences et comportements.
notes
- Collecte des préférences des utilisateurs — Préférences explicitement exprimées : évaluations et actions directement exprimées (avis positifs et négatifs, évaluations numériques). Interprétation des actions des utilisateurs : observation et interprétation des actions, en particulier dans la navigation web (pages visitées, temps passé, articles ajoutés au panier). Méthodes de collecte — Surveillance des activités utilisateurs : technologies de suivi sur une plateforme en ligne. Systèmes de retour d'information : retours explicites sous forme d'évaluations, de commentaires. Analyse des transactions : déduire les préférences et les comportements.
4.8 · Fonctions · [Ricci 2011]
Cinq fonctions d'un système de recommandation
Augmenter le nombre d'articles vendus
Stimuler les ventes en suggérant des articles pertinents, augmentant ainsi les opportunités d'achat.
Vendre des articles plus variés
Diversifier les recommandations pour élargir le choix des utilisateurs et promouvoir une gamme plus large d'articles.
Augmenter la satisfaction
Des recommandations pertinentes et adaptées aux préférences individuelles.
Augmenter la fidélité
Des expériences personnalisées qui incitent les clients à revenir pour davantage d'achats.
Mieux comprendre l'utilisateur
Comprendre les préférences au fil du temps, pour améliorer la précision des recommandations et la compréhension des besoins.
notes
- Fonctions [Ricci 2011] — augmenter le nombre d'articles vendus ; vendre des articles plus variés ; augmenter la satisfaction des utilisateurs ; augmenter la fidélité des utilisateurs ; mieux comprendre ce que veut l'utilisateur.
4.8 · Objectifs · [Herlocker 2000, Ricci 2011]
Objectifs (1/3) : trouver de bons objets, ou tous les bons
Trouver de bons objets
Fournir des recommandations pour des articles ou des objets qui correspondent aux préférences individuelles de l'utilisateur.
Trouver tous les bons articles
Identifier de manière exhaustive tous les articles pertinents en fonction des préférences spécifiques de l'utilisateur.
notes
- Objectifs [Herlocker 2000, Ricci 2011] — trouver de bons objets : des recommandations qui correspondent aux préférences individuelles ; trouver tous les bons articles : identifier de manière exhaustive tous les articles pertinents.
4.8 · Objectifs · [Herlocker 2000, Ricci 2011]
Objectifs (2/3) : contexte, séquence, combinaison ; navigation et profil
Annotation dans le contexte
Intégrer des informations contextuelles pour rendre les recommandations plus pertinentes et adaptées à la situation actuelle.
Recommander une séquence
Une séquence d'articles ou de contenus — livres, vidéos — sur un sujet donné, pour une expérience d'apprentissage ou de divertissement cohérente.
Recommander une combinaison
Des combinaisons d'articles, comme un itinéraire de voyage complet, pour répondre à des besoins complexes.
Navigation (consultation)
Faciliter la consultation en recommandant des éléments pertinents à mesure que l'utilisateur explore la plateforme.
Un système crédible
Identifier des systèmes de recommandation réputés et fiables pour garantir des suggestions de qualité.
Améliorer le profil
Ajuster continuellement le profil de l'utilisateur en fonction de ses préférences changeantes.
notes
- Contexte et variations — annotation dans le contexte ; recommander une séquence (livres, vidéos sur un sujet donné) ; recommander une combinaison (itinéraire de voyage complet). Navigation et consultation — navigation (consultation) ; trouver un système de recommandation crédible ; améliorer le profil.
4.8 · Objectifs · [Herlocker 2000, Ricci 2011]
Objectifs (3/3) : l'interaction sociale
S'exprimer
Permettre aux utilisateurs de s'exprimer en fournissant des retours et en influençant les recommandations.
Aider les autres
Offrir des mécanismes pour que les utilisateurs puissent recommander des articles à d'autres utilisateurs.
Influencer les autres
Permettre aux utilisateurs d'influencer les préférences d'autres utilisateurs en partageant leurs recommandations.
notes
- Interaction sociale — s'exprimer : fournir des retours et influencer les recommandations ; aider les autres : recommander des articles à d'autres utilisateurs ; influencer les autres : partager ses recommandations.
4.8 · Approches · [Pazzani 2007, Ricci 2011]
Six approches (1/2) : collaboratif, contenu, démographique
| Approche | Principe | Fonctionnement |
|---|---|---|
| Filtrage collaboratif | basé sur les évaluations de plusieurs utilisateurs | Identifie des utilisateurs similaires à celui pour lequel la recommandation est générée et propose des articles appréciés par ces utilisateurs similaires. |
| Filtrage basé sur le contenu | basé sur les profils des utilisateurs | Recommande des articles similaires à ceux que l'utilisateur a aimés par le passé, en se basant sur les caractéristiques ou le contenu des articles. |
| Démographique | le profil démographique de l'utilisateur, par exemple le lieu et la langue | Propose des recommandations en fonction des caractéristiques démographiques de l'utilisateur. |
notes
- Filtrage collaboratif — principe : basé sur les évaluations de plusieurs utilisateurs ; fonctionnement : identifie des utilisateurs similaires et propose des articles appréciés par eux. Filtrage basé sur le contenu — principe : basé sur les profils des utilisateurs ; fonctionnement : articles similaires à ceux aimés par le passé, selon les caractéristiques ou le contenu. Démographiques — principe : le profil démographique (lieu, langue) ; fonctionnement : recommandations selon les caractéristiques démographiques.
4.8 · Approches · [Pazzani 2007, Ricci 2011]
Six approches (2/2) : connaissance, communauté, hybride
| Approche | Principe | Fonctionnement |
|---|---|---|
| Basé sur la connaissance | des recommandations basées sur la connaissance du domaine | Utilise une compréhension approfondie du contenu ou du domaine pour recommander des articles pertinents. |
| Basé sur la communauté | des recommandations basées sur les préférences des amis des utilisateurs | Identifie les goûts et les préférences des amis de l'utilisateur pour proposer des recommandations similaires. |
| Systèmes hybrides [Gomez-Uribe 2016] | intégration de plusieurs approches | Combine différentes méthodes de recommandation pour tirer parti de leurs avantages respectifs et fournir des suggestions plus précises et diversifiées. |
notes
- Basé sur la connaissance — principe : recommandations basées sur la connaissance du domaine ; fonctionnement : compréhension approfondie du contenu ou du domaine. Basé sur la communauté — principe : préférences des amis ; fonctionnement : goûts et préférences des amis de l'utilisateur. Systèmes hybrides [Gomez-Uribe 2016] — principe : intégration de plusieurs approches ; fonctionnement : combiner différentes méthodes pour tirer parti de leurs avantages respectifs.
4.8 · Filtrage collaboratif
Le filtrage collaboratif s'appuie sur les transactions
Transactions
Les interactions ou actions effectuées par les utilisateurs avec des articles — achats, évaluations, clics, etc. Ces informations sont collectées et utilisées comme base pour comprendre les préférences et générer des recommandations.
Règles d'association
Elles identifient des motifs de co-occurrence dans les transactions : si les utilisateurs qui ont acheté A ont aussi tendance à acheter B, une règle A → B peut être établie et servir à recommander B à un utilisateur dont les transactions ressemblent aux leurs.
notes
- Le filtrage collaboratif basé sur les transactions implique l'analyse des transactions entre utilisateurs et articles pour générer des recommandations. Transactions : interactions ou actions effectuées par les utilisateurs avec des articles (achats, évaluations, clics) ; collectées et utilisées comme base pour comprendre les préférences. Algorithmes : règles de l'association — fonctionnement : identifient des modèles de co-occurrence dans les transactions ; si les utilisateurs qui ont acheté l'article A ont également tendance à acheter l'article B, une règle d'association peut être établie entre A et B ; application : recommander des articles à un utilisateur en se basant sur les préférences d'autres utilisateurs ayant des transactions similaires. (Matrice illustrative.)
4.8 · Filtrage collaboratif
Collaboratif : personnalisé et révélateur, mais fragile au démarrage
Personnalisation · découverte de modèles
Personnalisation : les recommandations sont personnalisées en fonction des comportements d'achat et des transactions passées de l'utilisateur.
Découverte de modèles : découvrir des modèles de comportement d'achat et identifier des associations entre différents articles.
Sparsité · démarrage à froid
Sparsité des données : si un utilisateur a effectué un nombre limité de transactions, les recommandations peuvent être moins précises.
Problème du démarrage à froid : un nouvel utilisateur effectue peu ou pas de transactions, ce qui rend la génération de recommandations difficile.
notes
- Avantages — personnalisation : recommandations personnalisées en fonction des comportements d'achat et des transactions passées ; découverte de modèles : découvrir des modèles de comportement d'achat et identifier des associations entre articles. Limitations — sparsité des données : un nombre limité de transactions rend les recommandations moins précises ; problème du démarrage à froid : un nouvel utilisateur effectue peu ou pas de transactions.
4.8 · Filtrage basé sur le contenu · [Pazzani 2007]
Le contenu : décrire les objets, modéliser les intérêts
Description d'objet
Les caractéristiques ou le contenu des objets (articles, produits, etc.) sont utilisés pour décrire chaque élément de manière détaillée.
Profil d'intérêts de l'utilisateur
Modèle des préférences : un modèle des préférences de l'utilisateur basé sur la description des objets qu'il a aimés par le passé. Historique d'interactions : l'historique avec le système est utilisé pour ajuster le modèle au fil du temps.
notes
- Le filtrage basé sur le contenu repose sur la description des objets et le profil des intérêts de l'utilisateur. Description d'objet : les caractéristiques ou le contenu des objets (articles, produits, etc.) décrivent chaque élément en détail. Profil d'intérêts de l'utilisateur — modèle des préférences : basé sur la description des objets aimés par le passé ; historique d'interactions : utilisé pour ajuster le modèle au fil du temps.
4.8 · Filtrage basé sur le contenu · [Pazzani 2007]
Trois algorithmes pour apprendre un profil
Arbres de décision
Modélisent les préférences de l'utilisateur en fonction des caractéristiques des objets ; l'arbre prend des décisions de recommandation sur ces caractéristiques.
Méthodes du plus proche voisin
Comparent le profil d'intérêts de l'utilisateur avec ceux d'autres utilisateurs pour trouver les plus similaires ; les objets appréciés par ces utilisateurs sont recommandés.
Classificateurs linéaires
Modélisent la relation entre les caractéristiques des objets et les préférences de manière linéaire — par exemple une régression logistique.
notes
- Arbres de décision : modéliser les préférences en fonction des caractéristiques des objets ; l'arbre est construit pour prendre des décisions sur les recommandations. Méthodes du plus proche voisin : comparer le profil d'intérêts avec ceux d'autres utilisateurs pour trouver les plus similaires ; les objets appréciés par ces utilisateurs sont recommandés. Classificateurs linéaires : relation linéaire entre les caractéristiques des objets et les préférences ; par exemple la régression logistique.
4.8 · Filtrage basé sur le contenu · [Pazzani 2007]
Contenu : bon au démarrage, mais peu de surprises
Personnalisation · démarrage à froid
Personnalisation : les recommandations sont adaptées au profil d'intérêts de l'utilisateur, donc à ses goûts spécifiques.
Gestion du démarrage à froid : mieux gérer les nouveaux utilisateurs en se basant sur la description des objets.
Description · diversité
Dépendance à la description d'objet : l'efficacité dépend de la qualité de la description ; sensibilité aux descriptions incomplètes ou subjectives.
Manque de diversité : tendance à recommander des objets similaires à ceux déjà aimés, limitant la diversité des suggestions.
notes
- Avantages — personnalisation : recommandations adaptées au profil d'intérêts ; gestion du problème du démarrage à froid : mieux gérer les nouveaux utilisateurs en se basant sur la description d'objets. Limitations — dépendance à la description d'objet : l'efficacité dépend de la qualité de la description ; manque de diversité : tendance à recommander des objets similaires à ceux déjà aimés.
4.8 · Systèmes hybrides · [Gomez-Uribe 2016]
Hybride : combiner contenu, collaboratif et démographie
Deux approches
Combiner ces approches compense les limitations individuelles : des recommandations plus robustes qui tiennent compte à la fois du contenu des objets et des comportements d'autres utilisateurs.
Trois approches
Prendre en compte non seulement les préférences individuelles de l'utilisateur mais aussi des aspects démographiques, pour des recommandations plus contextualisées.
Meilleure précision
Des recommandations plus précises et diversifiées.
Gestion des limitations
Compenser les limitations spécifiques de chaque approche.
Adaptabilité
S'adapter à différents types d'utilisateurs et de contextes.
Moins de démarrage à froid
En intégrant des aspects démographiques, mieux gérer les nouveaux utilisateurs.
notes
- Systèmes hybrides [Gomez-Uribe 2016] — filtrage basé sur le contenu et filtrage collaboratif : compenser les limitations individuelles ; filtrage basé sur le contenu, collaboratif et démographique : préférences individuelles et aspects démographiques. Avantages — meilleure précision ; gestion des limitations ; adaptabilité ; réduction du problème du démarrage à froid.
4.8 · Mesures de performance · [Ziegler 2005, Ricci 2011]
Mesurer un système de recommandation (1/2)
Précision et efficacité
La capacité à fournir des recommandations pertinentes, et la rapidité avec laquelle le système les génère.
Diversité
La variété des recommandations fournies, pour éviter la redondance et introduire de nouveaux éléments.
Persistance de la recommandation
La cohérence des recommandations au fil du temps, pour une expérience utilisateur stable.
Vie privée
La protection et le respect de la vie privée des utilisateurs lors de la collecte et de l'utilisation des données.
notes
- Mesures de performance — précision et efficacité [Beel 2013a] : recommandations pertinentes et rapidité ; diversité : variété des recommandations, éviter la redondance ; persistance de la recommandation : cohérence au fil du temps ; vie privée [Pu 2012] : protection et respect de la vie privée lors de la collecte et de l'utilisation des données.
4.8 · Mesures de performance · [Ziegler 2005, Ricci 2011]
Mesurer un système de recommandation (2/2)
Démographie des utilisateurs
L'intégration de facteurs démographiques pour des recommandations plus contextuelles.
Robustesse
La capacité à résister aux tentatives de manipulation ou de fraude dans le système.
Sérendipité
Surprendre l'utilisateur en proposant des recommandations inattendues mais appréciées.
Confiance
La fiabilité perçue du système, qui renforce la confiance de l'utilisateur dans les recommandations.
Étiquetage
La transparence dans la distinction entre les recommandations générées organiquement et celles sponsorisées.
notes
- Démographie des utilisateurs ; robustesse (lutte contre la fraude) [Konstan 2012] ; sérendipité ; confiance ; étiquetage (recommandations organiques ou sponsorisées) [Beel 2013b].
4.8 · Domaines à haut risque · [Herlocker 2000]
Quand une mauvaise recommandation coûte cher, il faut expliquer
Recommandations à haut risque
Des domaines où les conséquences d'une recommandation incorrecte ou inappropriée peuvent être significatives.
Assurance
Les recommandations en assurance peuvent avoir des implications financières importantes ; une recommandation inappropriée pourrait entraîner des conséquences financières négatives pour l'utilisateur.
Intégration des capacités d'explication
Les systèmes à haut risque devraient intégrer des capacités d'explication, fournissant des justifications claires pour chaque recommandation.
notes
- Les recommandations à haut risque se réfèrent à des domaines où les conséquences d'une recommandation incorrecte ou inappropriée peuvent être significatives. Exemple — assurance : implications financières importantes ; une recommandation inappropriée pourrait entraîner des conséquences financières négatives. Intégration des capacités d'explication : les systèmes à haut risque devraient fournir des justifications claires pour chaque recommandation.
4.8 · Domaines à haut risque · [Herlocker 2000]
Quatre avantages des explications
Justification
Une justification transparente du raisonnement derrière chaque recommandation.
Participation
L'utilisateur comprend pourquoi une recommandation lui est faite.
Éducation
L'utilisateur apprend quels critères le système prend en compte.
Acceptation
La visibilité sur la décision rend la recommandation plus acceptable.
À retenirCollaboratif : « les gens comme vous ont aimé » ; contenu : « ressemble à ce que vous aimez » ; le réel combine les deux.
notes
- Avantages des explications — justification : une justification transparente du raisonnement ; participation : l'utilisateur comprend pourquoi ; éducation : l'utilisateur apprend quels critères sont pris en compte ; acceptation : la visibilité rend la recommandation plus acceptable. Collaboratif : « les gens comme vous ont aimé » ; contenu : « ressemble à ce que vous aimez » ; le réel combine les deux.
4.9 · Représentation des connaissances et raisonnement
KRR : rendre la connaissance lisible par une machine, puis raisonner dessus
Représentation des connaissances et raisonnement
La KRR constitue un domaine clé de l'intelligence artificielle, largement utilisée en planification, représentation du langage naturel, gestion des connaissances, systèmes experts, etc.
Représentation des connaissances
Créer une représentation lisible par machine de la connaissance d'un monde ou d'un domaine particulier, pour que les systèmes informatiques comprennent, interprètent et raisonnent sur l'information.
notes
- La Représentation des connaissances et raisonnement (KRR) constitue un domaine clé de l'intelligence artificielle. La KRR est largement utilisée dans des domaines tels que la planification, la représentation du langage naturel, la gestion des connaissances, les systèmes experts, etc. Représentation des connaissances : création d'une représentation lisible par machine de la connaissance d'un monde ou d'un domaine particulier, pour permettre aux systèmes informatiques de comprendre, interpréter et raisonner sur l'information.
4.9 · Représentation des connaissances et raisonnement
Deux exemples de représentation : réseaux sémantiques et ontologies
Réseaux sémantiques
Utilisent des relations sémantiques pour connecter des entités et représenter la connaissance.
Ontologies
Définissent des concepts, des propriétés et des relations dans un domaine spécifique.
notes
- Exemples — réseaux sémantiques : utilisent des relations sémantiques pour connecter des entités et représenter la connaissance ; ontologies : définissent des concepts, des propriétés et des relations dans un domaine spécifique.
4.9 · Représentation des connaissances et raisonnement
Raisonner, et le compromis expressivité contre praticité
Déduire du nouveau
Le raisonnement consiste à déduire de nouvelles informations à partir des connaissances existantes. C'est le processus par lequel les systèmes tirent des conclusions logiques.
Expressivité
La capacité à représenter une variété de connaissances de manière détaillée.
Praticité
La facilité d'utilisation et de manipulation de la représentation des connaissances.
À retenirExpressivité contre efficacité : le formalisme le plus riche n'est pas celui qu'on peut interroger le plus vite.
notes
- Raisonnement : déduire de nouvelles informations à partir des connaissances existantes ; le processus par lequel les systèmes tirent des conclusions logiques. Compromis entre expressivité et praticité — expressivité : la capacité à représenter une variété de connaissances de manière détaillée ; praticité : la facilité d'utilisation et de manipulation. Expressivité contre efficacité : le formalisme le plus riche n'est pas celui qu'on peut interroger le plus vite.
4.10 · Web sémantique
La pile du web sémantique
notes
- Semantic Web Stack (https://commons.wikimedia.org/wiki/File:Semantic_web_stack.svg).
4.10 · Web sémantique
La vision de Tim Berners-Lee : un web que les machines comprennent
Le Semantic Web Stack, ou pile sémantique, représente une série de technologies et de standards interconnectés développés pour réaliser la vision du web sémantique, initiée par Tim Berners-Lee : rendre le contenu du web plus compréhensible par les machines en ajoutant une sémantique aux données, pour une meilleure interopérabilité et une utilisation plus avancée des informations.
XML — eXtensible Markup Language
La base de la pile : un langage de balisage extensible qui permet de structurer et de représenter des données de manière lisible par les machines.
XML Namespaces
Les espaces de noms XML évitent les conflits de noms entre les éléments XML provenant de différentes sources.
notes
- Le Semantic Web Stack, également connu sous le nom de pile sémantique, représente une série de technologies et de standards interconnectés développés pour réaliser la vision du World Wide Web sémantique. Cette vision, initiée par Tim Berners-Lee, vise à rendre le contenu du web plus compréhensible par les machines en ajoutant une sémantique aux données. Les principales couches (du bas vers le haut) — XML : la base de la pile, un langage de balisage extensible pour structurer et représenter des données lisibles par les machines ; XML Namespaces : éviter les conflits de noms entre les éléments XML de différentes sources.
4.10 · Web sémantique
RDF, RDFS, OWL, SPARQL : décrire, structurer, définir, interroger
RDF — Resource Description Framework
Un langage standardisé pour décrire des ressources du web, facilitant le partage et la réutilisation entre applications. Il repose sur un modèle de graphe pour représenter les relations entre entités.
RDF Schema (RDFS)
Une extension de RDF qui fournit des classes et des propriétés pour définir la structure des données RDF, facilitant la création de schémas et de taxonomies.
OWL — Web Ontology Language
Une extension de RDF pour définir des ontologies : des modèles de connaissances formels décrivant les relations entre les concepts, avec une expressivité accrue par rapport à RDFS.
SPARQL
Un langage de requête pour interroger des données RDF, avec une puissante capacité de recherche et d'interrogation des informations sémantiques.
notes
- RDF : langage standardisé pour décrire des ressources du web ; partage et réutilisation d'informations entre applications ; modèle de graphe pour représenter les relations entre les entités. RDFS : extension de RDF ; classes et propriétés pour définir la structure des données RDF ; schémas et taxonomies. OWL : extension de RDF pour définir des ontologies, modèles de connaissances formels décrivant les relations entre les concepts ; expressivité accrue par rapport à RDFS. SPARQL : langage de requête pour interroger des données RDF.
4.10 · Web sémantique
RDFa, microformats, Linked Data : mettre la sémantique dans les pages et entre les jeux de données
RDFa et Microformats
RDFa (RDF in attributes) et les microformats intègrent des données sémantiques dans des documents HTML, permettant aux agents intelligents d'extraire des informations à partir de pages web.
Linked Data
Encourage la publication de données structurées sur le web, avec des liens entre les ensembles de données, facilitant la découverte et l'intégration des informations.
En utilisant cette pile, le web sémantique vise une infrastructure où les machines comprennent, interprètent et exploitent le contenu du web de manière plus avancée, ouvrant la porte à de nombreuses applications intelligentes et à une meilleure interconnexion des données.
notes
- RDFa et Microformats : intégrer des données sémantiques dans des documents HTML, permettant aux agents intelligents d'extraire des informations à partir de pages web. Linked Data : publication de données structurées sur le web, avec des liens entre les ensembles de données. En utilisant cette pile sémantique, le web sémantique vise à créer une infrastructure où les machines peuvent comprendre, interpréter et exploiter le contenu du web de manière plus avancée.
4.10 · Web sémantique
RIF et Unifying Logic : des règles et une logique commune
RIF — Rule Interchange Format
Un cadre standard pour l'échange de règles entre applications : un langage formel pour spécifier des règles logiques, crucial pour l'automatisation de l'inférence et du raisonnement sur les données sémantiques.
Unifying Logic
Cette couche englobe les différentes logiques formelles du web sémantique — logiques de description (OWL) et logiques de règles (RIF) — pour fournir un cadre logique unifié.
notes
- RIF : cadre standard pour l'échange de règles entre différentes applications ; langage formel pour spécifier des règles logiques ; crucial pour l'automatisation de l'inférence et du raisonnement sur les données sémantiques. Unifying Logic : englobe les différentes logiques formelles utilisées dans le web sémantique, y compris les logiques de description telles que OWL et les logiques de règles comme RIF ; cadre logique unifié pour décrire les connaissances.
4.10 · Web sémantique
Au sommet : preuve, confiance, applications
Preuve et confiance
Fournir des preuves formelles pour les déclarations sémantiques, avec des mécanismes de confiance pour évaluer la fiabilité des sources et inférer la crédibilité des données.
Applications utilisateur
Au sommet de la pile, les applications qui tirent parti des données sémantiques : analyse des sentiments, recherche sémantique, recommandation personnalisée, etc.
À retenirRDF pour les faits, RDFS/OWL pour le vocabulaire, SPARQL pour interroger : Wikidata en est l'exemple grandeur nature.
notes
- Proof and Trust : fournir des preuves formelles pour les déclarations sémantiques ; mécanismes de confiance pour évaluer la fiabilité des sources d'informations et inférer la crédibilité des données. User Applications : au sommet de la pile, les applications utilisateur qui tirent parti des données sémantiques (analyse des sentiments, recherche sémantique, recommandation personnalisée). RDF pour les faits, RDFS/OWL pour le vocabulaire, SPARQL pour interroger : Wikidata en est l'exemple grandeur nature.
4.11 · Moteur de règles
Un moteur de règles applique des règles et des contraintes à des données
Un moteur de règles, également connu sous le nom de moteur d'inférence, est un composant logiciel qui traite et applique un ensemble de règles et de contraintes définies.
Règles
Des instructions conditionnelles qui décrivent les relations entre différentes entités d'un système. Chaque règle a une condition qui, si elle est remplie, déclenche une action spécifique.
Contraintes
Elles définissent des limitations ou des exigences sur les données ou les actions dans un système, et contribuent à garantir la cohérence et la conformité des opérations.
Traitement des données
Le moteur traite les données en fonction des règles définies : il examine l'état actuel du système et évalue si les conditions des règles sont satisfaites.
notes
- Un moteur de règles, également connu sous le nom de moteur d'inférence, est un composant logiciel qui traite et applique un ensemble de règles et de contraintes définies. Règles : instructions conditionnelles qui décrivent les relations entre entités ; chaque règle a une condition qui, si elle est remplie, déclenche une action. Contraintes : limitations ou exigences sur les données ou les actions ; cohérence et conformité. Traitement des données : le moteur examine l'état actuel du système et évalue si les conditions des règles sont satisfaites.
4.11 · Moteur de règles
Évaluer, agir, rester cohérent, recommencer
- Évaluation des conditions
le moteur évalue les conditions de chaque règle ; si une condition est vraie, la règle associée est déclenchée
- Action
une action spécifique est exécutée : modification de données, génération de notifications, ou autres opérations définies dans la logique métier
- Cohérence du système
les règles sont appliquées séquentiellement en veillant à ce que les modifications respectent l'ensemble des contraintes
- Cycle d'évaluation
le moteur peut fonctionner de manière répétée, évaluant en continu l'état du système ; gestion dynamique et adaptative en réponse aux changements
UsagesGestion des workflows, logique métier, systèmes d'alerte : une approche déclarative pour spécifier la logique métier sans programmation explicite.
notes
- Évaluation des conditions : le moteur évalue les conditions de chaque règle pour déterminer si elles sont vraies ou fausses ; si une condition est vraie, la règle est déclenchée. Action : modification de données, génération de notifications, ou autres opérations de la logique métier. Cohérence du système : appliquer les règles séquentiellement en veillant à ce que les modifications respectent les contraintes. Cycle d'évaluation : fonctionnement répété, évaluation continue de l'état du système. Les moteurs de règles sont largement utilisés dans la gestion des workflows, la logique métier, les systèmes d'alerte ; ils offrent une approche déclarative pour spécifier la logique métier sans programmation explicite.
4.11 · Moteur de règles · applications
Workflows, alertes, logique métier
Systèmes de gestion de workflow
Orchestrer le flux de travail dans une entreprise : déclencher des étapes selon des conditions, comme l'approbation d'une demande ou la disponibilité de ressources.
Systèmes d'alerte
Dans les systèmes de surveillance, déclencher des alertes en cas de dépassement de seuils prédéfinis : performance, sécurité ou autres métriques.
Logique métier dans les applications
Les applications métier complexes gèrent leur logique par des règles ; dans un système bancaire, par exemple, des règles définissent les conditions d'octroi de prêts.
notes
- Systèmes de gestion de workflow : orchestrer le flux de travail dans une entreprise ; déclencher des étapes spécifiques en fonction de conditions (approbation d'une demande, disponibilité de ressources). Systèmes d'alerte : déclencher des alertes en cas de dépassement de seuils prédéfinis (performance, sécurité, autres métriques). Logique métier dans les applications : dans un système bancaire, des règles pour gérer les conditions d'octroi de prêts.
4.11 · Moteur de règles · applications
Chaîne d'approvisionnement, tarification, fraude, demandes
Chaîne d'approvisionnement
Automatiser des décisions telles que la sélection des fournisseurs en fonction de critères prédéfinis.
Tarification dynamique
Dans le commerce électronique, ajuster les prix selon la demande du marché, la disponibilité des produits ou d'autres conditions commerciales.
Gestion des fraudes
Déclencher des alertes lorsque des modèles de comportement suspects sont détectés, pour prévenir les activités frauduleuses.
Traitement des demandes
Automatiser la prise de décision en fonction de critères prédéfinis, accélérant le processus global.
notes
- Chaîne d'approvisionnement : automatiser des décisions telles que la sélection des fournisseurs selon des critères prédéfinis. Tarification dynamique : ajuster dynamiquement les prix selon la demande du marché, la disponibilité des produits ou d'autres conditions. Gestion des fraudes : déclencher des alertes lorsque des comportements suspects sont détectés. Traitement des demandes : automatiser la prise de décision selon des critères prédéfinis.
4.11 · Moteur de règles · langages
Cinq langages et un algorithme : Drools, RuleML, Jess, CLIPS, Rete
| Nom | Ce que c'est |
|---|---|
| Drools (DRL) | Un moteur de règles open source basé sur le langage Drools Rule Language ; syntaxe déclarative pour définir des règles métier. |
| RuleML | Rule Markup Language : un langage de balisage conçu pour représenter des règles métier sous une forme lisible par machine. |
| Jess | Java Expert System Shell : un moteur de règles pour Java qui utilise son propre langage basé sur le Lisp. |
| CLIPS | C Language Integrated Production System : un système expert qui inclut un moteur de règles ; langage déclaratif pour spécifier règles et faits. |
| Rete | Un algorithme utilisé dans plusieurs moteurs, y compris CLIPS et Drools, conçu pour optimiser l'évaluation des règles. |
À retenirUn moteur de règles sépare le « quoi » (règles métier, modifiables) du « comment » (l'algorithme d'inférence).
notes
- Drools (DRL) : moteur open source basé sur le langage DRL, syntaxe déclarative. RuleML : langage de balisage pour représenter des règles métier lisibles par machine. Jess : moteur pour Java avec son propre langage basé sur le Lisp. CLIPS : système expert avec moteur de règles, langage déclaratif pour règles et faits. Rete : algorithme utilisé dans CLIPS et Drools pour optimiser l'évaluation des règles. Un moteur de règles sépare le « quoi » (règles métier, modifiables) du « comment » (l'algorithme d'inférence).
4.11 · Moteur de règles · logiciels
Sept logiciels de gestion de règles métier
| Logiciel | Éditeur · description |
|---|---|
| Drools | Moteur de règles open source développé par Red Hat ; fonctionnalités avancées de gestion de règles métier. |
| IBM Operational Decision Manager (ODM) | Solution IBM : un moteur de règles pour automatiser et gérer les décisions métier dans les applications. |
| Corticon | Progress Corticon : modéliser, exécuter et optimiser des règles métier. |
| InRule | Plateforme pour définir, gérer et automatiser les règles métier. |
| Camunda | Moteur de règles dans un ensemble de solutions BPMN (Business Process Model and Notation) open source. |
| JBoss Rules (anciennement JRules) | Maintenant intégré à Drools ; moteur développé par IBM avant d'être open source. |
| Microsoft BizTalk Rules Engine | Inclus dans BizTalk Server : définir et gérer les règles métier dans les processus. |
notes
- Drools : open source, Red Hat. IBM Operational Decision Manager (ODM). Corticon (Progress). InRule. Camunda (BPMN open source). JBoss Rules (anciennement JRules), maintenant intégré à Drools. Microsoft BizTalk Rules Engine.
4.12 · Programmation logique et IA
La programmation logique repose sur la logique propositionnelle et du premier ordre
Logique propositionnelle
En IA, elle est souvent utilisée pour modéliser des systèmes de connaissance simples ; adaptée pour représenter des faits, des règles et des relations de manière formelle.
Logique du premier ordre (FOL)
Largement utilisée pour modéliser des connaissances plus riches et des raisonnements plus sophistiqués : décrire des entités, leurs attributs et les relations entre elles de manière plus expressive.
notes
- La programmation logique, en particulier la logique propositionnelle et la logique du premier ordre (FOL), joue un rôle fondamental dans le domaine de l'intelligence artificielle. Logique propositionnelle : modéliser des systèmes de connaissance simples ; représenter des faits, des règles et des relations de manière formelle. Logique du premier ordre (logique des prédicats) : modéliser des connaissances plus riches et des raisonnements plus sophistiqués ; décrire des entités, leurs attributs et les relations entre elles.
4.12 · Prolog
Prolog : décrire des relations plutôt que des étapes
Un langage déclaratif
Les programmes Prolog décrivent les relations entre les entités plutôt que de spécifier explicitement les étapes à suivre pour atteindre un résultat.
Fondé sur la logique du premier ordre
Décrire des relations logiques complexes avec des prédicats, des variables et des quantificateurs. Un programme est composé de faits (déclarations vraies) et de règles (relations logiques).
Origine
Prolog (Programming in Logic) a été développé par Alain Colmerauer dans les années 1970 à l'Université de Marseille.
notes
- Prolog (Programming in Logic) est un langage de programmation déclaratif, basé sur la logique du premier ordre. Les programmes Prolog décrivent les relations entre les entités plutôt que de spécifier explicitement les étapes à suivre. Prolog repose sur la logique du premier ordre : décrire des relations logiques complexes à l'aide de prédicats, de variables et de quantificateurs ; les programmes sont composés de faits (déclarations vraies) et de règles (relations logiques). Prolog a été développé par Alain Colmerauer dans les années 1970 à l'Université de Marseille.
4.12 · Prolog
Exécuter une requête, c'est chercher des solutions aux relations
Faits et règles
Les faits décrivent des relations toujours vraies, les règles des relations vraies sous certaines conditions. L'exécution d'une requête revient à chercher des solutions aux relations spécifiées.
Domaines
Démonstration de théorèmes, systèmes experts, traitement du langage naturel. Par sa nature déclarative et son approche logique, Prolog est bien adapté aux problèmes impliquant des relations complexes.
notes
- Les programmes Prolog sont exprimés en termes de relations. Les faits décrivent des relations qui sont toujours vraies, tandis que les règles décrivent des relations qui sont vraies dans certaines conditions. L'exécution d'une requête en Prolog revient à chercher des solutions aux relations spécifiées. Prolog a été largement utilisé dans la démonstration de théorèmes, les systèmes experts et le traitement du langage naturel ; bien adapté pour représenter et résoudre des problèmes impliquant des relations complexes.
4.12 · Prolog · types de données
Atomes et nombres
Atome
Une chaîne de caractères qui représente un nom. Il commence généralement par une lettre minuscule et peut contenir des lettres, des chiffres et des soulignements. Les atomes représentent des constantes et des noms.
animal(chien). couleur(rouge).
Nombres
Prolog prend en charge les entiers et les nombres à virgule flottante comme types de données numériques.
age(personne1, 23). prix(livre1, 19.99).
notes
- En Prolog, les types de données fondamentaux incluent les atomes, les nombres, les variables et les termes composés. Atome : une chaîne de caractères qui représente un nom ; commence généralement par une lettre minuscule ; lettres, chiffres, soulignements ; constantes et noms. animal(chien). couleur(rouge). Nombres : entiers et nombres à virgule flottante. age(personne1, 23). prix(livre1, 19.99).
4.12 · Prolog · types de données
Variables et termes composés
Variables
Des symboles qui représentent des valeurs inconnues. Elles commencent généralement par une lettre majuscule ou un soulignement.
personne(X).
Terme composé
Des structures de données complexes créées à partir de foncteurs (noms de termes) et d'arguments, pour représenter des entités composées — listes, arbres et autres structures.
point(3, 7).
livre(titre('Introduction à Prolog'), auteur('John Doe')).
notes
- Variables : des symboles qui représentent des valeurs inconnues ; elles commencent généralement par une lettre majuscule ou un soulignement. personne(X). Terme composé : structures de données complexes créées à partir de foncteurs (noms de termes) et d'arguments ; représentent des entités composées. point(3, 7). livre(titre('Introduction à Prolog'), auteur('John Doe')). Les termes composés peuvent également représenter des listes, des arbres et d'autres structures de données complexes.
4.12 · Prolog · règles et faits
Une règle : Tête :- Corps. Un fait : une règle sans corps
Tête :- Corps.
Fait
Une clause avec un corps vide est appelée un fait : une affirmation considérée comme vraie dans le monde décrit, utilisable ensuite dans des requêtes ou d'autres règles pour déduire des informations.
personne(bob). personne(alice).
notes
- En Prolog, les règles sont des clauses qui définissent des relations entre différents termes : Tête :- Corps. Tête : la relation que nous voulons définir ; généralement un seul prédicat. Corps : une séquence de prédicats liés par des conjonctions (, pour ET) et des disjonctions (; pour OU) ; les conditions sous lesquelles la relation de la tête est vraie. Faits : une clause avec un corps vide ; des affirmations considérées comme vraies dans le monde décrit ; utilisables dans des requêtes ou d'autres règles. personne(bob). personne(alice).
4.12 · Prolog · installation
GNU Prolog : un compilateur ISO Prolog
GNU Prolog
GNU Prolog, également connu sous le nom de gprolog, est un compilateur Prolog basé sur le standard ISO Prolog.
Il est conçu pour différentes plates-formes, y compris Linux, Windows et d'autres systèmes d'exploitation.
# L'installation de gprolog sur une machine Ubuntu
$ sudo apt install gprolog
notes
- GNU Prolog, également connu sous le nom de gprolog, est un compilateur Prolog basé sur le standard ISO Prolog. Il est conçu pour être utilisé sur différentes plates-formes, y compris Linux, Windows et d'autres systèmes d'exploitation. L'installation de gprolog sur une machine Ubuntu : $ sudo apt install gprolog
4.12 · Prolog · GNU Prolog
Saisir des faits dans l'interpréteur : [user]
$ prolog GNU Prolog 1.4.5 (64 bits) Compiled Feb 5 2017, 10:30:08 with gcc By Daniel Diaz Copyright (C) 1999-2016 Daniel Diaz | ?- [user]. compiling user for byte code... personne(tom). personne(alice). user compiled, 2 lines read - 241 bytes written, 12239 ms (4 ms) yes | ?-
| $ prolog | lance l'interpréteur |
| [user]. | compile ce qui suit au clavier |
| Ctrl-D | termine la saisie |
| yes | les deux faits sont chargés |
notes
$ prolog GNU Prolog 1.4.5 (64 bits) Compiled Feb 5 2017, 10:30:08 with gcc By Daniel Diaz Copyright (C) 1999-2016 Daniel Diaz | ?- [user]. compiling user for byte code... personne(tom). personne(alice). user compiled, 2 lines read - 241 bytes written, 12239 ms (4 ms) yes | ?-
4.12 · Prolog · interrogation
Interroger : une variable se lie, un fait absent répond « no »
?- personne(X). X = tom ? yes | ?- cat(bob). no
| personne(X). | cherche un X tel que personne(X) |
| X = tom ? | première solution ; Entrée accepte, ; en demande une autre |
| cat(bob). | aucun fait cat/1 : no |
Prolog ne dit pas « faux », il dit « je ne peux pas le prouver ».
notes
?- personne(X). X = tom ? yes | ?- cat(bob). no
4.12 · Prolog · interrogation
findall : collecter toutes les solutions dans une liste
| ?- [user]. compiling user for byte code... personne(tom). personne(alice). personnes(L) :- findall(X, personne(X), L). user compiled, 3 lines read - 490 bytes written, 10638 ms yes | ?- personnes(L). L = [tom,alice] yes
| findall(X, personne(X), L) | L = toutes les valeurs de X |
| personnes(L) | une règle dont le corps est ce findall |
| [tom,alice] | une liste Prolog |
notes
| ?- [user]. compiling user for byte code... personne(tom). personne(alice). personnes(L) :- findall(X, personne(X), L). user compiled, 3 lines read - 490 bytes written, 10638 ms yes | ?- personnes(L). L = [tom,alice] yes
4.12 · Prolog · interrogation
Plusieurs solutions : « a » les affiche toutes
| ?- [user]. compiling user for byte code... friend(bob, alice). friend(alice, kevin). friend(bob, thomas). friend(bob, peter). user compiled, 4 lines read - 486 bytes written, 77256 ms (10 ms) yes | ?- friend(bob, X). X = alice ? a X = thomas X = peter (1 ms) yes
| friend(bob, X). | trois faits correspondent |
| X = alice ? a | « a » = all : afficher toutes les solutions |
| thomas, peter | obtenues par retour arrière (backtracking) |
notes
| ?- [user]. compiling user for byte code... friend(bob, alice). friend(alice, kevin). friend(bob, thomas). friend(bob, peter). user compiled, 4 lines read - 486 bytes written, 77256 ms (10 ms) yes | ?- friend(bob, X). X = alice ? a X = thomas X = peter (1 ms) yes
4.12 · Prolog · fichier
Un fichier friend.pl avec deux règles pour human/1
$ cat friend.pl friend(bob, alice). friend(alice, kevin). friend(bob, thomas). friend(bob, peter). human(X):-friend(X,_). human(Y):-friend(_,Y).
| human(X) :- friend(X, _). | X est humain s'il a un ami |
| human(Y) :- friend(_, Y). | Y est humain s'il est l'ami de quelqu'un |
| _ | variable anonyme : « n'importe qui » |
notes
$ cat friend.pl friend(bob, alice). friend(alice, kevin). friend(bob, thomas). friend(bob, peter). human(X):-friend(X,_). human(Y):-friend(_,Y).
4.12 · Prolog · fichier
Consulter un fichier au lancement, puis interroger
$ prolog --consult-file friend.pl GNU Prolog 1.4.5 (64 bits) Compiled Feb 23 2020, 20:14:50 with gcc By Daniel Diaz Copyright (C) 1999-2020 Daniel Diaz compiling /home/user/friend.pl for byte code... /home/user/friend.pl compiled, 4 lines read - 515 bytes written, 22 ms | ?- friend(bob,alice). true ? yes
$ prolog --consult-file friend.pl | ?- human(X). X = bob ? a X = alice X = bob X = bob X = alice X = kevin X = thomas X = peter yes | ?-
Remarque« bob » apparaît trois fois : une solution par preuve, pas par valeur — Prolog ne dédoublonne pas (setof le ferait).
notes
$ prolog --consult-file friend.pl GNU Prolog 1.4.5 (64 bits) Compiled Feb 23 2020, 20:14:50 with gcc By Daniel Diaz Copyright (C) 1999-2020 Daniel Diaz compiling /home/user/friend.pl for byte code... /home/user/friend.pl compiled, 4 lines read - 515 bytes written, 22 ms | ?- friend(bob,alice). true ? yes
$ prolog --consult-file friend.pl | ?- human(X). X = bob ? a X = alice X = bob X = bob X = alice X = kevin X = thomas X = peter yes | ?-
4.12 · Prolog · récursion
ancetre/2 : une règle récursive
$ cat ancetre.pl /* Faits : Déclaration des relations parents */ parent(kevin, jane). parent(kevin, jim). parent(jane, ann). parent(jane, bob). parent(jim, pat). /* Règle : X est l'ancêtre de Y si X est le parent de Y ou si X est l'ancêtre d'un parent de Y. */ ancetre(X, Y) :- parent(X, Y). ancetre(X, Y) :- parent(X, Z), ancetre(Z, Y).
notes
$ cat ancetre.pl /* Faits : Déclaration des relations parents */ parent(kevin, jane). parent(kevin, jim). parent(jane, ann). parent(jane, bob). parent(jim, pat). /* Règle : X est l'ancêtre de Y si X est le parent de Y ou si X est l'ancêtre d'un parent de Y. */ ancetre(X, Y) :- parent(X, Y). ancetre(X, Y) :- parent(X, Z), ancetre(Z, Y).
4.12 · Prolog · récursion
Tous les descendants de kevin, par récursion et retour arrière
$ prolog --consult-file ancetre.pl GNU Prolog 1.4.5 (64 bits) Compiled Feb 23 2020, 20:14:50 with gcc By Daniel Diaz Copyright (C) 1999-2020 Daniel Diaz /home/user/ancetre.pl compiled, 11 lines read - 1119 bytes written, 14 ms | ?- ancetre(kevin,X). X = jane ? a X = jim X = ann X = bob X = pat no | ?-
| jane, jim | première clause : parent direct |
| ann, bob | seconde clause via jane |
| pat | seconde clause via jim |
| no | plus aucune preuve possible |
Le cours original lance « --consult-file friend.pl » par erreur ; c'est bien ancetre.pl qui est compilé.
notes
$ prolog --consult-file friend.pl GNU Prolog 1.4.5 (64 bits) Compiled Feb 23 2020, 20:14:50 with gcc By Daniel Diaz Copyright (C) 1999-2020 Daniel Diaz /home/user/ancetre.pl compiled, 11 lines read - 1119 bytes written, 14 ms | ?- ancetre(kevin,X). X = jane ? a X = jim X = ann X = bob X = pat no | ?-
4.12 · Prolog · listes et arithmétique
notes.pl : des faits, puis une moyenne calculée avec findall
/* Faits : Déclaration des élèves et de leurs notes */ note(kevin, math, 85). note(kevin, anglais, 90). note(jane, math, 92). note(jane, anglais, 88). note(bob, math, 78). note(bob, anglais, 85). /* Règle : Calcul de la moyenne des notes d'un élève */ moyenne(Eleve, Moyenne) :- findall(Note, note(Eleve, _, Note), Notes), length(Notes, N), somme_liste(Notes, Sum), Moyenne is Sum / N.
/* Prédicat auxiliaire : Calcul de la somme d'une liste */
somme_liste([], 0).
somme_liste([X|Xs], Sum) :-
somme_liste(Xs, Reste),
Sum is X + Reste.
Lecture[X|Xs] sépare la tête de la queue d'une liste ; is évalue une expression arithmétique.
notes
/* Faits : Déclaration des élèves et de leurs notes */ note(kevin, math, 85). note(kevin, anglais, 90). note(jane, math, 92). note(jane, anglais, 88). note(bob, math, 78). note(bob, anglais, 85). /* Règle : Calcul de la moyenne des notes d'un élève */ moyenne(Eleve, Moyenne) :- findall(Note, note(Eleve, _, Note), Notes), length(Notes, N), somme_liste(Notes, Sum), Moyenne is Sum / N./* Prédicat auxiliaire : Calcul de la somme d'une liste */ somme_liste([], 0). somme_liste([X|Xs], Sum) :- somme_liste(Xs, Reste), Sum is X + Reste.
4.12 · Prolog · listes et arithmétique
afficher_moyennes : setof, member, format, et l'astuce du fail
/* Règle : Affichage des élèves avec leur moyenne */
afficher_moyennes :-
setof(Eleve, Matiere^Note^(note(Eleve, Matiere, Note)), Eleves),
member(Eleve, Eleves),
moyenne(Eleve, Moyenne),
format('Élève: ~w, Moyenne: ~2f~n', [Eleve, Moyenne]),
fail.
afficher_moyennes.
$ prolog --consult-file notes.pl GNU Prolog 1.4.5 (64 bits) Compiled Feb 23 2020, 20:14:50 with gcc By Daniel Diaz Copyright (C) 1999-2020 Daniel Diaz /home/user/notes.pl compiled, 30 lines read - 3086 bytes written, 3 ms | ?- afficher_moyennes. Élève: bob, Moyenne: 81.50 Élève: jane, Moyenne: 90.00 Élève: kevin, Moyenne: 87.50 (1 ms) no | ?-
À retenirEn Prolog on décrit ce qui est vrai ; l'unification et le retour arrière trouvent comment le prouver.
notes
/* Règle : Affichage des élèves avec leur moyenne */ afficher_moyennes :- setof(Eleve, Matiere^Note^(note(Eleve, Matiere, Note)), Eleves), member(Eleve, Eleves), moyenne(Eleve, Moyenne), format('Élève: ~w, Moyenne: ~2f~n', [Eleve, Moyenne]), fail. afficher_moyennes.$ prolog --consult-file notes.pl … | ?- afficher_moyennes. Élève: bob, Moyenne: 81.50 Élève: jane, Moyenne: 90.00 Élève: kevin, Moyenne: 87.50 (1 ms) no | ?-
setof collecte les élèves sans doublon (Matiere^Note^ marque les variables libres) ; member et fail forcent le retour arrière pour afficher chaque élève ; la seconde clause afficher_moyennes. fait réussir la requête à la fin. En Prolog on décrit ce qui est vrai ; l'unification et le retour arrière trouvent comment le prouver.
Références
Articles de recherche (1/2)
- [Beel 2013a] Beel, Joeran, et al. « A Comparative Analysis of Offline and Online Evaluations and Discussion of Research Paper Recommender System Evaluation. » Proceedings of the International Workshop on Reproducibility and Replication in Recommender Systems Evaluation, ACM, 2013.
- [Beel 2013b] Beel, Joeran, et al. « Sponsored vs. Organic (Research Paper) Recommendations and the Impact of Labeling. » Research and Advanced Technology for Digital Libraries, Springer, 2013, pp. 391–95.
- [Chrupała 2006] Chrupała, Grzegorz. Simple Data-Driven Context-Sensitive Lemmatization. 2006. doras.dcu.ie.
- [Frakes 2003] Frakes, William B., and Christopher J. Fox. « Strength and Similarity of Affix Removal Stemming Algorithms. » ACM SIGIR Forum, vol. 37, no. 1, Apr. 2003, pp. 26–30.
- [Gesmundo 2012] Gesmundo, Andrea, and Tanja Samardžić. « Lemmatisation as a Tagging Task. » Proceedings of the 50th Annual Meeting of the ACL: Short Papers - Volume 2, 2012, pp. 368–372.
- [Gomez-Uribe 2016] Gomez-Uribe, Carlos A., and Neil Hunt. « The Netflix Recommender System: Algorithms, Business Value, and Innovation. » ACM Transactions on Management Information Systems, vol. 6, no. 4, Dec. 2016, p. 13:1–13:19.
- [Herlocker 2000] Herlocker, Jonathan L., et al. « Explaining Collaborative Filtering Recommendations. » Proceedings of the 2000 ACM Conference on Computer Supported Cooperative Work, 2000, pp. 241–250.
- [Konstan 2012] Konstan, Joseph A., and John Riedl. « Recommender Systems: From Algorithms to User Experience. » User Modeling and User-Adapted Interaction, vol. 22, no. 1–2, Apr. 2012, pp. 101–123.
notes
- Références du cours original (A–K).
Références
Articles de recherche (2/2)
- [Màrquez 2000] Màrquez, Lluís, et al. « A Machine Learning Approach to POS Tagging. » Machine Learning, vol. 39, no. 1, Apr. 2000, pp. 59–91.
- [Mikolov 2013] Mikolov, Tomas, et al. « Efficient Estimation of Word Representations in Vector Space. » ArXiv:1301.3781 [Cs], Sept. 2013.
- [Miller 1995] Miller, George A. « WordNet: A Lexical Database for English. » Communications of the ACM, vol. 38, no. 11, Nov. 1995, pp. 39–41.
- [Pazzani 2007] Pazzani, Michael J., and Daniel Billsus. « Content-Based Recommendation Systems. » The Adaptive Web, Springer, 2007, pp. 325–41.
- [Porter 1980] Porter, M. F. « An Algorithm for Suffix Stripping. » Program, vol. 14, no. 3, Jan. 1980, pp. 130–37.
- [Pu 2012] Pu, Pearl, et al. « Evaluating Recommender Systems from the User's Perspective: Survey of the State of the Art. » User Modeling and User-Adapted Interaction, vol. 22, no. 4, Oct. 2012, pp. 317–55.
- [Ricci 2011] Ricci, Francesco, et al. « Introduction to Recommender Systems Handbook. » Recommender Systems Handbook, Springer US, 2011, pp. 1–35.
- [Vaswani 2017] Vaswani, Ashish, et al. « Attention Is All You Need ». Advances in Neural Information Processing Systems 30, 2017, p. 5998‑6008.
- [Ziegler 2005] Ziegler, Cai-Nicolas, et al. « Improving Recommendation Lists through Topic Diversification. » Proceedings of the 14th International Conference on World Wide Web, ACM, 2005, pp. 22–32.
notes
- Références du cours original (M–Z).
Références · Web
Sur le web
Wikipédia
CréditsImages : Wikimedia Commons · Couleurs : Material Design Color Tool · Licence CC BY-SA 4.0.
notes
- Couleurs : Color Tool - Material Design. Images : Wikimedia Commons.
