Soirée Portes Ouvertes en ligne : découvrez nos formations !
Mercredi 4 octobre à 19h
En ligne

Découvrez nos programmes de formation accélérée en Data et Cybersécurité, et posez toutes vos questions à Marine.

S'inscrire
Retour à l'accueil du blog
Détecter les faux avis sur les réseaux sociaux
6
 min
Projet data
 Publié le 
6/2/2021

Détecter les faux avis sur les réseaux sociaux

Un enjeux des plus importants pour des sites comme Trustpilot, Google, Tripadvisor : la détection de faux avis laissés par des internautes. Retrouvez ici le projet ambitieux mené par nos élèves Anis & Naeem, et présenté lors de notre Demoday Fullstack ! Anis & Naeem ont pu réaliser ce projet après 12 semaines de bootcamp intensif en Data, entre problématiques Big Data, Machine Learning & Deep Learning, Data Visualisation, collecte & stockage de données, déploiement d'applications. Beaucoup de choses ont été vues !

Leur projet en vidéo

Le contexte

Ce que nous définissons comme un faux avis

Ce sont des avis publiés sur une page web par un robot ou personne qui n’a pas consommé le produit ou service décrit. Ils peuvent être publiés pour nuire à un concurrent ou pour promouvoir / augmenter la réputation de son propre produit. 


Pourquoi est-ce un sujet intéressant à traiter ? 

  • Nous estimons qu’entre 20 et 50% des commentaires sur internet sont faux ou trompeurs. C'est une proportion énorme pour des entreprises qui misent sur les avis clients pour leur commerce.
  • L'impact des avis est de plus en plus fort pour les e-commerce : les consommateurs ont tendance à orienter leur décision d’achat sur les recommandations d’autres personnes ou de proches. On devine alors rapidement que si de nombreuses recommandations sont fausses, un biais se crée naturellement dans la manière dont on consomme.
  • C'est encore un sujet très peu francophone : cette dimension d’analyse de texte est grandement traitée en anglais mais pas tant en français


Pourquoi Yelp ?

Nous avons choisi de travailler sur Yelp car c'est le seul site web - à notre connaissance - qui nous fournissait des données (des avis) labellisées ou pseudo labellisées.
Ce que cela veut dire : dès qu'un utilisateur publie un avis sur Yelp, le site les répartie dans une de ces 2 catégories : 

  • Commentaire recommandé considéré comme vrai ou véridique
  • Commentaire non-recommandé considéré faux, ou étrange (trop élogieux ou trop critique à l’égard du resto ou de l’hôtel) 

Ce label associé à la donnée nous permet de travailler avec des données plus fiables sur lesquelles entraîner notre modèle de Deep Learning.

Le projet & les données

Les étapes du projet Data

Pour comprendre en détails les étapes d'un projet Data, n'hésitez pas à regarder notre guide complet.

  • Scraping des données : collection des informations (avis textuels) sur Yelp (site ressemblant à Trip Advisor). Nous avons collecté tous les commentaires de restaurants parisiens qui étaient listés sur Yelp. Pour se faire, nous avons utilisé la librairie Python Selenium.
  • Stockage dans le cloud : Une fois la donnée collectée, nous l’avons agrégée et stockée en ligne sur un bucket S3 (les services de stockage de la branche Cloud d'Amazon AWS)
  • Exploration, nettoyage, modélisation de la donnée avec Scikit Learn et Tensorflow, 2 librairies respectivement en Machine Learning & Deep Learning en Python
  • Déploiement de notre algorithme sur une Web Application avec Heroku et création d'un dashboard interactif  de visualisation de notre donnée via Power BI

Quelques unes des techologies utilisées dans notre projet


Le jeu de données

A quoi ressemblait le Dataset une fois nettoyé (sans les valeurs aberrantes, colonnes vides etc) ? 

  • 90500 avis collectés
  • Ceux-ci regroupaient 6000 restaurants parisiens
  • Nous avons travaillé sur 14 features : contenu texte, date de publication de l’avis, la note en nombre d’étoiles de l’avis etc…

Un élément à noter est le déséquilibre du Dataset, qui a eu une importance capitale dans la manière dont nous avons approché l’algorithme pour l’apprentissage  : 

  • 20% des avis étaient considérés comme faux
  • 80% des avis considérés comme vrais

Parmi ces 14 features, quelques notables

  • La note déposée par un user sur Yelp est assez significative de sa varacité : clairement, les avis de notes extrêmes ont une plus grande chance d’être faux
  • Egalement, les personnes qui n’avaient pas de contacts sur Yelp étaient plus souvent des faussaires que ceux qui avait un cercle d'interaction plus important. On peut assez simplement imaginer qu'une personne déposant 1 ou 2 commentaires sans interagir avec d'autres utilisateurs peut être rapidement détecté par Yelp comme faussaire.


dataset features
Quelques features notables


Engineered features

En appliquant des formules mathématiques sur certaines données d'une ou plusieurs colonnes (variables) précises, nous avons pu en créer de nouvelles. C'est ce que l'on appelle du feature engineering. Si vous souhaitez comprendre tout ce vocabulaire technique, n'hésitez pas à lire notre glossaire Data. Voici donc quelques engineered features : 

  • Les commentaires qui ne contiennent pas de caractères numériques ont une plus grande chance d’être faux que ceux qui contenaient des chiffres. Et pour cause, les “vrais” clients de restaurants parlent régulièrement des prix de leurs consommations dans leurs commentaires.
  • La longueur du texte : généralement, plus un commentaire est long, plus il a de chance d’être vrai.

engineered features
Quelques engineered features


 

Les modèles

Prenons un exemple général avec cet avis : "Trop bien, j'ai mangé pour 10 !!".

deep learning models
Les types de données et algorithmes utilisés

Prenons le chemin Texte -> donnée A -> Prédiction

1. Nous partons du texte brut. Etant impossible pour l’algorithme d’ingurgiter du texte, nous utilisons un algorithme qui va permettre la compréhension de ce texte par 2 méthodes :

  • Le topic modelling : cette méthode va convertir le document en une liste de chiffres. Chacun de ces chiffres va représenter le sujet traité dans telle proportion du texte.
    En reprenant notre exemple, le topic modelling va permettre de savoir que 50% de la phrase est associée au bonheur “trop bien" et la seconde partie à la nourriture "j'ai mangé pour 10 !”
  • Le LSTM : est un algorithme séquentiel. Il va balayer tous les mots du document et va, grâce à sa mémoire interne, prendre en compte les mots précédemment écrits pour comprendre les suivants. On se rapproche alors beaucoup du cerveau humain : nous gardons en mémoire ce qui est dit auparavant pour comprendre un texte.

2. Nous avons à l'issue de cela une donnée A compréhensible par l’algorithme de Deep Learning.

3. Nous utilisons ensuite un algorithme de classification permettant d’établir une tendance, et donc une prédiction : avis faux, avis vrai.


Prenons le chemin Caractéristiques -> donnée B -> Prédiction

1. Avec ce même texte brut, nous pouvons extraire d’autres caractéristiques numériques, comme le nombre de mots (6), le nombre de chiffres (1), ou alors le nombre de points d’exclamation(2).  Cette donnée doit encore être modifiée en utilisant la méthode de pré-processing. Nous normalisons ensuite cette donnée. Cette dernière méthode consiste à mettre à échelle toutes les caractéristiques (features de la donnée) pour pouvoir mieux les comparer et en démarquer l'importance pour certaines.

2. Nous aboutissons à la donnée B qui est de nature différente à celle de A

3. Il convient alors de traiter les 2 types de données par des algorithme différents. Mis bout à bout, ceux-ci permettent de faire la prédiction. Pour cela, nous utilisons le modèle de stacking (une combinaison de modèles prédictifs) ou des modèles plus complexes, des modèles en Deep Learning.

Prenons le chemin Méta-données -> donnée C -> Prédiction

En dehors de ces données brutes, nous avons également des méta-données. Par exemple :

  • Les notes en nombre d’étoiles
  • Le nombre total d’avis que un user a laissé sur le site.

Ces méta-données nous permettent d’avoir un jeu de données C, qui conjointement à la donnée A et B permettent grâce à l’algorithme de classification de préciser la prédiction avis vrais / avis faux.


Stratégies adoptées et résultats

Stratégie 1 : Prédiction uniquement sur le texte (donnée A)

Nous avons utilisés de nombreux modèles, détaillés en abscisse de ce graphe. L’accuracy correspond ici au pourcentage de bonnes prédictions que l'on a, mais reste à relativiser lorsque l'on sait que notre jeu de données est très déséquilibré (80% d’avis véridiques et 20% de faussaires).

Ici, le F1 score prend en compte cet élément ce qui en fait un résultat plus fiable, ici au maximum de 48% pour le modèle LSTM.


modèle machine learning
Prise en compte uniquement du texte


Stratégie 2 & 3 : les méthodes mixtes (données A+B+C)

Cette démarche de test de plusieurs algorithmes est réplicable dans l’ensemble des données A (textes), B (numérique) et/ou C (méta-données). Avoir plus de données de types différents enrichis notre base de données, ce qui nous permet rapidement d'observer de meilleurs résultats. On obsrve sans surprise que la méthode gagnante est de mixer ces 3 types de données : le F1 score arrive alors à 63%, comme dans la figure ci-dessous.

machine learning methode
Méthodes mixtes : utilisations de plusieurs types de données


Tout cela nécessite tout de même l’utilisation de modèles plus complexes : il faut gérer la mixité de données, pour laquelle vous avons utilisé 2 réseaux de neurones en modèles mixtes.

  • LSTM : 30% de réussite seulement, le modèle n'apprenait pas très bien dessus.
  • Topic modelling : traiter le texte avec cette méthode marche bien mieux avec 63% de réussite


Déploiement

  • Le démo de notre application est disponible sur la vidéo du Demoday en début d'article ! Nous avons développé une application permettant de détecter si l’avis est véridique ou faux, et nous avons pu la déployer sur Heroku !
  • Afin d’aider les sites comme Yelp à mieux détecter les faux avis, nous avons également mis en place un dashboard interactif : répartition des fakes / real reviews, informations relatives aux restaurants, de nombreuses données sont à disposition dans ce dashboard accessible à tous.
dashbaord data visualisation
Un aperçu du dashboard que nous avons réalisé !


Pistes d'amélioration

Nous avons finalement eu un F1 score de 63% au maximum, ce qui est en dessous de nos attentes. Nous gardons tout de même plusieurs pistes d’amélioration en tête, étant donné que ce projet a été mené sur 2 semaines uniquement : 

  1. Nous n’avons collecté “que 90 000 reviews” : avoir en plus permettra au modèle de mieux apprendre
  2. Il n'existe pas d’ID unique sur Yelp, celui-ci est uniquement Prénom - Première lettre du nom (i.e Lionel C) : cela pose un souci de duplicata de la donnée
  3. Yelp est un site déclinant depuis 2015 : la manière de soumettre les reviews a-t-elle été modifiée depuis ?
  4. Un biais est introduit : la signification de fake est établi au sens de Yelp et non au sens purement neutre ou universel.
  5. Entraîner un modèle mixte de Deep Learning est complexe et prend du temps : nous pourrions aller au delà des 2 semaines pour approfondir nos analyses et prédictions !



Ce que nous avons retenu de ce projet final de bootcamp

“La Data c’est plutôt cool”

Si vous souhaitez, comme Anis et Naeem, vous former à la Data et obtenir de telles compétences sur l'ensemble du pipeline Data, n'hésitez pas à regarder nos formations Data.

[Projet réalisé par Anis Zakari & Naeem Amarsy]

Naeem Amarsy
Écrit par
Naeem Amarsy
 - 
Data Analyst

Programmes, thématiques Data, admissions,
vous avez une question ?

Prenez rendez-vous avec nos équipes