Tinder Reviews Sentiment Analysis using Python

Tinder is one of the most popular dating applications. It connects people having similar interests. To check whether Tinder helps people find partners, we can analyze the sentiments of people about Tinder. There are a lot of reviews on the Google Play Store about Tinder. We can use that data to analyze the sentiments of Tinder users. So if you want to learn how to analyze Tinder reviews, this article is for you. In this article, I will take you through the task of Tinder reviews sentiment analysis using Python.

Tinder Reviews Sentiment Analysis using Python

The dataset I am using for the task of Tinder reviews sentiment analysis is downloaded from Kaggle. It was collected from Tinder reviews on the Google Play store. Now let’s import the necessary Python libraries and the dataset to begin this task:

import pandas as pd
import matplotlib.pyplot as plt
from nltk.sentiment.vader import SentimentIntensityAnalyzer
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import nltk
import re
from nltk.corpus import stopwords
import string

data = pd.read_csv("tinder_google_play_reviews.csv")
print(data.head())
                                            reviewId      userName  \
0  gp:AOqpTOF5m-nY12XsKXO0IG-ZQtyvmjwKEp43ILLrhBS...    Kreg Smith   
1  gp:AOqpTOFMaTJ6Mj-6hrp6ZI9gU5fzeVZQA9LugbFe1xR...          R.W.   
2  gp:AOqpTOGtOLC4xZzUlNT8t1ykvQHfOuhW7oJ0MScukLj...  Benjo cantor   
3  gp:AOqpTOGcid22sko0XyvhV1kSpbdKUzx5QlSIi5L1Ovc...   Chris Plata   
4  gp:AOqpTOGzA20eNWEOUM8edTHGQfd6OU7Qy48JpUcBT-x...    Dave Midas   

                                           userImage  \
0  https://play-lh.googleusercontent.com/a/AATXAJ...   
1  https://play-lh.googleusercontent.com/a-/AOh14...   
2  https://play-lh.googleusercontent.com/a/AATXAJ...   
3  https://play-lh.googleusercontent.com/a/AATXAJ...   
4  https://play-lh.googleusercontent.com/a-/AOh14...   

                                             content  score  thumbsUpCount  \
0  Got banned for life don't know why they won't ...      1              0   
1  I don't know why I was banned .. But I m not a...      1              0   
2                  All gays even if your straight🤦🤦🤦      1              0   
3  You have to pay so much to even be seen on thi...      1              0   
4  I do not understand how so many people use thi...      2              0   

  reviewCreatedVersion                   at replyContent repliedAt  
0               13.6.1  2022-05-21 04:10:44          NaN       NaN  
1                  NaN  2022-05-21 04:08:24          NaN       NaN  
2               13.6.1  2022-05-21 04:00:10          NaN       NaN  
3                  NaN  2022-05-21 03:47:58          NaN       NaN  
4               13.6.1  2022-05-21 03:47:51          NaN       NaN 

On the first impressions of this dataset, I can see some null values in some columns. To analyze the Tinder reviews, we only need the content column. So let’s create a new dataset with the content column and move further:

data = data[["content"]]

Now let’s see if we have null values in the content column:

data.isnull().sum()

The content column also contains null values, let’s remove the null values and move on:

data = data.dropna()

Now let’s prepare this data for the task of sentiment analysis. Here we have to clean the text in the content column:

nltk.download('stopwords')
stemmer = nltk.SnowballStemmer("english")
stopword=set(stopwords.words('english'))

def clean(text):
    text = str(text).lower()
    text = re.sub('\[.*?\]', '', text)
    text = re.sub('https?://\S+|www\.\S+', '', text)
    text = re.sub('<.*?>+', '', text)
    text = re.sub('[%s]' % re.escape(string.punctuation), '', text)
    text = re.sub('\n', '', text)
    text = re.sub('\w*\d\w*', '', text)
    text = [word for word in text.split(' ') if word not in stopword]
    text=" ".join(text)
    text = [stemmer.stem(word) for word in text.split(' ')]
    text=" ".join(text)
    return text
data["content"] = data["content"].apply(clean)

Now let’s have a look at the kind of words people use in the reviews of Tinder:

text = " ".join(i for i in data.content)
stopwords = set(STOPWORDS)
wordcloud = WordCloud(stopwords=stopwords, background_color="white").generate(text)
plt.figure( figsize=(15,10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
Tinder Reviews Sentiment Analysis

Now I will add three more columns in this dataset as Positive, Negative, and Neutral by calculating the sentiment scores of the reviews:

nltk.download('vader_lexicon')
sentiments = SentimentIntensityAnalyzer()
data["Positive"] = [sentiments.polarity_scores(i)["pos"] for i in data["content"]]
data["Negative"] = [sentiments.polarity_scores(i)["neg"] for i in data["content"]]
data["Neutral"] = [sentiments.polarity_scores(i)["neu"] for i in data["content"]]
data = data[["content", "Positive", "Negative", "Neutral"]]
print(data.head())
                                             content  Positive  Negative  \
0  got ban life dont know wont tell help way read...     0.231     0.225   
1  dont know ban  allow use tinder henceforth did...     0.371     0.108   
2                               gay even straight🤦🤦🤦     0.000     0.000   
3  pay much even seen app girl ever talk back bet...     0.229     0.128   
4  understand mani peopl use app im mean ugli ive...     0.000     0.225   

   Neutral  
0    0.544  
1    0.521  
2    1.000  
3    0.642  
4    0.775

Now let’s have a look at the kind of words people use in the positive reviews of Tinder:

positive =' '.join([i for i in data['content'][data['Positive'] > data["Negative"]]])
stopwords = set(STOPWORDS)
wordcloud = WordCloud(stopwords=stopwords, background_color="white").generate(positive)
plt.figure( figsize=(15,10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
positive reviews of tinder users

Now let’s have a look at the kind of words people use in the negative reviews of Tinder:

negative =' '.join([i for i in data['content'][data['Negative'] > data["Positive"]]])
stopwords = set(STOPWORDS)
wordcloud = WordCloud(stopwords=stopwords, background_color="white").generate(negative)
plt.figure( figsize=(15,10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
negative reviews of tinder users

Let’s have a look at the overall sentiment score of the users of Tinder:

x = sum(data["Positive"])
y = sum(data["Negative"])
z = sum(data["Neutral"])

def sentiment_score(a, b, c):
    if (a>b) and (a>c):
        print("Positive 😊 ")
    elif (b>a) and (b>c):
        print("Negative 😠 ")
    else:
        print("Neutral 🙂 ")
sentiment_score(x, y, z)
Neutral 🙂

So most of the users write reviews neutrally. Let’s have a look at the total of all the sentiment scores:

print("Positive: ", x)
print("Negative: ", y)
print("Neutral: ", z)
Positive:  158277.42200002735
Negative:  59438.14199999961
Neutral:  314250.34899997106

As you can see, the positive is much more than the negative, we can say that most users are happy with Tinder.

Summary

So this is how you can perform the task of Tinder reviews sentiment analysis using Python. Tinder is one of the most popular dating applications. It connects people having similar interests. I hope you liked this article on Tinder reviews sentiment analysis. Feel free to ask valuable questions in the comments section below.

Aman Kharwal
Aman Kharwal

I'm a writer and data scientist on a mission to educate others about the incredible power of data📈.

Articles: 1535

Leave a Reply