Intro:
Au cours des dernières années, il semble que nous soyons inondés d’articles de nouvelles qui semblent appartenir à un univers alternatif. Combien de fois avez-vous reçu une mise à jour des nouvelles et le titre est absolument surréaliste. Il semble que ces derniers temps, de nombreux articles d’actualité ressemblent de plus en plus à des articles de The Onion. C’est à la fois inquiétant et un peu drôle, selon votre humour.
*note:* Pour le contexte de cet article, je définis les « vraies » nouvelles comme des articles de nouvelles provenant de sources vérifiées, comme NPR, le Washington Post, etc.
Question de science des données:
Je suis particulièrement intéressé par la validité de cette affirmation. Les « vrais » articles de presse ressemblent-ils honnêtement à des articles de l’Oignon ? En particulier ceux qui se lisent comme des articles de The Onion. La preuve est presque entièrement anecdotique, mais il serait intéressant de voir s’il y a des mots clés ou des phrases qui sont plus associés aux articles de l’Oignon par rapport aux articles réels.
Processus :
Pour ce projet, j’ai utilisé le traitement du langage naturel et NLTK, pour essayer de structurer les mots de telle sorte qu’un ordinateur puisse comprendre, modéliser et prédire.
J’ai recueilli des données en grattant les subreddits r/TheOnion et r/nottheonion. Pour le contexte, The Onion est un site d’informations satiriques pour les articles qui sont juste trop ridicules pour être vrais. À titre de comparaison, r/nottheonion est décrit comme « Pour les histoires vraies qui sont tellement ridicules que vous auriez pu jurer que c’était une histoire de l’Oignon ». Cela semblait être les meilleures comparaisons pour les besoins de ce projet.
Après avoir gratté et collecté mes données, j’ai commencé le NLP.
J’ai créé un modèle de sac de mots, essayé TF-IDF , et l’ai comparé à CountVectorizer pour tester et voir lequel avait le plus d’effet sur mon modèle. Entre CV et TF-IDF, c’est ce dernier qui a obtenu le meilleur score.
Sac de mots:
Fréquence des mots dans le subreddit The Onion:

Fréquence des mots dans le subreddit Not the Onion :

De ce seul fait, nous pouvons voir que le premier mot « year old » apparaît dans les deux subreddits. Il y a juste beaucoup de chevauchement entre les deux. Cela soutient mon hypothèse initiale que je vais probablement avoir un temps vraiment difficile en essayant d’obtenir un modèle pour différencier les deux pages.
Pour faire bonne mesure (et pratique de codage), je suis allé de l’avant et avec chaque modèle a marqué avec les deux.
Modélisation:
J’ai testé la régression logistique avec des hyper paramètres Ridge et Lasso :


Naïve Bayes avec CV et TF-IDF :


et un modèle Random Forest avec CV et TF-IDF :


Meilleur modèle et justification :
Dans tous mes modèles, le score d’entraînement a donné des résultats nettement supérieurs à mon score de test, ce qui suggère que mon modèle est surajusté – dans certains cas, sérieusement surajusté.
J’ai fini par choisir Naïve Bayes avec TF-IDF comme modèle le plus performant. C’était le moins overfit parmi tous les modèles que j’ai formés, donc j’ai continué mes évaluations avec cela. Pour examiner la précision et la sensibilité, j’ai utilisé la régression logistique en raison de sa facilité d’interprétation.
Conclusion:
Je dirais que l’hypothèse soutient les preuves anecdotiques. Je pense qu’essayer d’entraîner l’ordinateur à comprendre la différence entre une satire et une vraie nouvelle, est assez difficile.

Bien que ma matrice de confusion suggère que mon modèle a particulièrement bien réussi, il n’était pas tellement meilleur que mon score de précision de base.
Au cas où vous n’étiez pas convaincu, voici une visualisation de la performance réelle de mon modèle :

Prochaines étapes :
Il y a quelques problèmes flagrants avec mes modèles et évaluations :
Pour commencer, mes données sont biaisées. J’avais beaucoup plus d’articles de The Onion que de Not the Onion, et j’ai eu du mal à essayer de tenir compte de ce problème. Si j’avais plus de temps, j’envisagerais de laisser tomber au hasard les données de The Onion pour avoir une classe égale dès le début.
Enfin, j’aurais pondéré certains mots de manière plus significative que d’autres. Comme je l’ai mentionné plus haut, l’expression « âgé d’un an » apparaît dans les deux subreddits, peut-être que donner à cette phrase un poids plus faible aurait amélioré mes scores.