We set out to create a tool that could model people's feelings about the US Election.
What it does
The Electoral roast parses new tweets that concern any of the candidates for the US Presidential election. From there it categorizes the tweet as either a statement for, against, or neutral in regards to the candidate it concerns. We then plot that tweet as a point on a US map that corresponds to its location. Over time, the number of points on the map grow, and we can see where support or opposition is tightly clustered. If you zoom in, you can see specifically the tweet that each dot on the map represents.
How we built it
The key components of our system are as follows. 1) A python script that pulls tweets concerning the candidates from Twitter's Streaming API. 2) A python script that incorporates machine learning and natural language processing to run a sentiment analysis (deciding whether the feelings behind a tweet are positive or negative) on every new tweet. 3) A Web application that pulls from a firebase server and plots tweets onto a map of the world.
Challenges we ran into
Our original plan was to use a given set of tweets as the training set for our learning algorithm. The tweets in the original training set didn't match the subject matter for our application closely enough, so the sentiment analysis ran poorly. We had to hand categorize 1500 of the tweets we were streaming to build a better, more accurate training set for our application.
Accomplishments that we're proud of
We are proud that we were able to parse the tweets as they came in efficiently. We are also proud of being able to represent the world's opinions on the US Candidates in realtime. We are very proud of being able to implement a basic learning algorithm to a real world issue.
What we learned
We learned a lot about the Node.js/Express framework. Additionally, we also learned a lot about sentiment analysis.
What's next for The Electoral Roast
Well, after the primaries are over, we'll focus the Electoral Roast on the two major candidates from either party.