def emojiSentimentAnalysis(self): final_labels = [] score_lst = [] negCount = 0 posCount = 0 neuCount = 0 for i in self.emojiList: pos_total = 0 neg_total = 0 if len(i) > 1: for j in i: try: response = get_emoji_sentiment_rank(j) except KeyError: continue score = response['sentiment_score'] if score > 0: pos_total += score elif score < 0: neg_total += score else: try: response = get_emoji_sentiment_rank(i) except KeyError: continue score = response['sentiment_score'] if score > 0: pos_total += score elif score < 0: neg_total += score # print(i) # print(pos_total) # print(neg_total) if pos_total > abs(neg_total): # print('Pos') final_labels.append("POS") score_lst.append(pos_total) posCount += 1 elif pos_total < abs(neg_total): # print('Neg') score_lst.append(neg_total) negCount += 1 final_labels.append("NEG") else: neuCount += 1 score_lst.append(0) # print('Neu') final_labels.append('NEU') # print('-----------') return { "negativeCount": negCount, "postiveCount": posCount, "neutralCount": neuCount, "score": score_lst }
def sentiment_emoji(emoji): try: sentiment = get_emoji_sentiment_rank(emoji)['sentiment_score'] if sentiment < -0.3: return '{emoji_neg}' elif sentiment < 0.3: return '{emoji_neu}' elif sentiment >= 0.3: return '{emoji_pos}' except: return '{emoji_na}'
def load_scores_emoji(): file = csv.reader(open("Emoji_Sentiment_Data_v1.0.csv", "r"), delimiter=',') for x in range(4): # strip header info next(file) emojis = { row[0]: float("{:.2f}".format( rescale( get_emoji_sentiment_rank(row[0])["sentiment_score"], -1, 1, 1, 9))) for row in file } return emojis
def compute_emoticon_score(emoticonList: list): """ Computes an emoticon score using emosent library Inputs : List of emoticons Outputs : Mean emoticon score for multiple emoji's, Score of 0 for tweets without emojis """ emoticon_score = [] for emoticon in emoticonList: try: emoticon_score.append( get_emoji_sentiment_rank(emoticon)["sentiment_score"]) except KeyError: emoticon_score.append(0) if len(emoticon_score) > 0: return sum(emoticon_score) / len(emoticon_score) else: return 0
def replace(text, placeholder_pos=' POS_EMOJI ', placeholder_neg=' NEG_EMOJI ', placeholder_net=' NETRAL_EMOI '): for str_ in text: if str_ in emoji.UNICODE_EMOJI: try: score = get_emoji_sentiment_rank( str_)['sentiment_score'] except KeyError: # text = text.replace(str_, placeholder_net) text = text.replace(str_, '') continue if score > 0: text = text.replace(str_, placeholder_pos) else: text = text.replace(str_, placeholder_neg) return text
def load_scores(): file1 = csv.reader(open("Hedonometer.csv", "r"), delimiter=',') for x in range(4): # strip header info next(file1) file = csv.reader(open("Emoji_Sentiment_Data_v1.0.csv", "r"), delimiter=',') for x in range(4): # strip header info next(file) words = {row[1]: float(row[3]) for row in file1} emojis = { row[0]: float("{:.2f}".format( rescale( get_emoji_sentiment_rank(row[0])["sentiment_score"], -1, 1, 1, 9))) for row in file } return {**words, **emojis}
def get_emoji_sentiment(emoji): try: return get_emoji_sentiment_rank(emoji)['sentiment_score'] except KeyError: # handle unknown emoji return 0.5