VaderSentiment:表情符号分析器在 Jupyter Notebook 中不起作用

问题描述

我正在尝试对 r/wallstreetbets 内容进行一些情感分析,并且还想使用表情符号的含义。

这是我的代码

from nltk.sentiment.vader import SentimentIntensityAnalyzer

wsb_lingo = {
    "bullish": 4.0,"bearish": -4.0,"bagholder": -4.0,"BTFD": 4.0,"FD": 4.0,"diamond hands": 0.0,"paper hands": 0.0,"DD": 4.0,"GUH": -4.0,"pump": 4.0,"dump": -4.0,"gem stone": 4.0,# emoji
    "rocket": 4.0,# emoji
    "andromeda": 0.0,"to the moon": 4.0,"stonks": -4.0,"tendies": 4.0,"buy": 4.0,"sell": -4.0,"hold": 4.0,"short": 4.0,"long": 4.0,"overvalued": -4.0,"undervalued": 4.0,"calls": 4.0,"call": 4.0,"puts": -4.0,"put": -4.0,}

sid = SentimentIntensityAnalyzer()
sid.lexicon.update(wsb_lingo)

# Test
print(sid.polarity_scores('?'))
print(sid.polarity_scores('?'))

输出如下:

{'neg': 0.0,'neu': 0.0,'pos': 0.0,'compound': 0.0}
{'neg': 0.0,'compound': 0.0}

它怎么可能无法对表情符号表达任何情感(例如,由于 Jupyter Notebook)?我在这里忘记了什么吗?所有库都是最新的。

解决方法

如果我使用 vaderSentiment 而不是 nltk.sentiment.vader 它对我有用

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer

new = { "rocket": 4.0 }
sia = SentimentIntensityAnalyzer()
sia.polarity_scores('?')
# Outputs: {'neg': 0.0,'neu': 1.0,'pos': 0.0,'compound': 0.0}

sia.lexicon.update(new)
sia.polarity_scores('?')
# Outputs: {'neg': 0.0,'neu': 0.0,'pos': 1.0,'compound': 0.7184}

另见this issue