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}'
Beispiel #3
0
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
Beispiel #5
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
Beispiel #6
0
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}
Beispiel #7
0
def get_emoji_sentiment(emoji):
    try:
        return get_emoji_sentiment_rank(emoji)['sentiment_score']
    except KeyError:  # handle unknown emoji
        return 0.5