PC & Mobile

Détection de biais de média à l'aide de bibliothèques d'apprentissage approfondies en Python

Détection de biais de média à l'aide de bibliothèques d'apprentissage approfondies en Python


Toutes les données ont été acquises à partir du jeu de données All the News créé par Andrew Thomson. Il est disponible gratuitement et vous pouvez le télécharger à tout moment. Il est séparé en trois grands fichiers CSV, contenant tous un tableau ressemblant à ceci:

Comme nous nous intéressons uniquement au contenu et au nom du point de vente, nous allons nous concentrer sur deux colonnes. Colonne 3 contient le nom de la publication ou du point de vente, tandis que 9 contient le contenu. Nous devons ensuite extraire ces informations et les stocker en conséquence afin de pouvoir procéder à l'analyse. Mais tout d’abord, importons tous les modules requis (adaptez votre code aux dernières versions, par exemple: TensorFlow 2):

Modules pour le pipeline

Chacun des fichiers décrits ci-dessus contient environ 50 000 entrées. Par conséquent, pour accélérer l'analyse, nous pouvons extraire une partie de ces données. Pour tout mon pipeline et pour gagner du temps, j'ai décidé de sélectionner au hasard ~ 40% des articles en utilisant cette astuce simple (vous pouvez changer cela bien sûr):

p = 0,4
df = pd.read_csv ('articles.csv', en-tête = Aucun, skiprows = lambda i: 1> 0 et random.random ()> p)

Cela prendra de articles.csv une fraction des données égale à p.

La prochaine étape est probablement la plus subjective de notre pipeline. Nous avons assigné aux médias une inclinaison à gauche ou à droite. Pour des raisons de simplicité, j’ai décidé d’en utiliser seulement deux de chaque côté et ai utilisé allsides.com et mediabiasfactckeck.com pour attribuer leurs biais. Sur la base des informations extraites de ces sites et d’autres sources¹ ², j’ai décidé d’attribuer L'Atlantique et Le New York Times un parti pris de gauche et Le New York Post et Breitbart un biais droit. J'ai ensuite filtré à partir des fichiers d'origine toutes les lignes contenant ces points de vente avec:

et créé un grand choix d'histoires avec:

n_s = liste (n_s_b.iloc[:,9].values) + list (n_s_p.iloc[:,9].valeurs) 
+ liste (n_s_a.iloc[:,9].values) + list (n_s_n.iloc[:,9].valeurs)

Notez que n_s est un tableau qui ne contient que le contenu de toutes les histoires classées selon le nom du tableau d'origine extrait du code ci-dessus, donc Breitbart et Poster les histoires viennent d'abord suivies par atlantique et New York Times.

Génial! Que faire ensuite? Une étape de prétraitement importante, et en particulier parce que nous traitons du traitement du langage naturel, consiste à supprimer les mots pouvant ajouter du bruit à l’analyse. J'ai décidé de supprimer le nom du point de vente, qui est généralement mentionné dans l'article car il peut ajouter un «biais» à notre analyse. Ceci est simplement fait avec:

n_s = [word.replace('New York Post','') for word in n_s]
n_s = [word.replace('Breitbart','') for word in n_s]
n_s = [word.replace('New York Times','') for word in n_s]
n_s = [word.replace('Atlantic','') for word in n_s]

La prochaine étape consiste à créer un tableau de classes. Nous savons combien d'articles chaque point de vente a et nous connaissons leur parti pris politique. Nous pouvons créer deux tableaux, un pour un classifieur Outlet et un pour un classifieur Bias avec:

Si vous suivez les méthodes, vous pouvez voir que classes_tous est un tableau de longueur égale à n_s qui contient des entiers de 1 à 4, chacun correspondant à une des quatre sorties, tandis que classes_bias contient un 1 pour les prises considérées comme étant inclinées à droite et un 2 pour celles orientées à gauche (voir le code précédent pour mieux comprendre). Comme ça, n_s est notre tableau de fonctionnalités (qui a été nettoyé), car il contient une liste d’histoires et ces deux tableaux de tableaux de classe. Cela signifie que nous en avons presque fini avec le pré-traitement.

Une dernière étape cruciale consiste à transformer les histoires (informations actuelles) en quelque chose qu'un réseau de neurones peut comprendre. Pour cela, j'ai utilisé l'incroyable Universal Sentence Encoder de TensorFlow Hub, qui transforme n'importe quelle phrase (dans notre cas, un article de journal) en un vecteur d'intégration de longueur 512; nous aurons donc à la fin un tableau de taille. number_of_stories X 512. Cela a été fait avec:

NOTE: J'ai utilisé une approche similaire auparavant pour classer les mouvements littéraires, vous pouvez le vérifier ici si vous le souhaitez.

Pour calculer la matrice d'intégration, nous devons simplement exécuter la fonction que nous venons de définir:

e_All = similarity_matrix (n_s)

Finalement! nous avons terminé le pré-traitement! e_All est notre tableau de fonctionnalités, tandis que classes_tous et classes_bias nos tableaux de classe. Avec cela, nous sommes prêts à construire un classificateur avec Keras maintenant.

Afficher plus

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Articles similaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page
Fermer