One of the great philosophical questions is "Who are you?" What is the identity of the self? Are you the same person as you were a year ago if none of the cells that make you up are the same? Are you the same person as you were as a year ago if your personality has drastically changed from a year ago? We wanted to explore the idea of how a person's personality changes over time and how it's possible to track and reflect upon those changes.
What it does
The user enters a Twitter handle, a date range, and a step size (i.e. time intervals to be plotted), we display how that Twitter user's big five personality traits (openness, introversion/extroversion, conscientiousness, agreeableness, and emotional range) change over that date range for that step size.
How we built it
We used the got3 library to get a person's historical tweet data for a specific date range. We then fed this information into IBM's Watson Twitter Personality Service to gain insight about the person's personality during this time range. We used a Python backend with CherryPy since we're not storing any of this information. The plots were created with Plot.ly.
Challenges we ran into
The official Twitter API only gets two weeks of historical tweet data, so we had to look for an external library to get more historical information. Unfortunately, the library we used only works for accounts that are public, unless the specific user grants permission to access their account. Because of the limited amount of time, we just decided use public accounts. Querying a long date range for someone with a lot of tweets takes a long time, so isn't very user friendly. Conversely, there's a minimum amount of tweet data that Watson needs to analyze so if the user doesn't have very many tweets during some of the intervals, we can't display that information. Finally, we had some other issues with Python3 compatibility, specifically with the got3 library and getting the graph information to display correctly.
Accomplishments that we're proud of
We're proud of our teamwork and efforts and it's exciting that it actually works.
What we learned
One member had a lot more experience in web development so he shared his knowledge about web development, the web development process, and how to troubleshoot issues. None of us had used the IBM Watson APIs before so that was also a new experience.
Why we're proud of it:
It's always amazing to build something new from scratch.
What's next for Twistory
IBM Watson returns many personality attributes but we only considered "the big five." We can add additional graphs to display those other personality attributes. It would also be cool to be able to authenticate users to show private account data or allow them to upload their Tweet archive to allow Watson to analyze it.