Elections these days are more about emotions and less about the facts. People vote for personalities. We here at "About This" believe that a reason for this trend in voting due to the bias in the news. How can voters vote based on facts when two news outlets often give different facts? We aren't here to tell voters which side is correct, but we are here to show voters which issues different news outlets disagree on.
What it does
"About This" allows voters to search for words/phrases that matter to them and then view a bar graph showing them how much news bias there is on this topic. The bar graph compares several news sources and their sentiment of the searched word/phrase. Bars with large deviations in height suggest bias, bars with similar heights suggest uniform opinion on the topic.
How we built it
We built "About This" mainly on Azure. We used Azure Web App Services for the front-end website, Azure Cognitive Services - Text Analytics API for the sentiment analysis of news articles, Azure batch computing to schedule hourly collection of news articles for sentiment analysis, Azure Blob Storage to store JSONs of sentiment scores for articles, Azure Data Lake Containers to organize and store the Blobs, and Azure Functions for the front end to retrieve sentiment scores from the backend.
For the front end Azure Web App Services, we used React to create the website. The front end used HTTP GET Requests to our Azure Functions, an event-driven serverless platform, to retrieve sentiment data from the backend.
The back-end used Selenium and Beautiful-Soup to get links and article content for searched terms. The articles are then ran through Azure's Text Sentiment Analysis API to determine sentiment scores for each article. Once the scores are calculated, they are stored in the database as well as returned back the users. The scores are saved to the database so that if the user or any other user wishes to search for that term again, the data will be ready much quicker. Additionally, all search term scores stored into the database have their articles regathered and rescored every hour to allow for as up to date sentiment information of the search term.
Challenges we ran into
Our main challenges were understanding how to communicate with Azure. We learned new concepts like event-driven serverless computing, React, and Blobs. We struggled a lot in getting the batch processes ready as this was a fairly complex task to set up and had a lot of moving parts. Additionally, scraping news articles was difficult as well since many news websites have dynamic search result pages, meaning we had to use Selenium for virtual browser sessions in order to dynamically interact with the webpages.
Accomplishments that we're proud of
We are all very proud of all that we have learned. Most of our team had never used React or any cloud computing service. As simple as it may seem, integrating the front end and the backend together was a great accomplishment because we were able to establish an MVP and also see all of our individual work come together into something awesome! We really took a deep dive into Azure, and I think that paid off in helping me better work with cloud services.
What we learned
We learned React as well as a plethora of backend tools with Azure
What's next for About That
I think there is a lot of potential with the data we have collected. Our main focus is on voters, so for the more data-savvy voters, we want to provide them the uncompressed sentiment data to allow users to view things like trends of sentiment over time, or variations of sentiments within articles of the same news source. Additionally, one thing we could do is sell access to our collected database of terms and sentiment for enterprise use since the terms are of phrases that voters have searched for and care about, and the sentiment data is always up to date thanks to hourly regathering of articles.