April 25th

Raizel Bernstein
3 min readApr 27, 2021

story not published on the 25th

I was scrolling on twitter when following image caught my attention. Although, I can’t find the actual tweet :( here’s the screenshot resembling the image within the tweet.

image from rotten tomatoes

Now this is truly astonishing. One would think a movie with low score of 41% would NOT generate a cult following. So why is it everyone knows the quote “April 25th — because it’s not too hot, not too cold. All you need is a light jacket!” when responding to “what is your idea of a perfect date?” ??? I believe it’s because there’s a large Miss Congeniality following! Also, I believe the critics don’t reflect the audience rating well. Additionally, the audience score reflected on Rotten Tomatoes is even lower than what I thought the true audience score should be - based on what people in my social media surroundings have tweeted.

TWINT. Want to gather tweets? Then twint is for you! Want to stalk someone with a not private twitter; then twint is for you!

First pip install -user -upgrade git+https://github.com/twintproject/twint.git@origin/master#egg=twint

For some reason the normal pip install twint doesn’t work.

#gather tweets from the movie Miss Congeniality
c = twint.Config()
c.Search = "Miss Congeniality"
c.Limit = 20000
c.Since = "2000-12-14" #released December 14, 2000
c.Until = "2021-04-26"
c.Pandas = True
# twint.run.Search(c)MC = twint.storage.panda.Tweets_df
MC.head()

Use the Vader model to gather the sentiment of each tweet. Type pip install vaderSentiment into the console to download the VADER model.

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
vader = SentimentIntensityAnalyzer()

Add every tweets vader score into the Miss Congeniality dataframe (MC for short)

MC['positive sentiment score'] = MC['tweet'].apply(lambda x: vader.polarity_scores(x)['pos'])
MC['negative sentiment score'] = MC['tweet'].apply(lambda x: vader.polarity_scores(x)['neg'])
MC['neutral sentiment score'] = MC['tweet'].apply(lambda x: vader.polarity_scores(x)['neu'])
MC['compound sentiment score'] = MC['tweet'].apply(lambda x: vader.polarity_scores(x)['compound'])

As you can see from the graph, the overall sentiment is skewed positively. Here’s the code for the graph …

#distribution of vader score
fig, ax = plt.subplots(figsize=(15,7))
ax = sns.distplot(MissCongeniality['compound sentiment score'], color = 'firebrick')
plt.xlabel('Sentiment Score', fontsize=18)
plt.ylabel('Tweets per Score', fontsize=18)
plt.title('VADER Sentiment of Miss Congeniality', fontsize=22)
plt.tick_params(labelsize='large')

Then I split the scores into a negative neutral and positive dictionary.

#determining a neutral sentiment value, negative sentiment value, and positive sentiment value
sentiment = {'negative':0, 'neutral':0, 'positive':0}
for x in MissCongeniality['compound sentiment score']:
if x < -.1:
sentiment['negative'] += 1
elif -0.1 <= x <= 0.1: #space for the score to be neutral beyond a perfect 0
sentiment['neutral'] += 1
else:
sentiment['positive'] += 1
print('Miss Congeniality sentiment count:', sentiment)

According to the VADER sentiment score there were 6844 negative tweets, 916 neutral tweets, and 7999 positive tweets.

The following link leads to the csv of the tweets, on my GitHub. It’s messy, but if you want to sift through all the tweets check out the link!

https://github.com/MarcBernstein0/raizel-practice-questions/blob/main/data/MissCongeniality.csv

--

--