Projet de détection de fausses nouvelles en Python [avec codage]
Publié: 2020-12-14Avez-vous déjà lu une nouvelle qui semble tout simplement fausse ? Nous rencontrons tous de tels articles de presse et reconnaissons instinctivement que quelque chose ne va pas. En raison de tant de publications, il est presque impossible de séparer le bien du mal. Ici, nous ne parlons pas seulement des affirmations fallacieuses et des points factuels, mais plutôt des choses qui semblent fausses de manière complexe dans la langue elle-même.
Vous êtes-vous déjà demandé comment développer un projet de détection de fake news ? Mais il n'y a pas de moyen facile de savoir quelles nouvelles sont fausses et lesquelles ne le sont pas, surtout de nos jours, avec la vitesse de propagation des nouvelles sur les réseaux sociaux. Pourtant, certaines solutions pourraient aider à identifier ces actes répréhensibles.
Il y a deux façons de prétendre que certaines informations sont fausses ou non : Premièrement, une attaque sur les points factuels. Deuxièmement, la langue. Le premier ne peut être fait que par des recherches substantielles sur Internet avec des systèmes de requête automatisés. Cela pourrait être une tâche écrasante, en particulier pour quelqu'un qui débute avec la science des données et le traitement du langage naturel.
Ce dernier est possible grâce à un pipeline de traitement du langage naturel suivi d'un pipeline d'apprentissage automatique. C'est ainsi que nous implémenterions notre projet de détection de fausses nouvelles en Python. C'est un autre des problèmes reconnus comme un problème d'apprentissage automatique posé comme un problème de traitement du langage naturel. Si vous êtes débutant et que vous souhaitez en savoir plus sur la science des données, consultez nos cours en ligne sur la science des données dispensés par les meilleures universités.
Lire : Idées et sujets de projet Python
Il existe de nombreux ensembles de données pour ce type d'application, mais nous utiliserons celui mentionné ici . Les données contiennent plus de 7500 flux d'actualités avec deux étiquettes cibles : fausses ou réelles. L'ensemble de données comprend également le titre de l'actualité spécifique.
Les étapes du pipeline pour le traitement du langage naturel seraient les suivantes :
- Acquisition et chargement des données
- Nettoyer le jeu de données
- Suppression de symboles supplémentaires
- Suppression des ponctuations
- Suppression des mots vides
- Enracinement
- Tokénisation
- Extractions de fonctionnalités
- Vectoriseur TF-IDF
- Compteur vectoriseur avec transformateur TF-IDF
- Formation et vérification de modèles d'apprentissage automatique
Avant de commencer à discuter des étapes de mise en œuvre du projet de détection de fausses nouvelles , importons les bibliothèques nécessaires :
Code:
| importer des pandas en tant que pd importer numpy en tant que np importer re chaîne d'importation à partir de nltk.corpus importer des mots vides de nltk.tokenize importer word_tokenize stop_words = set(stopwords.words( 'anglais' )) |
La première étape consiste à acquérir les données. Nous avons déjà fourni le lien vers le fichier CSV ; mais, il est également crucial de discuter de l'autre façon de générer vos données.
L'une des méthodes est le web scraping. Pour cela, nous devons coder un robot d'exploration Web et spécifier les sites à partir desquels vous devez obtenir les données. Mais attention, il y a deux problèmes avec cette approche.
Tout d'abord, il peut être illégal de supprimer de nombreux sites, vous devez donc vous en occuper. Et deuxièmement, les données seraient très brutes. L'ensemble du pipeline serait accompagné d'une liste d'étapes pour convertir ces données brutes en un fichier ou un ensemble de données CSV exploitable. Par conséquent, nous utilisons le fichier CSV prédéfini avec des données organisées.
Cependant, si vous êtes intéressé, vous pouvez consulter le cours d'upGrad sur la science des données, dans lequel il y a suffisamment de ressources disponibles avec des explications appropriées sur l'ingénierie des données et le grattage Web. Assurez-vous de les vérifier ici .
C'est ainsi que nous importons notre ensemble de données et apposons les étiquettes. Notez comment nous supprimons les colonnes inutiles de l'ensemble de données. Si nécessaire sur une valeur plus élevée, vous pouvez conserver ces colonnes. Mais pour le moment, notre projet de détection de fausses nouvelles fonctionnerait sans problème uniquement sur les colonnes de texte et d'étiquette cible.
Code:
| df_text = pd.read_csv( 'fake_or_real_news.csv' , encoding= 'latin-1' ) df_text.columns = [ 'id' , 'title' , 'text' , 'label' ] df_text.drop(['id', 'title'], axe=1) |
Ensuite, l'étape suivante consiste à nettoyer les données existantes. Pourquoi cette étape est-elle nécessaire ? Il est crucial de comprendre que nous travaillons avec une machine et lui apprenons à bifurquer le faux et le réel. En ce moment, nous avons des données textuelles, mais les ordinateurs fonctionnent sur des nombres. Donc, il faut d'abord les convertir en nombres, et une étape avant cela est de s'assurer que nous ne transformons que les textes qui sont nécessaires à la compréhension.
La première étape du pipeline de nettoyage consiste à vérifier si le jeu de données contient des symboles supplémentaires à effacer. Il peut s'agir d'adresses Web ou de tout autre symbole de référence, comme at (@) ou des hashtags. Voici le code :
Code:
| # Supprimer les URL text = re.sub( r”http\S+|www\S+|https\S+” , ” , text, flags=re.MULTILINE) # Supprimer les références utilisateur @ et '#' du texte text = re.sub( r'\@\w+|\#' , ” , text) |
Une fois que nous avons supprimé cela, l'étape suivante consiste à éliminer les autres symboles : les ponctuations. Si nous y réfléchissons, les ponctuations n'ont pas d'apport clair pour comprendre la réalité d'une nouvelle particulière. Parfois, il est possible que s'il y a beaucoup de ponctuations, la nouvelle ne soit pas réelle, par exemple une utilisation excessive d'exclamations.
Mais ce sont des cas rares et nécessiteraient une analyse spécifique basée sur des règles. Donc, pour ce projet de détection de fausses nouvelles , nous supprimerions les ponctuations. Voici comment faire:
Code:
| text = text.translate(str.maketrans( ” , ” , string.punctuation)) |
L'étape suivante consiste à endiguer le mot à son noyau et à symboliser les mots. La tokenisation signifie transformer chaque phrase en une liste de mots ou de jetons. Voici un code à deux lignes qui doit être ajouté :
Code:
| jetons = word_tokenize(texte) mots = [w pour w dans jetons sinon w dans stop_words ] |
La prochaine étape est cruciale. La conversion des jetons en nombres significatifs. Cette étape est également connue sous le nom d'extraction de caractéristiques. Pour notre application, nous utilisons la méthode TF-IDF pour extraire et créer les fonctionnalités de notre pipeline d'apprentissage automatique.
TF-IDF signifie essentiellement terme fréquence-fréquence de document inverse. Comme son nom l'indique, nous recueillons les informations sur l'ensemble de données via sa fréquence de termes ainsi que la fréquence des termes dans l'ensemble de données ou la collection de documents.
TF-IDF peut facilement être calculé en mélangeant les deux valeurs de TF et IDF. Les deux formules impliquent des rapports simples.
TF = non. nombre de fois où le terme apparaît dans le document / nombre total de termes.
IDF = log of ( nbre total de documents / nbre de documents dans lesquels le terme apparaît )
Maintenant, Python a deux implémentations pour la conversion TF-IDF. Le premier est un vectoriseur TF-IDF et le second est le transformateur TF-IDF. La différence est que le transformateur nécessite une implémentation de sac de mots avant la transformation, tandis que le vectoriseur combine les deux étapes en une seule. Nous pourrions également utiliser le vectoriseur de comptage qui est une simple implémentation du sac de mots. Mais le TF-IDF fonctionnerait mieux sur l'ensemble de données particulier.

Voici comment TF-IDF pourrait être mis en œuvre.
Code:
| à partir de sklearn.feature_extraction.text importer TfidfVectorizer tf_vector = TfidfVectorizer(sublinear_tf= True ) tf_vector.fit(df_text[ 'texte' ]) |
La prochaine étape est le pipeline d'apprentissage automatique. Tout comme le pipeline ML typique, nous devons transférer les données dans X et y. Pour ce faire, nous utilisons X comme matrice fournie en sortie par le vectoriseur TF-IDF, qui doit être aplati.
Nous pouvons utiliser la fonction travel en Python pour convertir la matrice en un tableau. Les valeurs y ne peuvent pas être ajoutées directement car ce sont toujours des étiquettes et non des nombres. Pour les convertir en 0 et 1, nous utilisons l'encodeur d'étiquettes de sklearn.
Cet encodeur transforme les textes des étiquettes en cibles numérotées. Par exemple, supposons que nous ayons une liste d'étiquettes comme celle-ci : ['vrai', 'faux', 'faux', 'faux']
Ce dont nous avons essentiellement besoin est une liste comme celle-ci : [1, 0, 0, 0]. Ce que fait l'encodeur d'étiquettes, c'est qu'il prend toutes les étiquettes distinctes et en fait une liste. Pour notre exemple, la liste serait ['faux', 'vrai'].
Voici la mise en œuvre de la même:
Code:
| X_text = tf_vector.transform(df_text[ 'text' ].ravel()) y_values = np.array(df_text[ 'label' ].ravel()) |
| du prétraitement d' importation sklearn le = preprocessing.LabelEncoder() le.fit(y_values) le.transform(y_values) |
Une fois cela fait, les fractionnements de formation et de test sont effectués. Cela peut être réalisé en utilisant le package de prétraitement de sklearn et en important la fonction de division de test de train.
Code:
| depuis sklearn.model_selection importer train_test_split X_train, X_test, y_train, y_test = train_test_split(X_text, y_values, test_size= 0.15 , random_state= 120 ) |
La dernière étape consiste à utiliser les modèles. Il existe de nombreux bons modèles d'apprentissage automatique disponibles, mais même les modèles de base simples fonctionneraient bien sur notre mise en œuvre de projets de détection de fausses nouvelles . Nous implémentons d'abord un modèle de régression logistique. Voici comment implémenter en utilisant sklearn.
Code:
| depuis sklearn.metrics importer precision_score de sklearn.linear_model importer LogisticRegression model = LogisticRegression(solver= 'lbfgs' ) |
Le modèle fonctionne plutôt bien. Une précision de 92% sur un modèle de régression est assez décente. Vous pouvez également implémenter d'autres modèles disponibles et vérifier les précisions.
Voici donc comment mettre en œuvre un projet de détection de fausses nouvelles à l'aide de Python.
Notez qu'il y a beaucoup de choses à faire ici. Le pipeline NLP n'est pas encore complètement terminé. Il existe de nombreuses autres fonctions disponibles qui peuvent être appliquées pour obtenir des extractions de caractéristiques encore meilleures.
Lisez aussi: Idées de projets Python Open Source
La façon dont les fausses nouvelles adaptent la technologie nécessiterait de meilleurs modèles de traitement. Et ces modèles seraient davantage axés sur la compréhension du langage naturel et moins posés comme un modèle d'apprentissage automatique lui-même. Les modèles peuvent également être affinés en fonction des fonctionnalités utilisées. L'ensemble de données pourrait être rendu dynamiquement adaptable pour le faire fonctionner sur les données actuelles. Mais cela nécessiterait un modèle formé de manière exhaustive sur les articles d'actualité actuels.
Ainsi, si plus de données sont disponibles, de meilleurs modèles pourraient être créés et l'applicabilité des projets de détection de fausses nouvelles peut être améliorée. Mais le schéma interne et les pipelines de base resteraient les mêmes. Les pipelines expliqués sont hautement adaptables à toutes les expériences que vous souhaitez mener. N'hésitez pas à essayer et à jouer avec différentes fonctions.
Si vous êtes curieux d'apprendre la science des données pour être à l'avant-garde des avancées technologiques rapides, consultez le programme exécutif PG upGrad & IIIT-B en science des données et améliorez vos compétences pour l'avenir.
Quelles sont les compétences requises pour développer un projet de détection de fake news en Python ?
Python est utilisé pour créer des projets de détection de fausses nouvelles en raison de son typage dynamique, de ses structures de données intégrées, de ses puissantes bibliothèques, de ses frameworks et de son support communautaire. Les autres compétences requises pour développer un projet de détection de fausses nouvelles en Python sont l'apprentissage automatique, le traitement du langage naturel et l'intelligence artificielle. La connaissance de ces compétences est indispensable pour les apprenants qui ont l'intention de réaliser ce projet. Les apprenants peuvent facilement acquérir ces compétences en ligne.
Comment les entreprises utilisent-elles les Fake News Detection Projects de Python ?
Étant donné que la plupart des fausses nouvelles se trouvent sur les plateformes de médias sociaux, il peut être difficile de séparer les vraies et les fausses nouvelles. Les plateformes de médias sociaux et la plupart des entreprises de médias utilisent le Fake News Detection Project pour déterminer automatiquement si les nouvelles diffusées sont fabriquées ou non. La plupart des entreprises utilisent l'apprentissage automatique en plus du projet pour automatiser ce processus de recherche de fausses nouvelles plutôt que de compter sur les humains pour effectuer cette tâche fastidieuse.
Quelles sont les autres applications réelles de Python ?
Python a une large gamme d'applications du monde réel. Python prend en charge les systèmes d'exploitation multiplateformes, ce qui rend le développement d'applications qui l'utilisent beaucoup plus facile à gérer. Python est utilisé pour alimenter certaines des applications les plus connues au monde, notamment YouTube, BitTorrent et DropBox. Python est souvent utilisé dans la production de jeux innovants. Python est également utilisé dans l'apprentissage automatique, la science des données et l'intelligence artificielle, car il facilite la création d'algorithmes répétitifs basés sur des données stockées. Python est une bouée de sauvetage lorsqu'il s'agit d'extraire de grandes quantités de données à partir de sites Web, que les utilisateurs peuvent ensuite utiliser dans diverses opérations du monde réel telles que la comparaison de prix, les offres d'emploi, la recherche et le développement, etc.
