We were inspired by looking at past projects on Devpost, learning about the Twitter API, and exploring Google Cloud's APIs.

What it does

It gives users insight into popular opinions and attitudes towards popular topics tracked by hashtags. Using sentiment analysis, we are able to grade the tweets grouped under a hashtag on their positive or negative emotion. By aggregating all of the emotion scores of the tweets belonging to a hashtag, we can show what people feel about trending topics around the world. It also shows where tweets originate to highlight what regions feel more positively or negatively towards a certain topic.

How we built it

We created a Twitter bot using Python that grabs tweets and popular hashtags from the Twitter API. This API gives us the text of tweets and any associated location data. It then groups the tweets by hashtag and feeds them to TextBlob, a Python natural language processing library, which uses sentiment analysis to grade each tweet on its positive and negative emotion. It then pushes the overall numeric scores for the hashtags and tweets as well as location data to a Firebase database. Our webapp, which we built using React JS, then pulls that data to rank the hashtags and plot them on a world map using Google Cloud's Maps and Geocode APIs.

Challenges we ran into

We weren't super experienced with JavaScript or natural language processing and we had no experience working with any of the APIs we used, so learning everything we needed to build this was time consuming.

Accomplishments that we're proud of

We are proud that we built a functioning webapp using so many new technologies and managed to juggle all of its components.

What we learned

We learned a ton about React and natural language processing. We also learned that it is fine to pivot away from an original, inferior plan even if substantial work has been done on it.

What's next for HashMap

One planned feature was allowing users to search for and grade any hashtag on Twitter, but it would have been prohibitively expensive and difficult. We also wanted to be able to do to sentiment analysis to extract emotions other than just "positive" and "negative".

Share this project: