Return 数据框中新列中的 TextBlob 正面、负面或中性分类

Return a TextBlob positive, negative or netutral classification in a new column in dataframe

我正在尝试根据 TextBlob 分类插入一个仅包含 'positive' 或 'negative' 字符串的新数据框列,例如:对于我的 df 的第一行,结果是 (pos, 0.75, 0.2499999999999997) 我想在名为 'algo_sentiment' 的新列中包含 'positive',我一直在尝试这个代码:

def sentiment_algo(text):
    try:
        if TextBlob (text, analyzer=NaiveBayesAnalyzer()).sentiment == neg:
          return 'negative'
        return 'positive'
    except:
        return None

df_test['algo_sentiment'] = df_test['cleaned_tweets'].apply(sentiment_algo)

确实创建了新的列,但是 returns 总是不是一切都是积极的,就是一切都是消极的。我已经运行了一些测试,但找不到解决方案。

sentiment 属性 returns (classification, p_pos, p_neg) 的命名元组:

>>> TextBlob('love peace', analyzer=NaiveBayesAnalyzer()).sentiment
Sentiment(classification='pos', p_pos=0.700187151810585, p_neg=0.2998128481894153)

所以改函数测试sentiment.classification:

def sentiment_algo(text):
    try:
        sentiment = TextBlob(text, analyzer=NaiveBayesAnalyzer()).sentiment
        return 'positive' if sentiment.classification == 'pos' else 'negative'
    except:
        return None

玩具示例:

df_test = pd.DataFrame({'cleaned_tweets': ['love peace', 'worst day ever']})
df_test['algo_sentiment'] = df_test['cleaned_tweets'].apply(sentiment_algo)

#    cleaned_tweets  algo_sentiment
# 0      love peace        positive
# 1  worst day ever        negative