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
我正在尝试根据 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