
Classification des biens de consommation
Classification automatique de biens de consommation pour un site de vente.
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
Un feuille de données contient toutes les informations produits, avec entre autre les description nécessaire pour le NLP, ainsi qu’une dossier d’image des produits.
Analyse exploratoire
Analyse Univariée
Description

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

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 NLP du modèle de classification.
Catégories
7 catégories sont identifiées pour les produits.

La répartition est parfaite.
On peut également regarder les wordcloud par catégorie de produit :
Cuisine

Ordinateurs

Préparation des données
Une étape de pre-processing est nécessaire pour le texte et les images.
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.

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, “black box”.
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 features de cette image, par extraction et hiérarchisation automatiques desdits features. Exemple : VGG16, en Standalone Feature Extractor
Réduction des variables & 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.

Evaluation
Afin d’évaluer la précision de la méthode 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
Algorithme | ARI | Temps de calcul |
---|---|---|
Countvectorizer | 0.49 | 19 s |
TF-IDF | 0.50 | 18 s |
Word2Vec | 0.41 | 15 s |
BERT | 0.32 | 2 min 30 s |
USE | 0.63 | 10 s |
USE semble être la méthode adaptée à notre problème pour la partie NLP.
Image
Algorithme | ARI | Temps de calcul |
---|---|---|
SIFT | 0.04 | 10 min 45 s |
ORB | 0.03 | 1 min 50 s |
VGG16 | 0.45 | 4 min |
VGG16 est l’algorithme le plus efficace pour la partie DIP.
Text & Image
Algorithme | ARI | Temps de calcul |
---|---|---|
USE + VGG16 | 0.65 | 4 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 classifciation est donc prouvée.
D’un point de vue performance + temps de calcul, l’utilisation du texte uniquement peut être envisagée.