Intro:
Nos últimos anos, parece que estamos inundados de notícias que soam como se pertencessem a um universo alternativo. Quantas vezes você já recebeu uma atualização de notícias e a manchete é absolutamente surreal. Parece que recentemente muitos artigos noticiosos estão começando a soar mais como os artigos do The Onion a cada dia. Isto é tanto preocupante, e um pouco engraçado dependendo do seu humor.
* nota:* Para o contexto deste artigo, estou definindo notícias “reais” como artigos de fontes verificadas, como NPR, Washington Post, etc.
Data Science Question:
Estou particularmente interessado na validade desta afirmação. Artigos de notícias “reais” soam honestamente como artigos da Onion? Particularmente aqueles que se lêem como The Onion articles. A evidência é quase totalmente anedótica, mas seria interessante ver se existem palavras ou frases-chave que são mais associadas com os artigos sobre a cebola versus artigos reais.
Processo:
Para este projeto, usei Natural Language Processing e NLTK, para tentar estruturar palavras de tal forma que um computador possa entender, modelar e prever.
Recolhi dados raspando os subreddits r/TheOnion e r/nottheonion. Por contexto, The Onion é um site de notícias satíricas para artigos que são ridículos demais para serem verdadeiros. Para comparação, r/nottheonion é descrito como “Para histórias verdadeiras que são tão ridículas, que você poderia jurar que era uma História da Cebola”. Esta pareceu ser a melhor comparação para os propósitos deste projeto.
Após raspar e coletar meus dados, eu comecei NLP.
Criei um modelo de saco de palavras, experimentei TF-IDF , e comparei com CountVectorizer para testar e ver qual teve o maior efeito no meu modelo. Entre CV e TF-IDF, este último teve a melhor pontuação.
Saco de Palavras:
Frequência de palavras no subredito Cebola:

Frequência de palavras no subredito Cebola não:
>

>
>
Após isso, podemos ver que a primeira palavra “ano de idade” aparece em ambos os subtítulos. Há apenas uma grande sobreposição entre os dois. Isto suporta a minha hipótese inicial de que provavelmente terei muita dificuldade em conseguir um modelo para diferenciar entre as duas páginas.
Para uma boa medida (e prática de codificação), fui em frente e com cada modelo pontuado com ambos.
Modelagem:
Testei a Regressão Logística com hiper parâmetros de Ridge e Lasso:


Naïve Bayes com CV e TF-IDF:


>
>
e um modelo de Floresta Aleatória com CV e TF-IDF:
>

>

Melhor modelo e justificação:
Em todos os meus modelos, a pontuação do treino foi significativamente melhor do que a minha pontuação nos testes, sugerindo que o meu modelo está sobreajustado – em alguns casos, seriamente sobreajustado.
Acabei por escolher Naïve Bayes com TF-IDF como o modelo com melhor desempenho. Foi o menos superfit de todos os modelos que eu treinei, então continuei minhas avaliações com isso. Para ver a precisão e sensibilidade, usei Regressão Logística devido à sua facilidade de interpretação.
Conclusão:
Eu argumentaria que a hipótese suporta a evidência anedótica. Eu acho que tentar treinar o computador para entender a diferença entre sátira e uma notícia real, é bastante difícil.

Embora a minha matriz de confusão sugira que o meu modelo se saiu particularmente bem, não foi muito melhor do que a minha pontuação de precisão básica.
Caso você não estivesse convencido, aqui está uma visualização de quão bem o meu modelo realmente se saiu:

Passos seguintes:
Há alguns problemas gritantes com os meus modelos e avaliações:
Por um lado, os meus dados estão enviesados. Eu tinha muito mais artigos do The Onion do que Not the Onion, e tive dificuldade em tentar explicar este problema. Se eu tivesse mais tempo, eu consideraria deixar cair dados do The Onion aleatoriamente para ter uma classe igual desde o início.
Finalmente, eu teria ponderado certas palavras mais significativamente do que outras. Como mencionei acima, a frase ‘ano de idade’ aparece em ambos os subreddits, talvez dando a esta frase um peso menor teria melhorado a minha pontuação.