-----------------------------chapitre 1---------------------------------------------
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Plan
• Min-Max
• Alpha-Beta pruning
1
Chapitre : Jeux
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Préliminaire
Objectifs:
• comprendre l'approche générale pour développer une IA pour jeu a deux adversaires
• comprendre et pouvoir appliquer l'algorithme minimax
• comprendre et pouvoir appliquer l'algorithme d‘élagage alpha-beta
2
Jeux Préliminaire
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Préliminaire
dans un jeu, des joueurs peuvent être:
• coopératifs
ils veulent atteindre le même but
• des adversaires en compétition
un gain pour les uns est une perte pour les autres
cas particulier : les jeux a somme nulle (zero sum game)
jeux d‘échecs, de dame, tic-tac-toe-connect 4, etc
• mixte
il y a tout un spectre entre les jeux purement coopératifs et les jeux avec adversaires (ex: alliances)
3
Jeux Préliminaire
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Préliminaire
Nous aborderons les :
1. jeux a deux adversaires
2. jeux a tour de rôle
3. jeux a somme nulle
4. jeux avec environnement complètement observés
5. jeux déterministes (sans hasard ou incertitude)
4
Jeux Préliminaire
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Préliminaire
• Noms des joueurs : Max vs Min
Max est le premier a jouer (notre joueur)
Min est son adversaire
• On va interpréter le résultat d'une partie comme la distribution d'une récompense au joueur Max
peut voir cette récompense comme le résultat d'un pari
Max souhaite maximiser sa récompense
Min souhaite minimiser la récompense de Max
(Min va recevoir l'opposé de cette récompense)
5
Jeux Préliminaire
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
EXEMPLE (1)
6
Jeux ALGORITHME MIN-MAX
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
EXEMPLE (2)
7
Jeux ALGORITHME MIN-MAX
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
8
Jeux ALGORITHME MIN-MAX
Algorithme MINMAX(noeudInitial)
1. retourner l'action choisie par TOUR-MAX(neoudInitial)
Algorithme TOUR-MAX(n)
1. si n correspond a une fin de partie, alors retourner utilité(n)
2. u=-infinité, a = void
3. pour chaque paire(a', n') donné par transition(n)
4. si utilité de TOUR-MIN(n') > u alors affecter a = a', u = utilité de TOUR-MIN(n')
5. retourner utilité u et l'action a //l'action ne sert qu'a la fin (la racine)
Algorithme TOUR-MIN(n)
1. si n correspond a une fin de partie, alors retourner utilité(n)
2. u=+infinité, a = void
3. pour chaque paire(a', n') donné par transition(n)
4. si utilité de TOUR-MAX(n') < u alors affecter a = a', u = utilité de TOUR-MAX(n')
5. retourner utilité u et l'action a
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Comment accélérer la recherche
• Deux approches
La première maintient l’exactitude de la solution
La deuxième introduit une approximation
1. Elagage alpha-beta (alpha-beta pruning)
Idée : identifier des chemins dans l’arbre qui sont explorés inutilement
2. Couper la recherche et remplacer l’utilité par une fonction d’évaluation heuristique
Idée : faire une rechercher la plus profondeur possible en fonction du temps a notre disposition et
tenter de prédire le résultat de la partie si on n’arrive pas a la fin
9
Jeux ALPHA-BETA PRUNING
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Deux paramètres :
Alpha = -infinité
Beta = +infinité
10
Jeux ALPHA-BETA PRUNING
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
11
Jeux ALPHA-BETA PRUNING (2)
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
12
Jeux ALPHA-BETA PRUNING (3)
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
13
Jeux ALGORITHME ALPHA-BETA PRUNING
Algorithme ELAGAGE_ALPHA_BETA(noeudInitial)
1. retourner l'action choisie par TOUR-Max(neoudInitial,-infinité,+infinité)
Algorithme TOUR-MAX(n,alpha,beta)
1. si n correspond a une fin de partie, alors retourner utilité(n)
2. u=-infinité, a = void
3. pour chaque paire(a',n') donné par transition(n)
4. si utilité de TOUR-MIN(n',alpha,beta) > u alors affecter a = a', u = utilité de TOUR-MIN(n',alpha,beta)
5. si u>= beta alors retourne utilité u et l'action a
6. alpha = max(alpha,u)
4. retourner utilité u et l'action a
Algorithme TOUR-MIN(n,alpha,beta)
1. si n correspond a une fin de partie, alors retourner utilité(n)
2. u=+infinité, a = void
3. pour chaque paire(a',n') donné par transition(n)
4. si utilité de TOUR-MAX(n',alpha,beta) < u alors affecter a = a', u = utilité de TOUR-MAX(n',alpha,beta)
5. si u<= alpha alors retourne utilité u et action a
6. beta = min(beta,u)
5. retourner utilité u et l'action a
-------------------------------------------chapitre 2 apprentissage automatique-----------------------------------
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
L’apprentissage automatique est une application de l’IA qui permet aux
systèmes d’apprendre et de s’améliorer à partir de l’expérience sans être
explicitement programmés. En effet, il s'agit de développer des modèles prédictifs qui
peuvent accéder aux données et les utiliser pour apprendre par eux-mêmes.
Les trois piliers de l’apprentissage automatique
1. Apprentissage non-supervisé (Unsupervised Learning)
2. Apprentissage supervisé (supervised Learning)
3. Apprentissage par renforcement (Reinforcement Learning)
1
Chapitre : Apprentissage automatique
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
L'apprentissage non-supervisé consiste à apprendre à un algorithme/fonction
d'intelligence artificielle des informations qui ne sont ni classées, ni étiquetées, et à permettre
à cet algorithme de réagir à ces informations sans supervision.(ex. Clustering).
2
Apprentissage non-supervisé
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Il est défini par son utilisation d’ensembles de données étiquetés pour former des
algorithmes qui permettent de classer les données ou de prédire les résultats avec
précision.(ex. Classification, Régression).
3
Apprentissage supervisé
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
L'apprentissage par renforcement (reinforcement learning RL) est une méthode
d’apprentissage qui s'intéresse à la prise de décision en se basant sur le principe de
maximisation de récompense (ex. les jeux).
4
Apprentissage par renforcement
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
• Sortie Y (variable dépendante, réponse, cible).
• Vecteur de p entrées X (régresseurs, covariables, caractéristiques, variables
indépendantes).
• Dans un problem de régression, Y est quantitative (ex: prix, pression de sang).
• Dans un problème de classification, Y prend des valeurs dans un ensemble fini
et non ordonné. (survécu/décédé, chiffres 0-9, type de cancer).
• On a les données d'entraînement (x1, y1); …. ; (xN, yN), qui sont des
observations (exemple, instances) des caractéristiques.
5
L’apprentissage supervisé
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Sur la base des données de l’entrainement, nous aimerions :
• Prédire avec précision les cas de test invisibles.
• Comprenez quelles entrées affectent le résultat et comment.
• Évaluer la qualité de nos prédictions et inférences.
6
Objectifs
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Training data:
7
Exemple de régression
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Modèles de régression
• Linéaire regression
• Logistic regression
• Polynomial regression
• ….
8
Exemple de régression
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Régression linéaire
9
Exemple de régression
Apprentissage
Prédiction
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
10
Exemple de classification
Classification
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
11
Exemple de classification
Modèles de classification
• Arbre de décision
• Random forest
• Neural networks
• SVM
• ….
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Arbre de décision
12
Exemple de classification
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Random Forest ( plusieurs arbres de décision)
13
Exemple de classification
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Le workflow d'un projet de Machine Learning
14
Cycle de vie d’un projet en machine learning
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Comprendre et formaliser les besoins client et métier
• quelle est la problématique que l'on souhaite résoudre
• et quelle solution y apporter.
• Les projets de Machine de Learning sont des processus longs, du fait qu'ils
nécessitent notamment de collecter une grande quantité de données afin d'apporter
une réponse robuste, fiable et stable.
• définir des objectifs quantifiables afin d'indiquer
• quel type de données recueillir (numériques, images, vidéos...),
• quels résultats attendre (données de sortie)
• et de définir quelle classe de modèle de Machine Learning (apprentissage
supervisé/non supervisé, par renforcement...)
15
Cycle de vie d’un projet en machine learning
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Récupération des données
• Automatiser la récupération et l'injection de données
16
Cycle de vie d’un projet en machine learning
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Exploration et Visualisation des données
• compréhension de l'environnement étudie
• éviter les biais
• fournir des données de qualité
17
Cycle de vie d’un projet en machine learning
Préparation des données (Pré-traitement)
• rendre les données exploitables par les algorithmes de Machine
Learning
Choix et implémentation du/des modèle(s)
• Bibliothèques pour une multiplicité de langages comme Python, R, C++,
C ou Julia.
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Entrainer le modèle
• améliorer sa capacité, de façon progressive et itérative, à réagir face à
une situation donnée, à résoudre un problème complexe ou résoudre
une tâche
• Minimisation d’une fonction d'erreur/de coût
18
Cycle de vie d’un projet en machine learning
Evaluer et Valider le modèle
• appliquer le modèle entrainé sur le "training set"
• Utilisation de métriques
Déploiement de modèle
• Dépoiler le modèle en production
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Plan
1. Formation de l’image
2. Types des images numériques
3. Extraction de caractéristiques
4. Métriques pour la classification
Introduction à la vision par ordinateur
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Image : projection d’une scène 3D a un plan de 2D.
On a besoin de comprendre les propriétés géométriques et photométriques entre la scène
et son image
Géométriques:
Profondeur
Position de caméra
Optiques:
Type des lentilles
Distance focal, champ de vision
Photométriques:
Direction et intensité de la lumière etc.
Formation de l’image
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
• L'image numérique est composée de M lignes et N colonnes de pixels stockant chacune une
valeur
• Les valeurs des pixels sont le plus souvent des niveaux de gris compris entre 0 et 255
Représentation de l’image
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Le système binaire est :
• La méthode la plus simple pour représenter une image
• Très utilisé dans les OCR
• Le foreground est représenté par 1 et le background par 0
Image binaire
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Une image numérique a niveaux de gris (grayscale) est une image ou la valeur de chaque pixel
porte uniquement l’information de l’intensité.
Image a niveaux de gris
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Les images couleur sont souvent constituées de plusieurs canaux de couleur empilés, chacun
représentant les niveaux de valeur du canal donné.
Par exemple, les images RGB sont composées de trois canaux indépendants pour les composantes
de couleurs primaires rouge, verte et bleue.;
les images CMYK ont quatre canaux pour les plaques d'encre cyan, magenta, jaune et noire, etc.
Exemple de division des canaux de couleur d'une image couleur RGB complète
Image couleur
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
• RGB
• HSV
• YCbCr
• CIELuv
• CIELab
• etc
•...
Espaces de couleur
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
• Extraction de caractéristiques : C'est le processus de transformer les caractéristiques d'origine en
un nouvel ensemble, préservant les informations essentielles et mettant en évidence les attributs
clés. Cela crée une représentation plus compacte des données.
• Sélection de caractéristiques : implique de choisir un sous-ensemble de caractéristiques
pertinentes dans l’ensemble d’origine, en conservant les plus informatives tout en supprimant les
moins importantes.
Extraction de caractéristiques
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
L'extraction de caractéristiques peut être effectuée via diverses méthodes :
• les transformations mathématiques,
• des mesures statistiques
• à l'aide de modèles pré-entraînés
• la détection des contours
• l'analyse de texture
• les méthodes basées sur les couleurs
Méthodes d’extraction de caractéristiques
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Extraction de caractéristiques
Exemple :
Mesures statistiques: moyenne (mean), asymétrie (skew), écart type (standard deviation),
entropie (entropy) et kurtosis
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Extraction de caractéristiques
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Métriques de classification
• La matrice de confusion
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Métriques de classification
• accuracy = (TP+TN)/(TP+TN + FP + FN)
• Sensitivity/recall = TP/(TP+FN)
• specificity = TN/(TN+FP)
• Positive Predictive Value (PPV)/Precision = TP / (TP + FP)
• Negative Predictive Value (NPV) = TN / (TN+FN)
----------------------------------------------------------------chapitre 3 Tracking--------------------------------
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Suivi des objets :Tracking
Plan
• Détection de changement
• Template matching
• Détection de caractéristiques
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Entrée: camera de surveillance statique (chambre, rue, etc.)
Chercher: changement important (objets en déplacement, personnes, etc.)
Robuste et classification en temps réel de chaque pixel comme
"foreground" (mouvement/changement) or "background" (statique).
Détection de changement
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Ignorer le changement non significatif
• Fluctuations de l’arrière plan
• Bruit d’image
• Pluie, neige, turbulence
• Changement d’éclairage et ombres
• Mouvement du camera
Détection de changement :défis
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Étiqueter la différence significative entre les images actuelles et précédentes
comme premier plan (Foreground).
T = seuil
N’est pas robuste!
séquence vidéo d’entrée Différence de frames
Détection de changement :différence de frames simple
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Construisez un modèle simple d’arrière-plan avant la classification.
(Premières K frames)
Frame d’entrée Foreground
Ne peut pas gérer les changements d'éclairage et d'arrière-plan, etc.
Détection de changement :modélisation du background :Moyenne
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Construisez un modèle simple d’arrière-plan avant la classification.
Foreground
Détection de changement :modélisation du background :Médian
Ne peut pas gérer les changements d'éclairage et d'arrière-plan, etc.
(Premières K frames)
Frame d’entrée
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Foreground
Nécessite de conserver les K dernières images en mémoire.
Trouver la médiane pour chaque pixel coûte cher.
Background
Détection de changement :modélisation du background :Médian adaptatif
Construisez un modèle adaptative simple d’arrière-plan au fur et à mesure
Frame d’entrée
(Dernières K frames)
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Foreground
Ne peut pas gérer des fluctuations de pixels importantes
(météo, ombres, secousses, etc.)
Background
Détection de changement :modélisation du background :Médian adaptatif
Construisez un modèle adaptatif simple d’arrière-plan au fur et a mesure
(Dernières K frames)
Frame d’entrée
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Foreground Background
Détection de changement :modélisation du background :Médian adaptatif
Construisez un modèle adaptatif simple d’arrière-plan au fur et a mesure
Ne peut pas gérer des fluctuations de pixels importantes
(météo, ombres, secousses, etc.)
Frame d’entrée
(Dernières K frames)
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Entrée: Position de la cible dans l’image initiale ou précédente
Chercher: Position de la cible dans l’image courante
Template matching
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Template cible pour le suivi
Le suivi basé sur les apparences:
Le suivi basé sur l’histogramme : L’histogramme Template
L’image Template
Template matching
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Template cible pour le suivi
Le suivi basé sur les apparences:
Le suivi basé sur l’histogramme : L’histogramme Template
L’image Template
Template matching
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Objet Template
Le suivi en utilisant appearance matching
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Objet Template
Le suivi en utilisant appearance matching
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Object Template
Simple Implémentation. Peu résistant aux changements de scène, de point de vue,
d'occlusion, etc.
Le suivi en utilisant appearance matching
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Métriques de similarité pour template matching
Said CHARFI Intelligence Artificielle said.charfi@e-polytechnique.ma
Exemple SAD
Template image de recherche
2 5 5 2 7 5 8 6
4 0 7 1 7 4 2 7
7 5 9 8 4 6 8 5
Gauche Centre Droite
0 2 0 5 0 3 3 3 1
3 7 3 3 4 5 0 2 0
1 1 3 3 1 1 1 3 4
La différence entre 2 et 2 est 0, 4 et 1 est 3, 7 et 8 est 1, ainsi de suite.
Pour chacune de ces images patches, on calcule la somme de toutes les différences et ca
nous donne les valeurs SAD : 20, 25 et 17
L’image a gauche est la plus similaire (la valeur SAD la plus petite)
-------------------------------------------------------chapitre 4 NLP-----------------------------------------------------------------
Traitement de langage naturel (NLP)
Traitement de langage naturel (NLP)
Plan
1. Introduction
• Définition et objectif
• Domaines d’applications
• Les niveaux de traitement
• L’analyse vs la génération
2. Les méthodes linguistiques
3. Les méthodes statistiques-machine learning
Traitement de langage naturel (NLP)
• L'objectif du traitement automatique du langage naturel (TALN) est la
conception de logiciels, capables de traiter de façon automatique des
données linguistiques, c’est-à-dire des données exprimées dans une
langue (dite "naturelle")
• textes écrits, ou bien des dialogues écrits ou oraux,
• ou encore des unités linguistiques de taille inférieure à ce que l’on
appelle habituellement des textes (par exemple : des phrases, des
énoncés, des groupes de mots ou simplement des mots isolés).
Domaines d’application du TALN
Parmi les diverses applications possibles, on peut citer principalement
− La traduction automatique.
− Le résumé automatique des textes.
− La réalisation d’interface en langue naturelle.
− L’indexation automatique de documents.
− L’enseignement assisté par ordinateur.
− Serveurs vocaux
− Correction lexicale et syntaxique
− Outils d’aide à la rédaction
− Dictée vocale
− … etc.
Les niveaux de traitement
Pour traiter le langage naturel, on a besoin d’informations coordonnées
et pertinentes sur la langue à des niveaux divers.
cinq niveaux de connaissances sur une langue
pragmatique
sémantique
syntaxique
morpho-lexical
phonologique
Les niveaux de traitement
1. Le niveau phonologique : La machine doit reconnaître les signaux acoustiques (domaine de la
phonétique) et les identifier en tant que mots. Exemple : "Vincent mit l’âne dans un pré ou vingt cent
mille ânes dans un pré". Plus précisément, il s’agit de reconnaître dans le flot sonore les unités
acoustiques élémentaires (phonèmes). La difficulté est que la forme acoustique d’un phonème varie
selon plusieurs facteurs : le sexe, l’âge, la région, la fatigue, la peur, l’intensité de la parole, etc.
2. Le niveau morpho-lexical : il concerne l’étude de la formation des mots et de leur variation de formes.
Exemple : "Aujourd’hui, parce qu’il a acheté un micro, Paul a payé la T.V.A ".
3. Le niveau syntaxique : il s’intéresse à l’agencement des mots et à leurs relations structurelles.
Exemple : "Le boucher sale la tranche ".
4. Le niveau sémantique : se consacre au sens des énoncés. Exemple : "Le client, dit Monsieur Dupont,
est satisfait". "Le client dit : Monsieur Dupont est satisfait".
5. Le niveau pragmatique : prend en compte le contexte d’énonciation. Exemple : "La mousse aux
fraises est sur la table de l’avocat".
L‘analyse VS la génération
• En fonction des objectifs attendus d'un système de TALN, on peut le classer dans
l'un des domaines suivants : analyse et génération.
• Le processus d'analyse consiste à démarrer de la structure de surface (locution ou
texte écrit) pour arriver à la structure profonde équivalente.
• Le processus de génération est le processus inverse : il consiste à passer de la
structure profonde à la structure de surface.
Les étapes préalables à l’analyse de données textuelles
1. Segmentation du texte en unités lexicales :
• mots et phrases
2. Le traitement lexical :
• déterminer les informations lexicales associées à chaque mot isolément (règles
morphologiques et dictionnaire)
3. Le traitement syntaxique :
• Désambigüiser en fonction du contexte, extraire les relations grammaticales que les mots et
les groupes de mots entretiennent entre eux
• Analyse morpho-syntaxique
Exemple
• Ex: "Le compteur intelligent Linky sera déployé à Paris en 2013."
1. Le/Compteur/Intelligent/Etc.
2. Le : déterminant masculin singulier ou pronom personnel masculin
singulier
3. Le : déterminant masculin singulier
Segmentation du texte en phrases et en mots
• Segmentation du texte en mots (tokenisation)
• Difficultés:
Gestion des balises, des marques et des variations typo-dispositionnelles
(alinéas, tirets, blancs, tabulations...)
Détection de fin de phrase (localiser le point) : attention aux acronymes
E.N.S.T., nombres (3.14), dates (29.05.2013)
Les méthodes linguistiques
Objectif :
• décrire l'information à extraire pour un métier, un domaine spécifique ou
une thématique en modélisant l’information sous forme de
lexiques/ontologies et patrons/règles linguistiques/grammaires/automates.
• "manque de qualité de service"
• "il n’y a vraiment pas eu de contact "
, …
Concept INSATISFACTION
Les méthodes linguistiques
Modélisation sémantique :
• Utilisation de lexiques et de règles
• Règles qui répertorient toutes les formulations possibles d’une même information
langage d’expressions régulières
• Appel de lemmes : ex. « avoir »
• Appel de catégories grammaticales : « #PREP_DE » « #NEG »
• Appel de lexiques prédéfinis: « ~services-lex »
Méthodes statistiques-machine learning
• Types de tâches:
• Classer, catégoriser les documents en thèmes, en opinions, etc.
• La catégorisation ou classification supervisée
• Le clustering ou classification non supervisée
• Repérer des expressions
• Ex: détection d’entités nommées
Catégorisation – les deux phases
• Phase 1 – l’apprentissage
• Corpus d’apprentissage = ensemble de documents textuels annotés,
• Annotation : chaque document est associé à une classe :
• Ex1. Corpus d’articles de journaux : le thème de l’article (international, politique,
sciences, sports, etc).
• Ex2. Corpus de critiques de films : la note donnée par l’internaute (1 à 5)
• Objectif : Apprendre à partir des données du corpus les caractéristiques
communes à chaque classe
• Phase 2 – le test/la classification/la décision
• À chaque nouveau document en entrée du système est attribuée
automatiquement une classe
Clustering de documents
• Classification non supervisée
Documents Prétraitement
Représentation des documents sous
forme de vecteurs de données
Documents
classe 1
Documents
classe 2
…
Catégorisation – phase 1 : l’apprentissage
Documents
classe 1
Documents
classe 2
…
Prétraitement
Représentation des documents de
chaque classe sous forme de
matrice de données
Apprentissage des
modèles associés à
chaque classe (propriétés
spécifiques à chaque
classe)
• Apprentissage des classes
Catégorisation - phase 2 :la décision
Nouveau
document
à classer
Prétraitement
Représentation du
document sous forme de
vecteurs
Modèles associés à
chaque classe
Classe du document
Prétraitements
• Segmentation en mots / tokenization : choix des mots à considérer
• Filtrage des signes (ponctuation, dates)
• Filtrage des anti-mots (stop words) à partir d’une liste de mots
• Mots de liaisons et d’articulation du texte car peu de pouvoir discriminant
• Filtrage des hapax
• Termes qui sont très peu fréquents dans le corpus
• Peuvent correspondre à des mots mal orthographiés
• Regrouper des termes autour de leur racine ou de leur lemme
• Racinisation (stemming) : tronquer certains suffixes
• Lemmatisation (après une analyse morphosyntaxique)
• Grouper les mots en n-grammes
• Ex: considérer tous les couples de mots (bigrammes)
• Ex: regrouper les termes appartenant au même syntagme
FORM TAG
I #PronPers
Would #Verb
Like #Verb
More #QuantCmp
Contacts #Noun
With #Prep
EDF #ProperName
Représentation du document sous forme de matrices de données
• 1 doc = 1 vecteur (a1, …., aN) de longueur N (le nombre de mots dans l’ensemble
des textes)
• où a_i = nombre d’occurrences du mot i dans le texte
• où a_i = TFIDF du mot i dans le texte
• TFIDF (Term Frequency Inverse Document Frequency) = mesure
statistique utilisée pour évaluer la représentativité d’un terme/mot par
rapport à un document dans une collection de textes
• La représentativité du terme augmente proportionnellement au nombre de
fois où le terme apparaît dans un document (TF), mais il est pondéré par sa
fréquence dans l’ensemble du corpus (IDF)
• Base de documents = matrices terme/document
Vectorization
Count vectorization
N-grams
TF-IDF (Term Frequency-Inverse Document Frequency)
Vectorization : Count vectorization
Exemple:
• NLP is interesting, NLP is good
• Don’t like NLP
• good subject
• Compte le nombre d’occurrence d’un token dans une phrase
NLP is interesting Don’t like good subject
2 1 1 0 0 1 0
1 0 0 1 1 0 0
0 0 0 0 0 1 1
Vectorization : N-grams
• Crie une matrice de mots sauf que toutes les combinassions possibles de tokens adjacents sont
considérés
Exemple: NLP is an interesting topic
n Nom Tokens
2 bigram ["NLP is", "is an", "an interesting", "interesting topic"]
3 trigram ["NLP is an", "is an interesting", "an interesting topic"]
4 Four-gram ["NLP is an interesting", "is an interesting topic"]
Calcul de TF-IDF
• mesure statistique utilisée pour évaluer la représentativité d’un terme/mot
par rapport à un document dans une collection de textes
• Formule TF-IDF du mot w dans le document d
• N : le nombre total de documents dans le corpus
• TF : nombre d’occurrences du mot w dans le document d
• DF : nombre de documents contenant le mot w
TFIDF (w,d) = TF(w,d) log2(N/DFw)
-----------------------------------------------------------------Exercice 1 : Régression linéaire----------------------------
#libraries
import pandas as pd
#connection au drive
from google.colab import drive
drive.mount("/content/drive", force_remount=True)
data = pd.read_csv('/content/drive/My Drive/market.csv')
#visualisation
data.head()
#description
data.describe()
df = data
#selection de la cible
y = df['Close']
#selection des caracteriqtique sans cible
x = df.drop(columns=['Date','Close','Total Trade Quantity','Turnover (Lacs)'])
#Separation de la base de données en training data and testing data
from sklearn.model_selection import train_test_split
train_x, test_x, train_y, test_y = train_test_split(x, y, test_size=0.15)
print(train_x.shape )
print(test_x.shape)
print(train_y.shape)
print(test_y.shape)
#choix de modele
from sklearn.linear_model import LinearRegression
regression = LinearRegression()
#training
regression.fit(train_x, train_y)
#metrique d'evaluation
from sklearn.metrics import mean_squared_error
print("regression coefficient",regression.coef_)
mse = mean_squared_error(test_y, predicted)
print("mean squared error: ", mse)
#testing
predicted=regression.predict(test_x)
#visualisation de quelques resultats de test
dfr=pd.DataFrame({'actual_close':test_y, 'Predicted_close':predicted})
dfr.head(10)
------------------------------------Exercice 2 : Classification avec Random forest-----------------
#libraries
import pandas as pd
#connection au drive
from google.colab import drive
drive.mount("/content/drive", force_remount=True)
data = pd.read_csv('/content/drive/My Drive/heart.csv')
#visualiser les ligne de la base de données
data.head()
#Description de la base de données
data.describe()
df = data
#selection de la cible
y = df['target']
#selection des caractériqtiques sans cible
x = df.drop(columns=['target'])
#Separation de la base de données en training data and testing data
from sklearn.model_selection import train_test_split
train_x, test_x, train_y, test_y = train_test_split(x, y, test_size=0.15)
print(train_x.shape )
print(test_x.shape)
print(train_y.shape)
print(test_y.shape)
#choix de modele
from sklearn.ensemble import RandomForestClassifier
classifier_rf = RandomForestClassifier()
#entrainement
classifier_rf.fit(train_x, train_y)
#evaluation
predictions = classifier_rf.predict(test_x)
#visualisation de quelque resultat
dfr=pd.DataFrame({'actual_etat':test_y, 'Predicted_disease':predictions})
dfr.head(10)
#evaluation metrique
#evaluation metrique
from sklearn.metrics import accuracy_score,confusion_matrix
print(accuracy_score(test_y, predictions))
confusion_matrix(test_y, predictions)
# 1 0
#1 TP FP
#0 FN TN
#accuracy = (TP+TN)/(TP+TN + FP + FN)
#sensitivity = TP/(TP+FN)
#specificty = TN/(TN+FP)
#PPV = TP / (TP+FP)
#NPV = TN / (TN+FN)
------------------------------------------Exercice 3 : Classification des images-----------------------------
from google.colab import drive
drive.mount("/content/drive", force_remount=True)
!nvcc --version
!unzip "/content/drive/MyDrive/Nouveaudossier.zip"
#Extraction de caracteristiques
import glob
import cv2
import numpy as np
from scipy.stats import skew, entropy, kurtosis
import os
import math
vector = [[] for i in range(500)]
for img in glob.glob("/content/Nouveaudossier/data/*.jpg"):
features = []
base=os.path.basename(img)
index=os.path.splitext(base)[0]
n= cv2.imread(img)
gray = cv2.cvtColor(n, cv2.COLOR_BGR2GRAY)
gray = np.reshape(gray,(576*576))
mean = np.mean(gray)
features.append(mean)
std = np.std(gray)
features.append(std)
sk = skew(gray)
features.append(sk)
entr = entropy(gray)
features.append(entr)
kurtosi = kurtosis(gray)
features.append(kurtosi)
features = [0 if math.isnan(x) else x for x in features]
vector[int(index)] = features
#Recuperation de la cible
import pandas as pd
labels = pd.read_csv('/content/Nouveaudossier/labels.csv')
labels = labels['label']
df = pd.DataFrame(vector, columns = ['mean', 'std','sk','entr','kurtosi'])
print(df)
from sklearn.model_selection import train_test_split
train_x, test_x, train_y, test_y = train_test_split(df, labels, test_size=0.15)
#choix de modele
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
#random forest
classifier_rf = RandomForestClassifier()
#SVM
model_svm = SVC()
#entrainement
classifier_rf.fit(train_x, train_y)
model_svm.fit(train_x, train_y)
#evaluation
predictions = classifier_rf.predict(test_x)
pred_ = model_svm.predict(test_x)
#evaluation metrique
#Random forest
from sklearn.metrics import accuracy_score,confusion_matrix
print(accuracy_score(test_y, predictions))
confusion_matrix(test_y, predictions)
#SVM
print(accuracy_score(test_y, pred_))
confusion_matrix(test_y, pred_)
-------------------------------------------------Exercice NLP Analyse des sentiments---------------------------
En exploitant les fonctions écrites dans l’exercice 1, développer une application basée sur
ML pour l’analyse de sentiments.
Dataset a utilisée :
https://drive.google.com/file/d/19A_sROmn6QH_M5YY10yOnLj1AwjuKI0/view?usp=sharing
Correction :
**************************************************************************************************************
import pandas as pd
from google.colab import drive
drive.mount("/content/drive", force_remount=True)
x_train = pd.read_csv("/content/drive/MyDrive/Train.csv")
import re
def supprimer_crochets(text):
return re.sub('\[[^]]*\]', '', text)
x_train['text']=x_train['text'].apply(supprimer_crochets)
def supprimer_special(text, remove_digits=True):
pattern=r'[^a-zA-z0-9\s]'
text=re.sub(pattern,'',text)
return text
#Apply function on review column
x_train['text']=x_train['text'].apply(supprimer_special)
import nltk
nltk.download(["names","stopwords","punkt"])
#Stemming the text
def simple_stemmer(text):
ps=nltk.porter.PorterStemmer()
text= ' '.join([ps.stem(word) for word in text.split()])
return text
#Apply function on review column
x_train['text']=x_train['text'].apply(simple_stemmer)
from nltk.tokenize.toktok import ToktokTokenizer
tokenizer=ToktokTokenizer()
stopword_list=nltk.corpus.stopwords.words('english')
from nltk.corpus import stopwords
stop=set(stopwords.words('english'))
print(stop)
def remove_stopwords(text):
tokens = tokenizer.tokenize(text)
tokens = [token.strip() for token in tokens]
filtered_tokens = [token for token in tokens if token not in stopword_list]
filtered_text = ' '.join(filtered_tokens)
return filtered_text
x_train['text']=x_train['text'].apply(remove_stopwords)
#30000 commentaires pour l'entrainement
norm_train_text=x_train.text[:30000]
norm_train_text[0]
#10000 commentaires pour le test
norm_test_text=x_train.text[30000:]
norm_test_text[35005]
from sklearn.feature_extraction.text import TfidfVectorizer
#Tfidf vectorizer
tv=TfidfVectorizer()
#transformed train reviews
tv_train_text=tv.fit_transform(norm_train_text)
#transformed test reviews
tv_test_text=tv.transform(norm_test_text)
print('Tfidf_train:',tv_train_text.shape)
print('Tfidf_test:',tv_test_text.shape)
sentiment_data = x_train['label']
#Spliting the sentiment data (labels)
train_sentiments=sentiment_data[:30000]
test_sentiments=sentiment_data[30000:]
print(train_sentiments)
print(test_sentiments)
from sklearn.linear_model import LogisticRegression
#training the model
lr=LogisticRegression(penalty='l2',max_iter=500,C=1)
#Fitting the model for tfidf features
lr_tfidf=lr.fit(tv_train_text,train_sentiments)
print(lr_tfidf)
#Predicting the model for tfidf features
lr_tfidf_predict=lr.predict(tv_test_text)
print(lr_tfidf_predict)
from sklearn.metrics import confusion_matrix,accuracy_score
lr_tfidf_score=accuracy_score(test_sentiments,lr_tfidf_predict)
print("lr_tfidf_score :",lr_tfidf_score)
confusion_matrix(test_sentiments,lr_tfidf_predict)
#one comment prediction
liste = []
commentaire = "hello it is a bad movie"
commentaire = supprimer_crochets(commentaire)
commentaire = supprimer_special(commentaire)
commentaire = simple_stemmer(commentaire)
tokens = remove_stopwords(commentaire)
liste.append(tokens)
x = tv.transform(liste)
res = lr.predict(x)
print(res)
-----------------------------------------------Exercice 1 : nltk--------------------------------
Text = ["hello, python is a great language", "python is not a good programming
language"," C++ has been used for years", " I loved that movie [12]" ]
1. En utilisant les expressions réguliers, écrire une fonction qui permet de supprimer les
caractères spéciaux et les mots entre crochets des chaines ci-dessus
Correction:
Text = ["hello, python is a great language", "python is not a good programming
language","C++ has been used for years", "I loved this movie [12]" ]
*************************************************************************************************
import re
def supprimer_crochets(text):
text = re.sub('\[[^]]*\]','',text)
return text
def supprimer_special(Text):
pattern = r'[^a-zA-Z0-9\s]'
text = re.sub(pattern,'',Text)
return text
i = 0
for elem in Text:
Text[i] = supprimer_crochets(elem)
i = i+1
print(Text)
i = 0
for elem in Text:
Text[i] = supprimer_special(elem)
i = i+1
print(Text)
*************************************************************************
En utilisant la bibliothèque nltk, écrire une fonction qui permet de
2. appliquer les stemming sur les chaines de caractères ci-dessous
Correction :
*************************************************************************
import nltk
nltk.download([
... "names",
... "stopwords",
... "state_union",
... "twitter_samples",
... "movie_reviews",
... "averaged_perceptron_tagger",
... "vader_lexicon",
... "punkt",
... ])
def simple_stemmer(text):
ps=nltk.porter.PorterStemmer()
text= ' '.join([ps.stem(word) for word in text.split()])
return text
i = 0
for elem in Text:
Text[i] = simple_stemmer(elem)
i = i+1
print(Text)
*****************************************************************
3. appliquer la tokenization, puis supprimer les stops words
Correction :
******************************************************************
from nltk.tokenize.toktok import ToktokTokenizer
tokenizer=ToktokTokenizer()
stopword_list=nltk.corpus.stopwords.words('english')
print(stopword_list)
def remove_stopwords(text):
tokens = tokenizer.tokenize(text)
tokens = [token.strip() for token in tokens]
filtered_tokens = [token for token in tokens if token not in stopword_list]
filtered_text = ' '.join(filtered_tokens)
return filtered_text
i = 0
for elem in Text:
Text[i] = remove_stopwords(elem)
i = i+1
print(Text)
# l’analyse TFIDF (optionnel)
from sklearn.feature_extraction.text import TfidfVectorizer
#Tfidf vectorizer
tv=TfidfVectorizer()
#transformed train reviews
tv_train_text=tv.fit_transform(Text)
print(tv_train_text)
--------------------------------------------------Exercice 2 : CALCUL TF-IDF-----------------------
La base contient 1000 documents, calculer la TF-IDF du mot "compteur" dans le
document d, sachant que le document d contient 3 fois le mot compteur et que 70 textes
contiennent également le mot "compteur"
Correction :
****************************************************************************************************
TFIDF(,wd) = TF(w,d)log(N/DFw)
TFIDF("compteur",d) = 3 log(1000/70) = 11.5
*******************************************************************************************************
Dans ce cas le mot compteur est important
Le mot "compteur" apparaît toujours 3 fois dans le document mais apparait cette fois
dans 900 documents
Correction :
***************************************************************************************************
TFIDF("compteur",d) = 3 log(1000/900) = 0.45
Par contre, ici le mot compteur n’est pas important (valeur TFIDF proche de zéro)