In a text-message based world, it can be difficult to gauge someone's feelings without the context and body language that in-person interaction has. Particularly, socially-inept people can find it hard to pick up on subtle cues that many of us find natural and intuitive. Others just want a way to know what information is important and relevant in the mass of spam and advertisement that is email. Thanks to advancements in natural language processing, this doesn't have to be as big of a problem. Users know when contacts are irritated, angry, or furious, providing information critical to scheduling and prioritization decisions; urgent messages will be filtered to the top because of their tendency to include emotionally-charged content. Also, we're applying for internships this summer and it would be nice if machine learning gave insights into how recruiters, interviewers, and key people were feeling.

What it does

It scans unread emails and analyzes their emotional content, labelling them based on positivity/negativity (score) and emotional content (magnitude). Labels range from irritated to furious.

How we built it

We built it in Google Apps Script and used Google Cloud Platform's Natural Language API to perform the analysis.

Challenges we ran into

Trying to navigate the rather complex documentation for Google Apps. The Advanced Services APIs did not include NLP so we had to use a standard API call.

Accomplishments that we're proud of

It works! And it has emojis!

What we learned

Google app developer environment is quite easy to use. It's also free (practically). Some natural language processing concepts.

What's next for Email Sentiment Analyzer

We envision analyzing Facebook and text messages to decrease misunderstandings and conflict caused by the lack of context or shared cultural norms. Users can be more aware of others' sentiments when conversing, allowing for more productive and less acrimonious discussion. A crucial step towards this end goal is creating more robust and detailed analysis and evaluation metrics for emotions; currently the model has not been extensively tweaked for maximum effectiveness or granularity. In particular, the labelling has no user input; since interpretations of "furious", "irritated", "angry", and "pissed" are differ from one individual to another, it could be fruitful to either use a data-driven classification system or allow users to customize the thresholds themselves.

Built With

Share this project: