La détection des fake news grâce au machine learning avec Python

Amanath Rafiou
TakwimuLab
Published in
6 min readJul 28, 2020

Comment détecter une fausse information grâce aux algorithmes de machine learning avec python ?

Qu’est-ce qu’une “fake news”?

Expression d’origine anglaise, une fake news est toute information mensongère diffusée dans le but de manipuler ou de tromper l’opinion publique sur un sujet bien déterminé. Encore appelées infox, ces fausses nouvelles ou informations fallacieuses massivement relayées par les médias sociaux (blogs, réseaux sociaux…) peuvent émaner d’un ou plusieurs individus, des médias eux-mêmes, des personnalités publiques, ou même d’un gouvernement.

Google Images

Bien qu’il n’y ait souvent aucune preuve de la véracité du contenu, il est aujourd’hui très fréquent de partager un article ou une publication dès lors que le titre est hyper accrocheur, que le contenu est sensationnel, ou qu’il nous dit tout simplement ce qu’on aimerait entendre. L’identification de fausse information a jusque là relevé d’un véritable travail journalistique. Mais grâce aux avancées technologiques, il est désormais possible d’identifier une fake news grâce à des algorithmes d’apprentissage automatique encore appelé Machine Learning.

Dans cet article, nous proposons une approche de détection de fausses informations dans le langage python. Pour ce faire, nous avons utilisé deux algorithmes de classification (apprentissage supervisé: régression logistique et arbre de décision) pour déterminer si une information est fallacieuse ou non.

Source et description de données

Les données utilisées dans notre application proviennent de la plateforme Kaggle. Il s’agit de deux tables de données comme suit:

  • la première contient 23481 articles classés comme étant des fake news.
  • la deuxième contient 21417 articles dont les contenus ont été prouvés comme étant vrais.
  • chacune des tables fournit 4 principales informations que sont: le titre de l’article, le contenu, le sujet, et la date de publication de l’article.
Aperçu des deux tables de données de news (fake & true)

L’analyse de données texte nécessite un sérieux nettoyage. Afin d’effectuer ce prétraitement, nous avons eu besoin, entre autres, des librairies Python re, nltk, collections, matplotlib, numpy.

Avant d’identifier les catégories de mots et les mots les plus fréquents dans nos données, nous avons d’abord procéder à la suppression des caractères inutiles.

La librairie “re” dispose, entre autres, de fonctionnalités permettant de rechercher des expressions régulières et/ou de leur appliquer des transformations spécifiques. La librairie “nltk” a été utilisée, entre autres, pour:

  • tokenizer nos données textuelles (séparer les textes en mots. Exemple : “Je vais acheter un nouvel ordinateur” deviendra [‘je’, ‘vais’, ‘acheter’, ‘un’, ‘nouvel’, ‘ordinateur’])
  • identifier les catégories des mots.

Nous avons réparti les mots par catégories : les “function words” (qui regroupent les prépositions, les pronoms, les conjonctions et interjections…), les adjectifs, les noms et les adverbes.

Distribution des catégories de mots

La visualisation de la distribution des catégories de mots vise à comparer la densité des catégories de mots les plus fréquents dans l’ensemble de données et à identifier des éléments de différence entre les fausses et les vraies informations.

Visualisation de données

Nous nous contenterons ici de visualiser par des diagrammes en bandes (barplot) les mots (pas les catégories) les plus utilisés dans chaque catégorie d’information (fausse et vraie). Cet exercice se fera après épuration des corpus des stopwords, connus comme étant des mots sans aucun sens réel tous seuls.

Ainsi, nous obtenons les graphes suivants. Notons que les mots les plus fréquents dans les true news sont en turquoise et ceux des fake en violet.

Les mots les plus fréquents

On constate une différence entre les deux catégories d’information en ce qui concerne la fréquence des mots. Pendant que “Trump” est le mot le plus utilisé dans les fake news suivi de “said” (prétérit du verbe “to say”), l’ordre est inversé dans les informations vraies avec “said” en première position et “trump” en deuxième position.

Modélisation : Classification

Etape n°1: Préparation de la donnée pour la classification

Nous sommes intéressés par deux types de catégories d’informations: les fausses et les vraies. A cet effet, nous allons fusionner nos deux tables de données, tout en prenant le soin d’ajouter une nouvelle colonne “Nature” dont les valeurs possibles seront soit Fake, soit True pour nous permettre de les différentier. L’objectif de notre modèle est de capturer le plus de liens singuliers possibles communs aux articles de chaque catégorie d’informations dans le but de pouvoir déterminer la nature de toute nouvelle information rien qu’en se basant sur cette relation.

Comme le montre le script ci-dessus, après la fusion des deux bases, on transforme le texte en liste. Cette transformation est appelée lemmatisation.

Etape n°2: Le choix et le fonctionnement de l’algorithme

La classification supervisée permet de définir des règles pour classer des objets dans des classes. Dans l’apprentissage supervisé, on a l’ensemble des variables x et l’ensemble des variables qu’on essaie de prédire par exemple grâce à une fonction Nous avons porté notre choix sur la régression logistique et l’arbre de décision qui sont des algorithmes de classification supervisée.

La régression logistique

Soit Y la variable cible, et X = (X1 … Xp) les variables de l’ensemble de données, les variables explicatives. On peut considère un modèle :

Modèle de regression

a est un niveau possible de Y, les j sont des coefficients et g est une fonction de liaison. Un lien commun est la fonction logistique, où :

g(z) =log(z /1-z)

L’arbre de décision

Cet algorithme consiste à diviser de façon récursive et efficace les exemples de l’ensemble d’apprentissage par des tests définis à l’aide des attributs jusqu’à ce que l’on obtienne des sous-ensembles d’exemples ne contenant (presque) que des exemples appartenant à une même classe.

La régression et l’arbre de décision ont pour avantages le travail en haute dimension, l’utilisation de variables de différentes natures, interprétabilité des modèles, les interactions entre les variables utilisées, le traitement des données manquantes et de nombreuses extensions possibles. Toutefois, l’inconvénient est que ces algorithmes ont une variance importante, qui nuit à la qualité de l’apprentissage. Par ailleurs la régression présente une absurdité en termes de prévision dans certains cas.

Etape n°3: Evaluation du modèle (matrice de confusion, et score de bon classement des modèles)

La matrice de confusion est un tableau de contingence dont le but est de mesurer la qualité du système de classification.

Régression logistique

Matrice de confusion de la régression logistique

Score moyen : 0,98 (+/- 0,01)

Arbre de décision

Matrice de confusion de l’arbre de décision

Score moyen : 0,99 (+/- 0,01)

Tableau récapitulatif de la performance des modèles

Comme le tableau le montre, les deux algorithmes sont performants bien que celui de l’arbre de décision soit légèrement plus performant que la régression logistique. Nous avons également essayé deux autres algorithmes: Passive Agressive Classifier dont la performance est semblable à celle de l’arbre de décision et Multinomial NB (qui est le moins performant des algorithmes).

Le code se trouve dans le dépôt intégral de l’application accessible sur mon compte github.

En conclusion, l’arbre de décision est celui qui permet d’obtenir la meilleure performance, et vous pouvez aussi reprendre l’application chez vous pour vous entraîner. La science de données peut s’avérer très utile dans la résolution de certains problèmes sociaux ayant pour moteur principal internet.

Bien que les fakes news soient aujourd’hui monnaie courante, la plupart ne sont pas tous des articles. Les progrès ont donné lieu au deepfake qui permet de falsifier les vidéos. Il serait donc intéressant de s’orienter vers des algorithmes plus complexes qui permettront d’identifier si une information est vraie, et ce quelque soit la nature (texte, image et vidéo).

--

--