What emojis say about me

Marta Murtas
9 min readFeb 9, 2018

--

Almost everytime I send a message on Telegram I also send an emoji, to express in a better way how I’m feeling in that moment. And by watching my latest used emojis I often think “it would be very interesting if I could study my mood on Telegram based on the emojis I send in my messages”.

Well, for years I had this thought on my mind, and a few months ago it finally was the time to answer my question. I was following a course about how to represent complex data using Processing, an open-source programming language often used for art and visual design.
We were asked to create a visualization project based on a subject we were very curios about. I thought “hey, this is the perfect time for exploring the emoji topic!”, and so I did.
I started this project on 21 November.

My goal for the exam was to represent all the emojis I used on Telegram (my most used chat service since 2014) in a sort of word-cloud, but instead of words I would have used emojis: the position of the emoji is random but its size is based on their frequency of use.
To better explore this topic, I decided that I wanted to create a non-static application to allow the user to distinguish between seasons and years.

When the idea came to life, I became even more curios and decided to explore the topic a little deeper.

How did I implement it?

The first things I needed were the messages I sent on Telegram. I googled to find out if this was an unreachable goal, and luckily it wasn’t.

telegram-cli in terminal

There is this beautiful version of Telegram called telegram-cli, which lets you send and receive messages through the command line interface.
I installed it and tried to backup messages but I found it wasn’t possible since there wasn’t any command for doing it.

I then found telegram-history-dump which allowed me to download all my chats in JSON files.

A JSON chat file structure

I’ve find out that I have 68 chats on Telegram.
I like JSON but I find CSV files to be more readable for a human being like me, so this Python code was very helpful to convert my chat files in CSV format.
Since my chats were 68 and I didn’t wanted to execute every single conversion, I created a Python script that, for every *.JSON file contained in output/ folder, calls the script for format conversion. It worked.

A piece of a CSV chat file

At this point I had all my chats in CSV format, containing 4 columns: who sent the message, to who, when and finally the message, including the emojis.
But since my goal was to study the emojis sent by me, I only needed the rows where 'from' == “Marta”, and I didn’t need the ‘from’ column in the new file; I wanted the ‘date’ column and the emojis in the ‘message’, without the text.
So I created a new Python script that did this for me for every single CSV chat file.

This is the initial procedure for taking the data.

Here comes the good part.
I am going to show you the 5 different data visualisations I have created, and I will introduce them with the question they answer to.

Which emojis did I use from 2014 to 2017 and in every single season?

All the emojis I sent during the period of time [2014; 2017]

This is my emoji-cloud representing the emojis sent in the selected period of time. The application is interactive, so I can select the year from the ‘Years’ axis and the season I want from the ‘Seasons’ axis.
The ‘Total’ option corresponds the sum of every other option in that bar.
I have used the 😍 emoji 20588 times (yep, I really like it, ahah).
How do I know this?

My mouse over the 😂 emoji

When the cursor is over an emoji, the program displays a label where the frequency of use of that emoji (in the selected period of time) is shown.

My interactive application in Processing

As you can see from the gif above, the dimension of the emojis could not have been proportional to each other, otherwise the emojis used only once could not have been visible. Since I wanted to show all the emojis, the dimension of the images is indicative.
But even if using this strategy, you are able to see that I do a massive use of certain emojis, while I occasionally use the rest of them.

These are the emojis sent in June, July and August 2017

I also wanted the different temporal views to be coherent between themselves. You can notice the drastic change of dimension of the images when I consider a shorter period of time.

What kind of emotions my emojis express? Is the sentiment of my emojis positive, neutral or negative?

In order to answer this question, I needed an emoji ranking kind of data. I was querying Google for ‘emoji psychology’, ‘emoji sentiment’ and so on, then I found a paper in which an emoji ranking is calculated. Here you can find the paper I’m talking about; here you can find the resulting ranking file.
The authors found a way to assign a positive, neutral and negative value to a limited set of emojis (751).

I decided to apply these results to mine, to discover how many emojis I used during 2015, 2016 and 2017 (the only years of which I had all the messages) and how many times I expressed positive, neutral and negative sentiments through those emojis.

If you look at the table you can see that every emoji has three values, so even if I use a happy emoji a little percentage of negative and neutral sentiment is still being counted. Looking at the values in the table I saw that there are certain emojis that have a predominant sentiment (or rather when max (positive, neutral, negative) > sum (positive, neutral, negative) — max (positive, neutral, negative)) so I decide to also show (through the opacity channel) in my visualisation the number of times I was predominantly positive, neutral and negative.

I decided to represent the sentiments using this palette from Color Hunt, and in particular:

  • positivity with the color #4E3188
  • neutrality with #24BABC
  • negativity with #EAEF9B

This is what the results look like:

Here you can see that in 2015 I sent the maximum number of emojis, followed by 2017 and 2016. In 2015 I was pretty positive, in 2016 I was more neutral than in the other two years, while 2017 was the most negative one, based on the emoji ranking paper results.
This represents the sum of all the values of positivity, neutrality and negativity.

What if I want to have a more detailed view of the single years?
If my cursor is over a year, I can see this:

focus on 2015
focus on 2016
focus on 2017

The opacity of the bar states for how many times I was predominantly positive (neutral or negative) comparing to all the times I was positive (neutral or negative).

I don’t use emojis to express my neutrality: if I want to be neutral, I don’t use any emoji. And this is reflected on the opacity of the neutral sentiment in the three views above. I always use more positive emojis than negative ones, and in 2015 I used positive predominantly emojis (you can notice this by watching the opacity of the purple bar).

Which emojis do I send in which chat?

I wanted to explore the use of my 25 most used emojis of all time in the single chats, so I thought a correlation map could be useful for the sake of this.

I sorted my chats based on the amount of emojis I sent in them, and only took the ones in which I sent at least one emoji.

In the horizontal axis there are the sorted chats, in the vertical axis the 25 most used emojis. For filling the cells I used this palette. The more emojis I used, the more the color of the cell tends to be purple.
Starting from left, there is the chat with my boyfriend, the second is my bestfriend’s, then a group of girlfriends’, a group of college friends, a family group, another friend’s, my mom’s, and so on…
At the bottom of the visualisation there are cells which indicates the sum of the 25 most used emojis for every chat. You may have noticed that in one column the sum equals to 0, and that’s because in that chat I have used emojis, but these emojis do not belong to the set of the 25 most used. This also explains why, even if I sorted chats in decreasing order, the bottom sums are not ordered. It is because in some chats I used other kinds of emojis.

From this visualisation I have noticed that:

  • I do a massive use of the 😍 emoji with my boyfriend;
  • I’m often laughing in my messages;
  • I express love using lots of different heart emojis. But there are some chats in which I never use this kind of emoji, even if I often write messages in them;
  • I use emojis to express happiness, fun, love, sadness and sometimes surprise. As you can see there are not “neutral” emojis;
  • the 😘 emoji was only sent to my closest contacts.

What about my mood in the chats?

The previous visualisation shows the use of emojis in every chat.
What if I want to see the mood of every chat?

How much was I positive, neutral and negative in with my contacts?

Like in the previous visualisation, I sorted the chats based on the number of emojis I sent in them. Differently to that visualisation, though, here I considered all the 751 emojis in the paper (linked above), not only the 25 most used ones.
The first bar is my boyfriend’s. Yes, I use so many emojis with him.

At the top of each bar there is the number indicating the total number of emojis I sent. If you compare these numbers with the ones at the bottom of the previous visualisation, you can see that in most of the cases these numbers are greater than the other ones. This is because here, as I said above, I consider all the emojis, not only the most used ones. But in some cases the numbers in this vizualisation are lower than the others. Why? It is because even if here I want to consider all the emojis I’ve sent, I can only consider those emojis of which a probability of positivity, neutrality and negativity has been calculated in the paper. So even if here I consider more emojis (751 vs 25), because some of the emojis that I use the most were not considered in the experiment, the sum of the considered emojis sometimes is lower.
Anyway, in my opinion the visualisation is still representative and realistic.

How many emojis did I sent every single day from the beginning? My journey on Telegram

Now I would like to go deeper and see my entire experience on the Telegram platform. How many emojis did I sent every single day from the beginning? Were they positive, neutral or negative?

I was using emojis a lot during the first semester at the college (oct 2014 — mar 2015), which means I was texting a lot. Then I understood how much I had to study to get acceptable grades, ahah!

For each day of each month of every year of my journey on Telegram, I drawn three circles and filled them with the colours in this palette:

  • positive sentiment: #FC85AE
  • neutral sentiment: #9E579D
  • negative sentiment: #574B90

I also used the opacity channel for understanding how many times my positive, neutral and negative emojis expressed a predominant sentiment.

Can you spot some neutral ellipses? They are not as visible as the positive and negative ones, because of the opacity channel, which means that I barely use prevalently neutral emojis.

I’m very happy with the results: they allowed me to analyze the way I express my mood on Telegram: who I share which emotions with, how many times I need emojis to share my mood with my contacts…

I have created a public GitHub repository containing the code I wrote, if you are interesting at it.

This was my first work in the data visualisation field.

--

--