Nos projets

Exemples de réalisations par PGData
 Moteur de classification automatique

Moteur de classification automatique

Développement d'un moteur de classification automatique de biens de consommation par traitement de textes et d'images.

Contexte


Sur un site type place de marché, des vendeurs proposent des articles à des acheteurs en postant des images de l’article et en fournissant une description détaillée. Afin de rendre l’expérience utilisateur (vendeurs et acheteurs) la plus fluide possible, et dans l’optique d’un passage à l’échelle, une automatisation de l’attribution de la catégorie d’un article est nécessaire.

Ce projet étudie la faisabilité d’un moteur de classification des articles en différentes catégories prédéfinies, avec un niveau de précision suffisant, basé sur une image et une description.

La méthodologie sera la suivante :

  • Une étape de pre-processing sur le texte et l’image
  • Une étape d’extraction des variables sur le texte et l’image
  • Une réduction des variables
  • Une étape de clustering d’après les variables extraites
  • Enfin, une comparaison aux catégories réelles des produits pour évaluation du modèle de classification

Données


Une feuille de données contient toutes les informations produits, avec entre autres la description nécessaire pour le traitement du langage, ainsi qu’un dossier d’image des produits. Elles imitent le type de données auxquelles on peut se retrouver confronté.e lors de ce type de projet.

Analyse exploratoire

Analyse Univariée


Analysons tout d'abord les données non structurées : la description des produits, leur nom, les catégories retrouvées ainsi que les mots qui ressortent le plus pour certaines catégories.

Description

Description

Les descriptions possèdent entre 13 et 587 mots, avec une majorité entre 13 et 100.

Nom du produit

product name

Les noms des produits ont entre 2 et 27 mots, avec une majorité entre 4 et 10 mots.

Ces deux variables seront utilisées pour la partie traitement du langage du modèle de classification.

Catégories


Sept catégories sont identifiées pour les produits.

Label distribution

La répartition est parfaite, puisque les données ne sont pas "réelles".

On peut également regarder les "Wordcloud", ou nuages de mots, par catégorie de produit, qui permettent d'avoir un aperçu visuel des tendances par catégorie :

Cuisine

wordcloud cuisine

Ordinateurs

Préparation des données


Une étape de pre-processing est nécessaire pour le texte et les images.

Pour le texte, il faut enlever le superflu (majuscule, caractère non-ASCII, nombres, ponctuation...), accéder à leur racine, le découper en morceaux, ou "tokens".

Pour l'image, il faut rendre l'image plus lisse, enlever la couleur, et réduire le bruit.

Texte


Les variables “Description” et “Nom du produit” sont regroupées. Les traitements suivants sont ensuite appliqués :

  • lower : retire les majuscules
  • expand_contraction : le texte étant en anglais, il est nécessaire de développer les contractions
  • noise_removal : retire les urls, les HTML tags, les caractères non-ASCII…
  • punctuation removal : retire la ponctuation
  • number removal : retire les nombres


On poursuit avec :

  • Tokenisation : sépare les phrase en liste de tokens
  • Stopwords : retire les mots très fréquents et sans impact
  • Lemmatization : ne garde que la racine d’un mot en tenant compte du contexte.

Image


Afin de rendre l’extraction de variables plus efficace, il est nécessaire de traiter les images en amont. Pour les techniques Bag-of-Features telle que Sift ou ORB, on applique dans l’ordre :

  • grey scale : convertit l’image en niveaux de gris
  • histogram equalization : amélioration du contraste
  • histogram stretching : correction de l’exposition
  • mean filter : atténuation du bruit par moyennage local


Cependant, les techniques CNN telle que VGG16 ont leur propre pre-processing implémenté dans leur bibliothèque.

Pre-processing

Modèle


La partie texte et la partie image sont développées et évaluées séparément. Elles sont ensuite évaluées ensemble, afin de déterminer l’intérêt de coupler les deux modèles.

Extraction des variables

Texte


Deux types de méthodes sont disponibles :

  • Les algorithmes de type bag-of-word : donne une représentation réduite et simplifiée d’un document texte sous forme de vecteurs basée sur des critères spécifiques tels que la fréquence des mots.
    Exemple : CountVectorizer, TF-IDF. Avantages : rapide, fonctionne avec des mots inconnus.
    Inconvénients : ne considère pas la place du mot dans la phrase, et ne capture pas le sens du mot.
  • les méthodes dites Sentence Embedding : donnes des représentations vectorielles numériques de la sémantique ou du sens des mots, y compris le sens littéral et implicite. Ainsi, ces vecteurs de mots peuvent capturer leur connotation, et sont combinés en un vecteur dense par phrase.
    Exemple : Word2Vec, BERT, USE Avantage : souvent pré-entraîné, prend en compte la position du mot, comprend la sémantique.
    Inconvénients : ne considère pas les mots hors corpus, plus complexe, un côté “black box”avec absence de contrôle des paramètres, pré-entraîné sur un corpus non vérifiables.

Image


Pour l’extraction de variables à partir d’images, plusieurs types de méthodes sont possibles.

  • les algorithmes dits Bag-of-visual-words : prend une image et retourne les points clés de cette image sous forme de variables/vecteurs, l’empreinte numérique de l’image, invariante, qu’importe les transformations.
    Exemple : SIFT, ORB
  • les algorithmes dits CNN Transfer Learning : réseau de neurones convolutifs pré-entrainé prenant une image en entrée et retournant automatiquement les caractéristiques de cette image, par extraction et hiérarchisation automatiques desdits caractéristiques, ou "features".
    Exemple : VGG16, en Standalone Feature Extractor

Réduction des variables & Clustering


La quantité de variables obtenues après traitement est trop importante. Il nous faut utiliser une méthode de réduction du nombre de variables, puis appliquer un algorithme de machine learning non supervisé qui organise et classe les différents objets en groupes ou en clusters en fonction des similitudes ou des modèles, appelé clustering.

La méthode de réduction utilisée est t-SNE.
La méthode de clustering utilisées est k-Means.

On trace ensuite une projection des produits avec catégorisation réelle et calculée.

Categories

Evaluation


Afin d’évaluer la précision de la méthode de classification utilisée et l’efficacité de l’algorithme d’extraction de variables testé, on calcule l’ARI (Adjusted Rand Index), qui donne une mesure de similarité entre les catégories calculées et les réelles. On considère également le temps de calcul, autre élément important.

Texte

AlgorithmeARITemps de calcul
Countvectorizer0.4919 s
TF-IDF0.5018 s
Word2Vec0.4115 s
BERT0.322 min 30 s
USE0.6310 s

USE semble être la méthode adaptée à notre problème pour la partie traitement de texte.

Image

AlgorithmeARITemps de calcul
SIFT0.0410 min 45 s
ORB0.031 min 50 s
VGG160.454 min

VGG16 est l’algorithme le plus efficace pour la partie traitement d'image.

Text & Image

AlgorithmeARITemps de calcul
USE + VGG160.654 min 20 s

Conclusion


L’association de modèle de classification pour image et texte permet d’atteindre un ARI de 0.65. La faisabilité du moteur de classification est donc prouvée.

D’un point de vue performance + temps de calcul, l’utilisation du texte uniquement peut être envisagée.

Recherche