Intro:
De laatste jaren worden we overspoeld met nieuwsartikelen die klinken alsof ze in een alternatief universum thuishoren. Hoe vaak heeft u geen nieuwsbericht ontvangen waarvan de kop absoluut surrealistisch is. Het lijkt erop dat de laatste tijd veel nieuwsartikelen elke dag meer als The Onion-artikelen beginnen te klinken. Dit is zowel verontrustend, als een beetje grappig, afhankelijk van je humor.
*noot:* Voor de context van dit artikel, definieer ik “echt” nieuws als nieuwsartikelen van geverifieerde bronnen, zoals NPR, Washington Post, enz.
Data Science Question:
Ik ben vooral geïnteresseerd in de geldigheid van deze verklaring. Klinken “echte” nieuwsartikelen echt als Onion artikelen? Vooral als ze lezen als The Onion-artikelen. Het bewijs is bijna volledig anekdotisch, maar het zou interessant zijn om te zien of er sleutelwoorden of zinnen zijn die meer geassocieerd worden met Onion-artikelen versus echte artikelen.
Proces:
Voor dit project heb ik Natural Language Processing en NLTK gebruikt, om te proberen woorden zo te structureren dat een computer ze kan begrijpen, modelleren en voorspellen.
Ik verzamelde gegevens door de subreddits r/TheOnion en r/nottheonion te schrapen. The Onion is een satirische nieuwswebsite voor artikelen die gewoon te belachelijk zijn om waar te zijn. Ter vergelijking, r/nottheonion wordt beschreven als “Voor waargebeurde verhalen die zo verbijsterend belachelijk zijn, dat je zou zweren dat het een Onion-verhaal was”. Dit leek de beste vergelijkingen voor de doeleinden van dit project.
Na het schrapen en verzamelen van mijn gegevens, begon ik met NLP.
Ik maakte een bag of words-model, probeerde TF-IDF , en vergeleek het met CountVectorizer om te testen en te zien welke het grootste effect op mijn model had. Tussen CV en TF-IDF, de laatste had de betere score.
Bag of Words:
Frequentie van woorden in The Onion subreddit:

Frequentie van woorden in Not the Onion subreddit:

Van hieruit alleen al kunnen we zien dat het eerste woord “jaar oud” in beide subreddits voorkomt. Er is gewoon veel overlap tussen de twee. Dit ondersteunt mijn eerste hypothese dat ik het waarschijnlijk heel moeilijk zal krijgen om een model onderscheid te laten maken tussen de twee pagina’s.
Voor de goede orde (en coderingspraktijk), ging ik verder en scoorde met elk model bij beide.
Modellering:
Ik testte Logistische regressie met Ridge en Lasso hyperparameters:


Naïeve Bayes met CV en TF-IDF:


en een Random Forest-model met CV en TF-IDF:


Beste model en verantwoording:
In al mijn modellen presteerde de trainingsscore aanzienlijk beter dan mijn testscore, wat erop wijst dat mijn model overfit is – in sommige gevallen ernstig overfit.
Ik koos uiteindelijk Naïve Bayes met TF-IDF als het best presterende model. Het was het minst overfit van alle modellen die ik heb getraind, dus heb ik mijn evaluaties hiermee voortgezet. Om naar nauwkeurigheid en gevoeligheid te kijken, gebruikte ik Logistische Regressie vanwege de gemakkelijke interpreteerbaarheid.
Conclusie:
Ik zou willen stellen dat de hypothese het anekdotisch bewijsmateriaal ondersteunt. Ik denk dat het heel moeilijk is om de computer te trainen in het onderscheiden van satire en echt nieuws.

Hoewel mijn confusion matrix aangeeft dat mijn model het bijzonder goed deed, was het niet veel beter dan mijn baseline accuracy score.
Voor het geval u niet overtuigd was, volgt hier een visualisatie van hoe goed mijn model het eigenlijk deed:

Volgende stappen:
Er zijn een aantal opvallende problemen met mijn modellen en evaluaties:
Zo zijn mijn gegevens scheef. Ik had veel meer artikelen van The Onion dan van Not the Onion, en het was moeilijk om dit probleem op te lossen. Als ik meer tijd had, zou ik overwegen gegevens van The Onion willekeurig te laten vallen om vanaf het begin een gelijke klasse te hebben.
Ten slotte zou ik bepaalde woorden zwaarder hebben gewogen dan andere. Zoals ik hierboven al zei, komt de zin ‘jaar oud’ in beide subreddits voor, misschien zou het geven van een lager gewicht aan deze zin mijn scores hebben verbeterd.