In recent years, the proliferation of "fake news" (intentionally fabricated or misleading articles) across popular social media sites such as Facebook has led to widespread political manipulation, unproductive echo chambers, and societal mistrust. Due to the misleading nature of such articles, it is often difficult for users to quickly gauge how trustworthy each new article is.

What it does

FakeCheck is a novel Chrome extension that leverages the power of artificial intelligence to notify users of misleading news articles in their newsfeeds. Behind the scenes, FakeCheck relies on a deep dual-convolutional and recurrent neural network to determine how "fake" each article is based on it's headline. If an article is sufficiently "fake", FakeCheck inserts a warning to caution users against the article.

How I built it

To teach my deep neural networks to recognize "fake news", I first found a brand-new dataset containing over 3,000,000 fake and reliable news articles based on OpenSources – a professionally curated list of misleading and credible sources. The OpenSources dataset is hundreds of magnitudes larger than the current gold-standard, enabling the resulting neural network to more accurately detect the nuances of "fake news" than today's methods.

The headline was extracted for each news article and transformed into a numerical vector representation with Google's word2vec pretrained embedding models. Each headline was then mapped to a label, either fake or reliable, based on the dataset.

In contrast to current deep learning approaches for sentiment analysis, my neural network contains both convolutional and recurrent layers. While convolutional layers enable the network to break down each headline into more manageable chunks of words, the recurrent layers maintain information derived from the order of the headline's worlds, enabling my neural network to get the best of both worlds. After supervised learning, my neural network had a test accuracy of 85.74% - surpassing current state-of-art methods by over 3x.

Challenges I ran into

To make quick predictions in the browser, I exposed the deep neural net as a REST API with Google Cloud Compute. This is much more efficient than loading the models in the browser, which would take much longer and require new frameworks.

Heroku was too weak, so I switched to Google Cloud Compute later on. Also, I had to ensure my Javascript requests were synchronous to maintain consistent results.

Accomplishments that I'm proud of

What I learned

Making Chrome extensions with Javascript!

What's next for FakeCheck

Built With

Share this project: