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.

notes
  • Intelligence artificielle et Deep Learning — L'IA symbolique et certaines applications

    John Samuel, CPE Lyon · Année 2026-2027 · Courriel : john.samuel@cpe.fr

    Creative Commons License Licence CC BY-SA 4.0.

4.1 · Intelligence artificielle

Où se situent ces applications : IA, apprentissage machine, apprentissage profond

Intelligence artificielle logique, connaissances, agents, recherche, planification Apprentissage machine apprendre une fonction à partir de données Apprentissage profond réseaux de neurones à plusieurs couches f(x) = W₃σ(W₂σ(W₁x))
Symboliquerègles, logique, moteurs de règles, Prolog, web sémantique (4.9–4.12) Statistiquen-grammes, VADER, filtrage collaboratif (4.1, 4.5, 4.8) Neuronalembeddings, Word2Vec, RNN, Transformers (4.2–4.7)
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.

compréhension

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.

dialogue

Interaction homme-machine

Permettre à une machine de recevoir, d'interpréter et de produire du langage humain.

syntaxe

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

sens

Sémantique d'une langue

Représenter et comparer le sens des mots et des phrases — embeddings (4.2), Word2Vec (4.3).

langues

Traduction automatique

Traduire un texte d'une langue à une autre : règles, statistiques, puis réseaux neuronaux (4.6).

NER

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).

polarité

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

stemming

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.

Porter · Snowball

Limitations

La racinisation peut conduire à des résultats non valides : elle peut produire des racines qui ne sont pas des mots réels.

exemple
engineerengineer
engineeredengineer
engineeringengineer

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éfautMot d'origineRacinisationForme attendue
Racinisation excessivehappilyhappihappy
Racinisation incorrectebetterbetbetter
Création de faux motsunhappinessunhappiunhappy
Ambiguïté des règlesflies (verbe)flipeut ê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

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.

similarité

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

longueur égale

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.

longueur inégale

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\).

racine « tri »
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

  1. Le nombre moyen de mots par classe
  2. Le facteur de compression de l'indice

    \(n\) le nombre de mots dans le corpus, \(s\) le nombre de racines

  3. Le nombre de mots et de racines qui diffèrent
  4. Le nombre moyen de caractères supprimés lors de la formation des racines
  5. La médiane et la moyenne de la distance de Hamming modifiée

    entre les mots et leur racine

facteur de compression de l'indice\[ \frac{n - s}{n} \]

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

similarité de deux algorithmes \(A1\), \(A2\) sur une liste de mots \(W\) de taille \(n\)\[ M(A1, A2, W) = \frac{n}{\sum d(x_i, y_i)} \]
\(x_i\)le résultat de l'application de \(A1\) au mot \(w_i\) \(y_i\)le résultat de l'application de \(A2\) au mot \(w_i\) \(d\)la distance de Hamming modifiée \(M\)des algorithmes plus similaires auront des valeurs plus élevées de \(M\)
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.

1980 · [Porter 1980]

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.

Porter2

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

FamilleRègleExemple
Suppression de suffixes« s » : supprimer le suffixe « s » à la fin des motscats → 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édenteplastered → plaster
« ing » : supprimer « ing » à la fin du mot s'il y a une voyelle précédentemotoring → 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

FamilleRègleExemple
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 motssi la séquence se termine par une consonne suivie de « y », remplacer par « i » à la finhappy → happi
si la séquence se termine par deux consonnes, supprimer la dernière consonne si la précédente est une voyellerègle de la mesure de Porter
Doubles consonnessupprimer une lettre double à la fin du mothopp(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=" ")
affichage
wordsword
eatingeat
wentwent
engineerengin
triedtri

« 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.

steps

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 ».

fichiers de règles

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

langues

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.

condition → action

É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.

jusqu'au point fixe

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))
affichage
wordsword
eatingeat
wentwent
engineerengin
triedtri

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

PoS tagging

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.

structure

Pourquoi

Il permet de capturer la structure grammaticale d'un texte, facilitant ainsi la compréhension et l'analyse linguistique automatisées.

comment

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

NN

Noms

Indiquent des entités ou objets concrets. Exemple : « chat », « maison », « fleur ».

VB

Verbes

Indiquent des actions ou des états. Exemple : « marcher », « manger », « être ».

JJ

Adjectifs

Décrivent ou qualifient des noms. Exemple : « beau », « rapide », « intelligent ».

RB

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

règles

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.

n-grammes

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.

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=" ")
affichage (extrait)
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

nn-grammes de « He went to school yesterday and attended the classes »
1He · went · to · school · yesterday · and · attended · the · classes
2He went · went to · to school · school yesterday · yesterday and · and attended · attended the · the classes
3He went to · went to school · to school yesterday · school yesterday and · yesterday and attended · and attended the · attended the classes
4He 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))
affichage
HePRP
goesVBZ
toTO
schoolNN
dailyRB

[('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

BaliseSignificationDans la phrase
PRPpronoun, personalHe
VBZverb, present tense, 3rd person singulargoes
TO« to » as prepositionto
NNnoun, common, singular or massschool
RBadverbdaily
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)
textlemma_pos_tag_dep_shape_is_alphais_stop
He-PRON-PRONPRPnsubjXxTrueTrue
goesgoVERBVBZROOTxxxxTrueFalse
totoADPINprepxxTrueTrue
schoolschoolNOUNNNpobjxxxxTrueFalse
dailydailyADVRBadvmodxxxxTrueFalse
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

paradigme flexionnel

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.

pourquoi

Simplifier la représentation

Ramener les mots à leur forme de base facilite la recherche, l'analyse et le traitement automatique du langage naturel.

exemple
gogo
goesgo
goinggo
wentgo
gonego

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

  1. Supprimer un suffixe de longueur \(N_s\)
  2. Ajouter un nouveau suffixe de lemme \(L_s\)
  3. Supprimer un préfixe de longueur \(N_p\)
  4. Ajouter un nouveau préfixe de lemme \(L_p\)
transformation\[ \tau = \langle N_s, L_s, N_p, L_p \rangle \]
exemple · (going, go)\[ \langle 3, \emptyset, 0, \emptyset \rangle \]

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

[Miller 1995]

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 »).

nltk

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=' ')
affichage
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
correspondance
J… (JJ, JJR)wn.ADJ
R… (RB, RBR)wn.ADV
N… (NN, NNS)wn.NOUN
V… (VB, VBD, VBZ)wn.VERB
autreNone
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=' ')
affichage
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=' ')
affichage
-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

mots · formes · paradigmes

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.

parties du discours

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.

structure interne

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)
Arbre de dépendances de « He goes to school daily » rendu par displaCy
Sortie de displaCy : nsubj, prep, pobj, advmod autour du verbe « goes »
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

dimension 1 (projection)dimension 2chatchienchevalpommepoirebananeroireine
définition

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.

hypothèse distributionnelle

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

dense

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.

sens

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.

un vocabulaire de 50 000 mots
one-hot50 000 dimensions, un seul 1
embedding300 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

cosinus

Similarité sémantique

Mesurer la similarité sémantique entre les mots.

seq2seq

Traduction automatique

Améliorer les performances des systèmes de traduction automatique.

contexte

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

vitesse

Performance

Rapide : adapté au traitement de grands volumes de texte en temps réel.

langues

Modèles pré-entraînés

Pour plusieurs langues, sans entraînement à partir de zéro.

analyse

Analyse linguistique riche

Parties du discours, entités nommées, relations syntaxiques, lemmes.

API

API conviviale

Intuitive : des tâches complexes en quelques lignes de code concises.

Python

É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

qualité

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.

NER

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.

Mo

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.

flexibilité

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))
affichage
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))
similarité cosinus entre deux vecteurs\[ \cos\theta = \frac{\mathbf{A}\cdot\mathbf{B}}{\|\mathbf{A}\|\,\|\mathbf{B}\|} \]

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.

vecteurs

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.

réseau

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.

corpus → espace

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

  1. Prétraitement des données

    le texte est nettoyé pour éliminer les éléments indésirables tels que la ponctuation et les stopwords

  2. Création d'un vocabulaire

    les mots uniques du corpus construisent un vocabulaire ; chaque mot est associé à un index

  3. 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

  4. 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

  5. Entraînement

    sur les paires mot-contexte, en ajustant les poids pour minimiser la différence entre prédictions et vrais mots du contexte

  6. 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

proximité

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.

mesure

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.

similarité cosinus\[ \text{similarity} = \cos(\theta) = \frac{\mathbf{A}\cdot\mathbf{B}}{\|\mathbf{A}\|\,\|\mathbf{B}\|} = \frac{\sum_{i=1}^{n} A_i B_i}{\sqrt{\sum_{i=1}^{n} A_i^2}\,\sqrt{\sum_{i=1}^{n} B_i^2}} \]
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

Architecture CBOW : les mots de contexte en entrée prédisent le mot cible
CBOW : contexte → mot cible
Word2Vec

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.

prédictif

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

fenêtre

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.

une couche cachée

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.

rétropropagation

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.

embeddings

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.

Architecture CBOW
Avantages : souvent plus rapide à entraîner que le Skip-gram, et plus efficace quand l'ordre séquentiel des mots n'est pas critique.
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)
hyperparamètres
min_count1 — garder tous les mots
vector_size100 dimensions
window3 mots de chaque côté
sg0 → 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)
ce que renvoie wv
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

Architecture Skip-gram : le mot source en entrée prédit les mots de contexte
Skip-gram : mot source → contexte
objectif

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.

entré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

une couche cachée

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.

rétropropagation

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.

proximité

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

Embeddings

Une fois entraîné, les poids de la couche d'entrée sont les embeddings de mots, qui capturent les similitudes sémantiques.

Architecture Skip-gram
Skip-gram — une entrée, plusieurs sorties
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)
ce qui change
sg1 → Skip-gram
window5
le resteidentique 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 ou Skip-gram ?
CBOWcontexte → mot ; rapide ; mots fréquents
Skip-grammot → 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é

Du texte non structuré vers des données structurées
Du texte brut aux informations structurées
NER · Named Entity Recognition

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

étape 1

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.

étape 2

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.

contexte

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

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.

usages

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.

séquence cachée

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.

RNN · BiRNN · LSTM

Réseaux de neurones

Les réseaux récurrents, bidirectionnels et à mémoire à court terme ont montré des performances significatives en NER.

BERT

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é

peu de données

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.

motifs clairs

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.

annotation

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))
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

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

Paris GPE is the capital of France GPE. In 2015 DATE, its population was recorded as 2,206,488 CARDINAL
BaliseSignification
GPEPays, villes, états.
DATEDates ou périodes absolues ou relatives.
CARDINALLes 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é

Valence Aware Dictionary and sEntiment Reasoner

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

milliers de mots

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.

par mot

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.

« very », MAJUSCULES

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

agrégation

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.

−1 … 0 … 1

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)
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}

« 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

pos

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.

neg

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.

neu

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.

compound

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 contre Transformer
VADERlexique 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.

linguistes

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.

corpus parallèles

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

règles + statistiques

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.

RNN · Transformers

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

1954–1980 Règles dictionnaires et grammaire écrits à la main 1990–2014 Statistique probabilités apprises sur des corpus parallèles (IBM, Moses) 2014 Neuronale : seq2seq RNN encodeur → décodeur, puis attention (2015) 2017 Transformer attention seule ; Google Translate, DeepL 2022 → LLM multilingues la traduction, une capacité parmi d'autres depuis 2016, tous les systèmes déployés sont neuronaux (règles et statistique : voir A.7)

À 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.

données

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.

Seq2Seq

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
supervisé

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.

SGD · Adam

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

test

É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.

attention

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

[Vaswani 2017]

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).

BERTGoogle · 2018

encodeur seul, bidirectionnel — comprendre

GPTOpenAI · 2018

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

Encodeur seul BERT ciel attention bidirectionnelle le [MASK] est bleu classification, NER, similarité Décodeur seul GPT, Llama, Claude… bleu attention masquée (causale) le ciel est génération, dialogue, code Encodeur-décodeur T5, BART, traduction le ciel est bleu source : totale — cible : causale the sky is blue traduction, résumé

À 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.

MLM · NSP

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.

fine-tuning

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

token

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.

segment

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

Transformer

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.

têtes

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

[CLS]

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.

dense

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.

adaptation

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

tâche

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.

usage

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.

512 tokens

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é.

pré-entraînement

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.

génération

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

comme BERT

Embedding token

GPT utilise une couche d'embedding pour convertir les tokens (mots ou sous-mots) en vecteurs qui capturent leur sens sémantique.

ordre

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.

pas d'encodeur

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

têtes

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.

causale

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.

softmax sur le vocabulaire

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.

tâche

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

dépendances longues

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.

un token à la fois

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.

2018 → aujourd'hui

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.

fenêtre de contexte

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éristiqueBERTGPT
Objectif du pré-entraînementPrédiction bidirectionnelle des mots (MLM) et prédiction de relation entre deux phrases (NSP)Génération de texte autorégressive
ArchitectureEncodeur seul (bidirectionnel)Décodeur seul (attention masquée, auto-régressif)
Utilisation en fine-tuningClassification 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éristiqueBERTGPT
Approche du contexteBidirectionnelle : le contexte avant et après chaque motAutorégressive : génère séquentiellement en utilisant le contexte précédent
Applications pratiquesClassification, extraction d'entités, détection de paraphrasesGénération de texte, complétion automatique, conversation naturelle
Taille des modèlesGénéralement plus petits — BERT-base : 110 millions de paramètresBeaucoup 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

recommender systems

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.

fonctionnement

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.

fonctionnement

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

individuel

Recommandations personnalisées

Basées sur l'historique et les préférences individuelles de l'utilisateur.

collectif

Recommandations non personnalisées

Générales et applicables à un large groupe d'utilisateurs.

utilisateurs similaires

Filtrage collaboratif

Basé sur les comportements et les préférences d'utilisateurs similaires.

caractéristiques

Filtrage basé sur le contenu

Utilise des caractéristiques du produit ou de l'élément lui-même pour faire des recommandations.

réseaux profonds

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

musique · vidéo

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.

e-commerce

Recommandations de produits

Sur les plateformes de commerce électronique : des articles basés sur les achats antérieurs ou les préférences.

librairies

Recommandations de livres

Sur les plateformes de vente de livres en ligne : des ouvrages similaires à ceux déjà appréciés.

social

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

hypothèse

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.

source 1

Utilisateurs

Les informations relatives aux utilisateurs : préférences, comportements, actions.

source 2

Articles ou objets

Les données concernant les articles à recommander : caractéristiques, catégories, etc.

source 3

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

dit

Préférences explicitement exprimées

Les évaluations et actions directement exprimées : avis positifs et négatifs, évaluations numériques, etc.

fait

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.

méthode

Surveillance des activités

Technologies de suivi pour observer et enregistrer les actions des utilisateurs sur une plateforme en ligne.

méthode

Systèmes de retour d'information

Encourager les utilisateurs à fournir des retours explicites : évaluations, commentaires, etc.

méthode

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

ventes

Augmenter le nombre d'articles vendus

Stimuler les ventes en suggérant des articles pertinents, augmentant ainsi les opportunités d'achat.

diversité

Vendre des articles plus variés

Diversifier les recommandations pour élargir le choix des utilisateurs et promouvoir une gamme plus large d'articles.

satisfaction

Augmenter la satisfaction

Des recommandations pertinentes et adaptées aux préférences individuelles.

fidélité

Augmenter la fidélité

Des expériences personnalisées qui incitent les clients à revenir pour davantage d'achats.

compréhension

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

précision

Trouver de bons objets

Fournir des recommandations pour des articles ou des objets qui correspondent aux préférences individuelles de l'utilisateur.

rappel

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

contexte

Annotation dans le contexte

Intégrer des informations contextuelles pour rendre les recommandations plus pertinentes et adaptées à la situation actuelle.

séquence

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.

combinaison

Recommander une combinaison

Des combinaisons d'articles, comme un itinéraire de voyage complet, pour répondre à des besoins complexes.

navigation

Navigation (consultation)

Faciliter la consultation en recommandant des éléments pertinents à mesure que l'utilisateur explore la plateforme.

crédibilité

Un système crédible

Identifier des systèmes de recommandation réputés et fiables pour garantir des suggestions de qualité.

profil

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

retours

S'exprimer

Permettre aux utilisateurs de s'exprimer en fournissant des retours et en influençant les recommandations.

partage

Aider les autres

Offrir des mécanismes pour que les utilisateurs puissent recommander des articles à d'autres utilisateurs.

influence

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

ApprochePrincipeFonctionnement
Filtrage collaboratifbasé sur les évaluations de plusieurs utilisateursIdentifie 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 contenubasé sur les profils des utilisateursRecommande 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émographiquele profil démographique de l'utilisateur, par exemple le lieu et la languePropose 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

ApprochePrincipeFonctionnement
Basé sur la connaissancedes recommandations basées sur la connaissance du domaineUtilise 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 utilisateursIdentifie 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 approchesCombine 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

articles →ABCDEAna541Bob452Chloé451Dan54?Dan ressemble à Ana et Chloé : que vaut C pour lui ? probablement 5
données

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.

algorithme

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

avantages

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.

limitations

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

objets

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.

utilisateur

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

caractéristiques → décision

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.

similarité

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.

régression logistique

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

avantages

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.

limitations

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

contenu + collaboratif

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.

+ démographique

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.

avantage

Meilleure précision

Des recommandations plus précises et diversifiées.

avantage

Gestion des limitations

Compenser les limitations spécifiques de chaque approche.

avantage

Adaptabilité

S'adapter à différents types d'utilisateurs et de contextes.

avantage

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)

[Beel 2013a]

Précision et efficacité

La capacité à fournir des recommandations pertinentes, et la rapidité avec laquelle le système les génère.

variété

Diversité

La variété des recommandations fournies, pour éviter la redondance et introduire de nouveaux éléments.

stabilité

Persistance de la recommandation

La cohérence des recommandations au fil du temps, pour une expérience utilisateur stable.

[Pu 2012]

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)

contexte

Démographie des utilisateurs

L'intégration de facteurs démographiques pour des recommandations plus contextuelles.

[Konstan 2012]

Robustesse

La capacité à résister aux tentatives de manipulation ou de fraude dans le système.

surprise

Sérendipité

Surprendre l'utilisateur en proposant des recommandations inattendues mais appréciées.

fiabilité

Confiance

La fiabilité perçue du système, qui renforce la confiance de l'utilisateur dans les recommandations.

[Beel 2013b]

É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

définition

Recommandations à haut risque

Des domaines où les conséquences d'une recommandation incorrecte ou inappropriée peuvent être significatives.

exemple

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.

exigence

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

transparence

Justification

Une justification transparente du raisonnement derrière chaque recommandation.

compréhension

Participation

L'utilisateur comprend pourquoi une recommandation lui est faite.

critères

Éducation

L'utilisateur apprend quels critères le système prend en compte.

adhésion

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

domaine de l'IA

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.

lisible par machine

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

graphe

Réseaux sémantiques

Utilisent des relations sémantiques pour connecter des entités et représenter la connaissance.

concepts · propriétés · relations

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é

raisonnement

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.

compromis

Expressivité

La capacité à représenter une variété de connaissances de manière détaillée.

compromis

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

Semantic Web Stack : XML, RDF, RDFS, OWL, SPARQL, RIF, Unifying Logic, Proof, Trust, User Applications
Semantic Web Stack — Wikimedia Commons
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.

base

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.

noms

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

triplets

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.

classes · propriété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.

ontologies

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.

requêtes

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

dans HTML

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.

entre jeux de données

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

règles

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.

logiques

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

Proof and Trust

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.

User Applications

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.

si … alors

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.

limites

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.

état

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

orchestration

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.

seuils

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.

banque

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

fournisseurs

Chaîne d'approvisionnement

Automatiser des décisions telles que la sélection des fournisseurs en fonction de critères prédéfinis.

prix

Tarification dynamique

Dans le commerce électronique, ajuster les prix selon la demande du marché, la disponibilité des produits ou d'autres conditions commerciales.

suspect

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.

décision

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

NomCe 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.
RuleMLRule Markup Language : un langage de balisage conçu pour représenter des règles métier sous une forme lisible par machine.
JessJava Expert System Shell : un moteur de règles pour Java qui utilise son propre langage basé sur le Lisp.
CLIPSC 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.
ReteUn 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
DroolsMoteur 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.
CorticonProgress Corticon : modéliser, exécuter et optimiser des règles métier.
InRulePlateforme pour définir, gérer et automatiser les règles métier.
CamundaMoteur 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 EngineInclus 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

faits · règles

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.

prédicats · variables

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

déclaratif

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.

premier ordre

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).

1970 · Marseille

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

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.

usages

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

minuscule initiale

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).
entiers · flottants

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

Majuscule ou _

Variables

Des symboles qui représentent des valeurs inconnues. Elles commencent généralement par une lettre majuscule ou un soulignement.

personne(X).
foncteur(arguments)

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

structure générale d'une règle

Tête :- Corps.

Têtespécifie la relation que nous voulons définir ; généralement un seul prédicat Corpsune séquence de prédicats liés par des conjonctions (, pour ET) et des disjonctions (; pour OU) ; il spécifie les conditions sous lesquelles la tête est vraie
corps vide

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

gprolog

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
| ?-
ce qui se passe
$ prologlance l'interpréteur
[user].compile ce qui suit au clavier
Ctrl-Dtermine la saisie
yesles 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
lecture
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/3
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
retour arrière
friend(bob, X).trois faits correspondent
X = alice ? a« a » = all : afficher toutes les solutions
thomas, peterobtenues 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).
lecture des règles
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).
kevinjanejimannbobpatparent(X, Y) : une flèche · ancetre(X, Y) : un chemin de flèches
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
| ?-
ordre des solutions
jane, jimpremière clause : parent direct
ann, bobseconde clause via jane
patseconde clause via jim
noplus 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

CréditsImages : Wikimedia Commons · Couleurs : Material Design Color Tool · Licence CC BY-SA 4.0.

notes