[PYTHON] Fake News, Faux Tweet?

Fake News!

Depuis que M. Trump a pris ses fonctions, il a souvent évoqué et critiqué diverses nouvelles de cette manière.

Également actif sur Twitter et certains messages agressifs.

Tout en prenant des propos et des actes agressifs contre les médias de cette manière, il est également un fait que l'on doute de la crédibilité du tweet de la personne en question.

Par conséquent, cette fois, nous utiliserons la technologie d'apprentissage automatique pour vérifier si le tweet de M. Trump est vrai ou faux.

Que faire cette fois

Accédez à un site appelé Kaggle et utilisez l'ensemble de données d'actualités de la page Ensemble de données d'actualités fausses et réelles Classifier les actualités Nous créerons un modèle pour juger de l'authenticité des nouvelles depuis l'arrivée au pouvoir de M. Trump.

Ensuite, extrayez les tweets après l'investiture du président à partir des données dans Trump Tweets Tweets from @realdonaldtrump, True and Fake Faites un diagramme de l'ampleur du jugement.

[Important] Précautions concernant le contenu de l'article

Cette fois, j'ai travaillé sur l'apprentissage automatique du point de vue du "tweet de M. Trump".

J'utilise simplement le tweet de M. Trump comme point de départ pour la sortie de l'apprentissage automatique sans aucune intention politique, et je comprends qu'il y a une bonne possibilité que les résultats de la vérification que je vous dirai seront boomerans avec Fake. Veuillez lire ce qui précède.

Veuillez noter que Vrai ou Faux est un résultat calculé et ne garantit pas ce qu'il est vraiment, et je n'ai pas écrit d'article pour diriger ou critiquer une personne en particulier. Je vous remercie.

Étape 1: pré-traiter les données d'actualité pour la création du modèle

Dans un premier temps, l'ensemble de données dans Fake and real news dataset Classifying the news peut être modélisé pour le prétraitement. Je vais le préparer.

import numpy as np
import pandas as pd
from pandas import DataFrame, Series
import datetime as dt

import warnings
warnings.filterwarnings('ignore')

from sklearn.preprocessing import LabelEncoder

Ensuite, lisez le fichier cav de la page correspondante.

fake = pd.read_csv("Fake.csv")
true = pd.read_csv("True.csv")

Sur la page correspondante, le bon et le incorrect sont divisés en deux fichiers, Fake et True.

Regardons les colonnes et les moules.

fake.columns
Index(['title', 'text', 'subject', 'date'], dtype='object')

fake.dtypes
title      object
text       object
subject    object
date       object
dtype: object

true.columns
Index(['title', 'text', 'subject', 'date'], dtype='object')

true.dtypes
title      object
text       object
subject    object
date       object
dtype: object

Vous pouvez voir qu'aucun fichier n'a une indication directe de Vrai ou Faux.

Après avoir clairement indiqué cela, je vais le mettre ensemble.

fake["Reality"] = 0
true["Reality"] = 1
#Créez une nouvelle réalité. Définissez Fake sur 0 et True sur 1.

df = pd.concat([fake, true], axis=0)
df = df.reset_index(drop=True)

df.isnull().sum()
title      0
text       0
subject    0
date       0
Reality    0
dtype: int64

df.head()

#Aucun des fichiers d'origine n'était manquant. Le montant étant trop important, il est omis, mais il est important de le vérifier à l'avance.
title text subject date Reality
0 Donald Trump Sends Out Embarrassing New Year’... Donald Trump just couldn t wish all Americans ... News December 31, 2017
1 Drunk Bragging Trump Staffer Started Russian ... House Intelligence Committee Chairman Devin Nu... News December 31, 2017
2 Sheriff David Clarke Becomes An Internet Joke... On Friday, it was revealed that former Milwauk... News December 30, 2017
3 Trump Is So Obsessed He Even Has Obama’s Name... On Christmas day, Donald Trump announced that ... News December 29, 2017
4 Pope Francis Just Called Out Donald Trump Dur... Pope Francis used his annual Christmas Day mes... News December 25, 2017
df.tail()
title text subject date Reality
44893 'Fully committed' NATO backs new U.S. approach... BRUSSELS (Reuters) - NATO allies on Tuesday we... worldnews August 22, 2017
44894 LexisNexis withdrew two products from Chinese ... LONDON (Reuters) - LexisNexis, a provider of l... worldnews August 22, 2017
44895 Minsk cultural hub becomes haven from authorities MINSK (Reuters) - In the shadow of disused Sov... worldnews August 22, 2017
44896 Vatican upbeat on possibility of Pope Francis ... MOSCOW (Reuters) - Vatican Secretary of State ... worldnews August 22, 2017
44897 Indonesia to buy $1.14 billion worth of Russia... JAKARTA (Reuters) - Indonesia will buy 11 Sukh... worldnews August 22, 2017

D'après ce qui précède, il a été confirmé qu'il y avait à la fois vrai et faux dans le même fichier.

Il y a un sujet, alors jetons un œil. S'il y a quelque chose qui n'a rien à voir avec M. Trump, je couperai la nouvelle.

df["subject"].unique()
array(['News', 'politics', 'Government News', 'left-news', 'US_News',
       'Middle-east', 'politicsNews', 'worldnews'], dtype=object)
#
df = pd.concat([df['title'], df['text'], df['subject'],df["date"]\
                .str.extract('(?P<Month>.*) (?P<Day>.*), (?P<Year>.*)',expand=True),df["date"],df["Reality"]], axis=1)
df.head()
title text subject Month Day Year date Reality
0 Donald Trump Sends Out Embarrassing New Year’... Donald Trump just couldn t wish all Americans ... News December 31 2017 December 31, 2017
1 Drunk Bragging Trump Staffer Started Russian ... House Intelligence Committee Chairman Devin Nu... News December 31 2017 December 31, 2017
2 Sheriff David Clarke Becomes An Internet Joke... On Friday, it was revealed that former Milwauk... News December 30 2017 December 30, 2017
3 Trump Is So Obsessed He Even Has Obama’s Name... On Christmas day, Donald Trump announced that ... News December 29 2017 December 29, 2017
4 Pope Francis Just Called Out Donald Trump Dur... Pope Francis used his annual Christmas Day mes... News December 25 2017 December 25, 2017
df.isnull().sum()
title       0
text        0
subject     0
Month      45
Day        45
Year       45
date        0
Reality     0
dtype: int64
nonull = df.dropna()
nonull.isnull().sum()
title      0
text       0
subject    0
Month      0
Day        0
Year       0
date       0
Reality    0
dtype: int64
null = df[df.isnull().any(axis=1)]
#
null.head()
title text subject Month Day Year date Reality
9050 Democrat Senator Warns Mueller Not To Release ... According to The Hill, Democrat Senator Bob Ca... politics NaN NaN NaN 19-Feb-18
9051 MSNBC ANCHOR Flabbergasted at What Texas Teach... If we protect every other government building ... politics NaN NaN NaN 19-Feb-18
9052 WATCH: SNOWFLAKES ASKED Communist Party Platfo... Ami Horowitz is fantastic! Check out this man ... politics NaN NaN NaN 19-Feb-18
9053 JUST IN: BADASS GENERAL JOHN KELLY Shoved Chin... Just one more reminder of why President Trump ... politics NaN NaN NaN 18-Feb-18
9054 DOJ’s JEFF SESSIONS Opens Investigation Into W... Thank goodnesss Jeff Sessions is moving on fin... politics NaN NaN NaN 18-Feb-18
null = null.drop(["Month", "Day", "Year"], axis=1)
#
null = null.reset_index(drop=True)
null.head()
title text subject date Reality
0 Democrat Senator Warns Mueller Not To Release ... According to The Hill, Democrat Senator Bob Ca... politics 19-Feb-18
1 MSNBC ANCHOR Flabbergasted at What Texas Teach... If we protect every other government building ... politics 19-Feb-18
2 WATCH: SNOWFLAKES ASKED Communist Party Platfo... Ami Horowitz is fantastic! Check out this man ... politics 19-Feb-18
3 JUST IN: BADASS GENERAL JOHN KELLY Shoved Chin... Just one more reminder of why President Trump ... politics 18-Feb-18
4 DOJ’s JEFF SESSIONS Opens Investigation Into W... Thank goodnesss Jeff Sessions is moving on fin... politics 18-Feb-18

Ensuite, séparons les dates. Cela semblait bien séparer les dates, mais il y avait un problème. Il semble y avoir un jour où les choses ne vont pas bien ici. Je vais le séparer de la partie qui fonctionne bien et le vérifier. Cochez uniquement ceux qui ne fonctionnent pas ici. Jetons un coup d'œil à la fin de la recréation de la date.

null.tail()
title text subject date Reality
40 https://fedup.wpengine.com/wp-content/uploads/... https://fedup.wpengine.com/wp-content/uploads/... Government News https://fedup.wpengine.com/wp-content/uploads/...
41 https://fedup.wpengine.com/wp-content/uploads/... https://fedup.wpengine.com/wp-content/uploads/... Government News https://fedup.wpengine.com/wp-content/uploads/...
42 Homepage [vc_row][vc_column width= 1/1 ][td_block_trend... left-news MSNBC HOST Rudely Assumes Steel Worker Would N...
43 https://fedup.wpengine.com/wp-content/uploads/... https://fedup.wpengine.com/wp-content/uploads/... left-news https://fedup.wpengine.com/wp-content/uploads/...
44 https://fedup.wpengine.com/wp-content/uploads/... https://fedup.wpengine.com/wp-content/uploads/... left-news https://fedup.wpengine.com/wp-content/uploads/...

Il y en a même qui ont une date comme URL. Les autres informations sont également une URL, excluons donc ces informations.

Beaucoup de dates sont écrites comme 〇〇-〇〇-〇〇, donc je vais commencer à partir de là.

null_dates = null["date"].str.extract('(?P<Day>.*)-(?P<Month>.*)-(?P<Year>.*)',expand=True)
null_dates.dtypes
Day      object
Month    object
Year     object
dtype: object

null_dates
#Voyez ce que vous avez séparé les dates mais qui ne fonctionne toujours pas. Puisque le montant sera trop important, «omettez» les parties qui ne s'appliquent pas.
Day Month Year
réduction réduction réduction
35 https://100percentfedup.com/served-roy-moore-v... commander
36 https://100percentfedup.com/video-hillary-aske... some
37 https://100percentfedup.com/12-yr-old-black-co... from
38 NaN NaN
39 NaN NaN
40 NaN NaN
41 NaN NaN
42 NaN NaN
43 NaN NaN
44 NaN NaN

Puisque la partie pertinente était la dernière, regardons la partie pertinente.

null["date"].tail(10)
35    https://100percentfedup.com/served-roy-moore-v...
36    https://100percentfedup.com/video-hillary-aske...
37    https://100percentfedup.com/12-yr-old-black-co...
38    https://fedup.wpengine.com/wp-content/uploads/...
39    https://fedup.wpengine.com/wp-content/uploads/...
40    https://fedup.wpengine.com/wp-content/uploads/...
41    https://fedup.wpengine.com/wp-content/uploads/...
42    MSNBC HOST Rudely Assumes Steel Worker Would N...
43    https://fedup.wpengine.com/wp-content/uploads/...
44    https://fedup.wpengine.com/wp-content/uploads/...
Name: date, dtype: object

Vous pouvez voir que la date elle-même est déjà foirée.

Supprimez la partie concernée.

null = null[:-10]
null_dates = null_dates[:-10]

Bien que la partie étrange de la date ait été supprimée, le problème demeure que la date est la même et celle précédant l'entrée en fonction est supprimée.

Continuons à y travailler.

#Notation du mois
df["Month"].unique()
array(['December', 'November', 'October', 'September', 'August', 'July',
       'June', 'May', 'April', 'March', 'February', 'January', nan, 'Dec',
       'Nov', 'Oct', 'Sep', 'Aug', 'Jul', 'Jun', 'Apr', 'Mar', 'Feb',
       'Jan'], dtype=object)

null_dates["Month"].unique()
array(['Feb'], dtype=object)

null_dates["Month"] = "February"
#Comme ce n'est que février, cela correspond à février.
#Notation d'année
null_dates["Year"].unique()
array(['18'], dtype=object)

null_dates["Year"] = "2018"
#Seulement 18 ainsi unifiés jusqu'en 2018
null_filled = pd.concat([null['title'], null['text'], null['subject'],\
                null_dates["Month"],null_dates["Day"], null_dates["Year"],null["date"],\
                null["Reality"]], axis=1)
#null et null_Organiser les dates
table = pd.concat([nonull, null_filled], axis=0)
table = table.drop("date", axis=1)
#Vous pouvez maintenant unifier le format de la date
table = table.reset_index(drop=True)
#Ici les index sont dans l'ordre
#subject
le = LabelEncoder()
encoded = le.fit_transform(table['subject'].values)
decoded = le.inverse_transform(encoded)
table['subject'] = encoded
#Convertir le sujet en nombre, non directement lié
#Unification de la lune
table["Month"].unique()
array(['December', 'November', 'October', 'September', 'August', 'July',
       'June', 'May', 'April', 'March', 'February', 'January', 'Dec',
       'Nov', 'Oct', 'Sep', 'Aug', 'Jul', 'Jun', 'Apr', 'Mar', 'Feb',
       'Jan'], dtype=object)

table["Month"] = table["Month"].map({'December':12, 'November':11, 'October':10, 'September':9, 'August':8, 'July':7,
       'June':6, 'May':5, 'April':4, 'March':3, 'February':2, 'January':1, 'Dec':12,
       'Nov':11, 'Oct':10, 'Sep':9, 'Aug':8, 'Jul':7, 'Jun':6, 'Apr':4, 'Mar':3, 'Feb':2,
       'Jan':1})
#Conversion de type
table.dtypes
#Day,L'année est un objet, alors corrige-le
title      object
text       object
subject     int64
Month       int64
Day        object
Year       object
Reality     int

table["Day"] = table["Day"].astype("int64")
table["Year"] = table["Year"].astype("int64")

table.dtypes
title      object
text       object
subject     int64
Month       int64
Day         int64
Year        int64
Reality     int64
dtype: object
table.isnull().sum()
title      0
text       0
subject    0
Month      0
Day        0
Year       0
Reality    0
#Cela résout le problème des valeurs manquantes

Jusqu'à présent, nous avons continué à effectuer la conversion de type et l'unification de la notation.

L'actualité avant le 20 janvier 2017, date à laquelle M. Trump a finalement pris ses fonctions, sera coupée.

Par conséquent, datetime est utilisé.

dates = table[["Year", "Month", "Day"]]

dates = pd.to_datetime(dates)
dates.head()
0   2017-12-31
1   2017-12-31
2   2017-12-30
3   2017-12-29
4   2017-12-25
dtype: datetime64[ns]
news = pd.concat([table, dates], axis=1)
news = news.rename(columns={0: 'dates'})
news = news[["text", "dates", "Reality"]]
news[news["dates"] > dt.datetime(2017,1,20)]
#Tout couper avant que le président ne prenne ses fonctions
news = news.drop("dates", axis=1)
news.head()
#Ceci termine.
text Reality
0 Donald Trump just couldn t wish all Americans ...
1 House Intelligence Committee Chairman Devin Nu...
2 On Friday, it was revealed that former Milwauk...
3 On Christmas day, Donald Trump announced that ...
4 Pope Francis used his annual Christmas Day mes...

Ceci complète un résumé des nouvelles depuis que M. Trump a pris ses fonctions et sa vérité.

Enfin, enregistrez-le dans un fichier csv et passez à l'étape suivante.

news.to_csv("news_for_learning.csv", index=False)

Étape 2: prétraitez les données du tweet de M. Trump pour jugement

Ensuite, nous extrairons les tweets après l'investiture du président de Trump Tweets Tweets from @realdonaldtrump.

Lisons les données et regardons le contenu.

import numpy as np
import pandas as pd
from pandas import DataFrame, Series
import datetime as dt

import warnings
warnings.filterwarnings('ignore')

trump = pd.read_csv("trumptweets.csv")

trump.head()
id link content date retweets favorites mentions hashtags geo
0 1698308935 https://twitter.com/realDonaldTrump/status/169... Be sure to tune in and watch Donald Trump on L... 2009-05-04 20:54:25 500 868 NaN NaN
1 1701461182 https://twitter.com/realDonaldTrump/status/170... Donald Trump will be appearing on The View tom... 2009-05-05 03:00:10 33 273 NaN NaN
2 1737479987 https://twitter.com/realDonaldTrump/status/173... Donald Trump reads Top Ten Financial Tips on L... 2009-05-08 15:38:08 12 18 NaN NaN
3 1741160716 https://twitter.com/realDonaldTrump/status/174... New Blog Post: Celebrity Apprentice Finale and... 2009-05-08 22:40:15 11 24 NaN NaN
4 1773561338 https://twitter.com/realDonaldTrump/status/177... "My persona will never be that of a wallflower... 2009-05-12 16:07:28 1399 1965 NaN NaN
trump.dtypes
id             int64
link          object
content       object
date          object
retweets       int64
favorites      int64
mentions      object
hashtags      object
geo          float64
dtype: object

Il existe différents contenus, mais ici nous n'utiliserons que la date et le contenu.

Je changerai la date en datetime.

trump['Date'] = pd.to_datetime(trump['date'])
trump[trump["Date"] > dt.datetime(2017,1,20)]

Cela a effacé tous les tweets avant sa prise de fonction.

Supprimez les données autres que le contenu et ajoutez de nouveaux éléments appelés vérité et pourcentage.

Lors de la création et de la validation d'un modèle, Truth stocke la conclusion Vrai ou Faux, et Pourcentage stocke la possibilité de résultats de calcul.

trump = trump[["content"]]
trump["Truth"] = "Unknown"
#Maintenant, le contenu n'est que contenu et vérité. Le résultat du jugement d'authenticité est le type de caractère Vrai et Faux.
trump["Percentage"] = 0
#Ajoutez également le pourcentage
trump = trump.reset_index(drop=True)
#Ici les index sont dans l'ordre
trump.head()
content Truth Percentage
0 Be sure to tune in and watch Donald Trump on L... Unknown
1 Donald Trump will be appearing on The View tom... Unknown
2 Donald Trump reads Top Ten Financial Tips on L... Unknown
3 New Blog Post: Celebrity Apprentice Finale and... Unknown
4 "My persona will never be that of a wallflower... Unknown

Maintenant que vous vous êtes limité aux informations dont vous avez besoin, enregistrez-les dans un nouveau fichier csv.

trump.to_csv("trump_for_judging.csv", index=False)

Nous travaillerons sur la création de modèles dans la prochaine étape.

Étape 3: créer un modèle basé sur des données d'actualité

Maintenant que nous avons tous les fichiers csv nécessaires, créons un modèle pour juger les actualités.

Ici, nous utilisons un simple classificateur bayésien.

import numpy as np
import pandas as pd

from sklearn.model_selection import train_test_split

from nltk.classify import NaiveBayesClassifier
from nltk.classify.util import accuracy as nltk_accuracy

import pickle

news = pd.read_csv("news_for_learning.csv")
#Fichier CSV créé à l'étape 1

Cette fois, nous allons créer une liste avec Vrai et Faux respectivement et stocker les mots correspondants au format dictionnaire.

Fake =[]
Fact = []

for text, reality in zip(news['text'], news['Reality']):
    line = text.split(" ")
    dic = {}
    if reality == 0:
        for word in line:
            dic[word] = True
        ireru = (dic, 0)
        Fake.append(ireru)
    else:
        for word in line:
            dic[word] = True
        ireru = (dic, 1)
        Fact.append(ireru)

Vous avez maintenant stocké les mots dans chaque liste.

Par exemple, même si vous affichez Fake [0], une énorme quantité de mots apparaîtra, donc je vais l'omettre ici.

Maintenant, créons des données d'entraînement et des données de test et connectons-les à. Ici, 90% des données sont utilisées pour la formation.

threshold = 0.9
num_fake = int(threshold * len(Fake))
num_fact = int(threshold * len(Fact))

features_train = Fake[:num_fake] + Fact[:num_fact]
features_test = Fake[num_fake:] + Fact[num_fact:]

classifier = NaiveBayesClassifier.train(features_train)
print('Accuracy of the classifier:', nltk_accuracy(classifier, features_test))
Accuracy of the classifier: 0.9585746102449889

En regardant la précision, nous pouvons voir qu'elle est assez élevée à 95% ou plus. Voyons quels mots détiennent la clé.

N = 15
print('Top ' + str(N) + ' most informative words:')
for i, item in enumerate(classifier.most_informative_features()[:N]):
    print(str(i+1) + '. ' + item[0]) 

Top 15 most informative words:
1. (Reuters)
2. -
3. -
4. screenshot
5. Image:
6. MOSCOW
7. BERLIN
8. screengrab
9. Images
10. Editing
11. WASHINGTON
12. Kurdistan
13. corrects
14. racists
15. Image

En regardant cela comme ça, vous pouvez voir que les symboles, les noms de lieux et certains d'entre eux, tels que racistes, sont importants.

Enfin, sauvegardons le modèle.

filename = 'model_for_trump.sav'
pickle.dump(classifier, open(filename, 'wb'))

Ceci termine l'enregistrement.

Si vous exécutez le code suivant en suivant le code décrit jusqu'à présent à l'étape 2 et copiez et collez les nouvelles, l'authenticité sera jugée.

Comme mentionné au début, il s'agit d'un résultat de calcul et nous ne pouvons pas garantir que ce soit vraiment le cas, veuillez donc le faire à vos propres risques.

def extract_features(words):
    return dict([(word, True) for word in words])
    print(dict([(word, True) for word in words]))
#Stockez le dictionnaire dans le même format que la liste précédente

#Voyez ce que vous avez tapé sur place
input_review = input()
print("Fact Check:")
#extract_features(input_review)
print("\nNews Text:",input_review)
features = extract_features(input_review.split())
print(features)
probabilities = classifier.prob_classify(features)
predicted_truth = probabilities.max()
if predicted_truth == 0:
    answer = "Fake News!!!"
else:
    answer = "True News!!!"
print("Predicted Answer:", answer)
print("Probability:", round(probabilities.prob(predicted_truth), 2))

Étape 4: Vérifiez l'authenticité du tweet à l'aide du modèle

Dans la dernière étape, nous vérifierons enfin le tweet de M. Trump.

Commençons par charger des fichiers et des bibliothèques.

import pandas as pd
import pickle

trump = pd.read_csv("trump_for_judging.csv")
#Charger les tweets de Trump
classifier = pickle.load(open('model_for_trump.sav', 'rb'))
#Charger le modèle enregistré

import matplotlib.pyplot as plt
import seaborn as sns
#Enfin, vérifiez le ratio de vérité

Ensuite, créez une fonction qui détermine l'authenticité. Il s'agit d'une version légèrement modifiée du dernier code de l'étape précédente.

def FactCheck(event):   
    global answer
    global percentage
    line = event.split(" ")
    dic = {}
    for word in line:
        dic[word] = True
    probabilities = classifier.prob_classify(dic)    
    predicted_truth = probabilities.max()
    percentage = round(probabilities.prob(predicted_truth))
    if predicted_truth == 0:
        answer = "Fake"
    else:
        answer = "True"
    return answer

Ici, le résultat du jugement pour chaque actualité est sélectionné comme Vrai ou Faux, et la valeur numérique de la probabilité qu'elle soit jugée peut également être sortie.

À partir de maintenant, nous allons effectuer le travail de jugement et écrire chaque résultat dans le fichier csv qui a été lu précédemment.

for i, v in trump.iterrows():
    FactCheck(v["content"])
    trump.at[trump.index[i], 'Truth'] = answer
    trump.at[trump.index[i], 'Percentage'] = percentage

trump.head()
content Truth Percentage
0 Be sure to tune in and watch Donald Trump on L... Fake
1 Donald Trump will be appearing on The View tom... Fake
2 Donald Trump reads Top Ten Financial Tips on L... Fake
3 New Blog Post: Celebrity Apprentice Finale and... Fake
4 "My persona will never be that of a wallflower... True

Avec cela, nous avons pu afficher le résultat du jugement et la valeur numérique du tweet.

Faisons un graphique du taux d'authenticité.

f,ax=plt.subplots(1,2,figsize=(18,8))
trump['Truth'].value_counts().plot.pie(explode=[0,0.1],autopct='%1.1f%%',ax=ax[0],shadow=True)
ax[0].set_title('Truth')
ax[0].set_ylabel('')
sns.countplot('Truth',data=trump,ax=ax[1])
ax[1].set_title('Truth')
plt.show()

trump.describe()

image.png

Percentage
count
mean
std
min
25%
50%
75%
max

La vérité est 13,6%. Environ 6 tweets sur 7 étaient faux.

De plus, il semblait que le résultat du calcul était que le pourcentage de tous les tweets était de 1, c'est-à-dire 100% correct.

À la fin

Cette fois, j'ai créé un modèle à l'aide d'un fichier qui spécifie l'authenticité de l'actualité de Kaggle et jugé l'authenticité du tweet de M. Trump.

En conséquence, environ 6 de ses tweets sur 7 sont probablement faux.

Je me demande pourquoi tous les pourcentages sont de 1, alors je vais l'examiner.

Comme je l'ai mentionné au début, il s'agit simplement d'un résultat de calcul, il n'y a donc aucune garantie que ce résultat de vérification correspondra aux faits.

De plus, je n’ai pas l’intention de défendre ou de critiquer qui que ce soit dans une position politique particulière. Je vous serais donc reconnaissant de bien vouloir comprendre à nouveau.

Cela a été un long article, mais merci d'avoir lu jusqu'au bout.

Recommended Posts

Fake News, Faux Tweet?