Twitter Sentiment Analysis

Since December’s review panel I’ve been rethinking aspects of my Grad Project and how users will interact with it. Previously it was semi-dependant on the viewers, and relied on their use of twitter while in the gallery to activate additional features of the project. Since the actions of the audience can’t be relied upon in the intended way, I’ve made some adjustments.

Social media provides an outlet for anyone to speak their mind while providing public opinions, thoughts and advice. Even though individual Tweets or Facebook posts may seem unimportant or trivial, they comprise a large set of data which provides invaluable information on society. Political parties, product manufacturers and restaurant owners for example, can learn a lot about their target demographic and their opinion on products and events by simply conducting a sentiment analysis. This has the potential to clearly present any negative or positive feedback.

As for the changes to my grad project, the tweets will still appear as points on the map, but their content will undergo a sentiment analysis which aims to determine the positivity, negativity or neutrality associated with the tweet. An overall sentiment will then be applied to 15 different areas of the city. The map will still be projected onto the ground, and viewers can interact with it by walking over it.

The 15 areas the city will be divided into to categorize the data
The 15 areas the city will be divided into to categorize the data

Refining my project idea based on the suggestions given during the grad panel was one of my challenges this past month, as well as apply that idea through code. I managed to gather spreadsheets outlining negative and positive words, but for the longest time the program wasn’t matching the words to the tweets. After working on it for a few days, I realized the content is case sensitive so I converted everything to lowercase and got it working. I’ve now managed to split Vancouver into 15 equal blocks and apply a single sentiment for each block based on the average number of negative and positive tweets that appear.

The data sets that I’ve used to detect negativity / positivity contain thousands of words as well as commonly misspelled variations.

The points representing each tweet are currently different colors whether they're negative, positive or neutral
The points representing each tweet are currently different colours depending on the detected sentiment
The emoticons represent the average sentiment of tweets in their area
The emoticons represent the average sentiment of tweets in their area

In addition to overcoming this curve, I’ve been doing some research into Kinect sensors and how to get them working on a laptop and integrate it into my project. This includes what Processing libraries to download, the code needed to initialize the camera, and how to access the different features, in this case the Depth sensors.

This stage of work has mostly been focused on finalizing my idea (for now) and getting the different features to work in unison. Up next, I’ll be finalizing a style, working on integrating the kinect sensor, creating a list of everything I need to rent/borrow for the show in the spring and figuring out how to deal with the wifi at school.


Leave a Reply