A Brief Introduction
"The road to hell is paved with good intentions"
Interpersonal communication is harder today when most of our communication takes place through messaging platforms. The lack of non-verbal communication cues, poorly worded texts and messages sent in a fit of anger may invariably spawn more misunderstandings over texts as opposed to in-person communications (which is hard enough as it is)
Our Bot lives on the Telegram messaging platform, a WhatsApp but with better functionality, such as the ability to backup data without a phone number, an ability to create 'stickers' (think emojis but better), creating polls and other interactive functions.
From personal experience, we believe people may not always mean what they say, especially in the medium of texting (computer-mediated-interpersonal-communications). For example, our roommates sent a well intentioned but less-than-pleasant sounding text:
'Hello friends, what happened to keeping common areas free of personal stuff? Trying to keep the tone friendly here but I really don't get the point of having house meetings if we aren't gonna follow what we set out'
Regardless if she was right or wrong, we unanimously agreed that she was 'passive-aggressive' in the way she conveyed her message across. Although we knew that she meant well, we were deeply hurt when we first received those messages.
This event illustrated to us that intentions are rarely well-communicated in texts; we send our texts too fast and often times without sufficient thought (with non-verbal cues to soften the sting of words). Feelings get hurt, causing unnecessary rifts between friendships, all over a misunderstood text.
What it does
Sensiment (a mix of the words 'sensitive' and 'sentiment') is a Telegram bot that you can add to your group chats by adding members to your telegram group -> search @sensiment_bot
Based on Wolfram's language, one can use their in-built functions to conduct sentiment analysis with text and images. We exposed this specific function on the API generated by Wolfram and utilized it in our app. If someone is being rude on the chat or says unpleasant language, they receive a personal/private message from the bot to mind their language!
To get started:
- Add the bot in your group chat @sensiment_bot
- Just go on with your normal conversations
- You will see what happens!
- Manually go to group members and stop / remove the bot
- Use command
We rewrote the above message to be read as 'neutral' and 'positive' respectively, text your abilities as a communicator to rephrase the message in a positive manner (without losing meaning ofc)!
Negative: 'Hello friends, what happened to keeping common areas free of personal stuff? Trying to keep the tone friendly here but I really don't get the point of having house meetings if we aren't gonna follow what we set out'
Neutral: 'Hello friends, could we remember to keep common areas free of personal stuff? I hope we covered this during our house meeting, if we don’t adhere to this agreement, I believe it will be detrimental to the entire household'
Positive: 'Hello friends, could we remember to keep common areas free of personal stuff? I hope we covered this during our house meeting, if we don’t adhere to this agreement, the meeting would have been for naught'
How we built it
The app is deployed and running on Google Cloud Platform (thanks for the free credits!). Also, we wanted to try to build something with new technology that I haven't tried before, and I thought that the Wolfram language seemed pretty interesting. There's in-built functions to do sentiment analysis on text (and even images!), and the results can be returned in your very own API.
Challenges we ran into
Everything was a challenge. We had manpower issues, and unfamiliarity with everything (first time building a telegram bot, first time deploying an app on Google Cloud Platform, first time using Wolfram etc). Also, the sentiment analysis isn't perfect... try it out with vulgarities and I think those register as 'negative' for sure :P
One of the greatest challenges granted was the sheer complexity of the English language! There are simply so many ways to phrase a particular message that we aren't sure that @sensiment_Bot could accurately detect the sentiment in each text.
Additionally, texts are usually contextual, the context and the messages before may affect how the present message is being interpreted, this has to be taken into account @sensiment_Bot is to provide a more accurate reading of the sentiment of the current message.
Accomplishments that we're proud of
- Deploying our bot on the Google Cloud Platform
- Harnessing the power of sentiment analysis using Wolfram
- A grueling 24-hour challenge of coding and grinding
What we learned
- It wasn't too hard to deploy with Google Cloud Platform with node.js!
- So many different technologies and other languages that we didn't know beforehand.
What's next for Sensiment
- Suggestions on improving language use in messages sent. However it's really a challenge because of the lack of contextual data and hitting word-related services API limit.
- Make it more fun like use gif and stickers as responses! Make the bot have its own personality and voice (adding of welcome message) etc.
Ultimately the goal of the project was to remind us to be better communications, but like Grammarly, we aim not only highlight to users when they may be potentially sending a negative message but in future to have the functionality to advise users to phrase their messages better.
OUR FINAL GOAL: To not only detect sentiment but INTENTION and the ability to advise accordingly, so that in future Sensiment is able to be your intermediate communicator, ensuring that your intentions are truly conveyed in your expressions.
Making the world a better place one sentence at a time.