Python 根据推文的数据帧行以列形式输出维德情绪分数

Python 根据推文的数据帧行以列形式输出维德情绪分数,python,pandas,vader,Python,Pandas,Vader,我有一个数据框,其中包含几行推特,我想使用维德情绪分析,根据每行的内容创建4列分数“积极”、“消极”、“中性”和“复合” 我查了不同的帖子,但我无法找出我的确切情况。提前谢谢你 像这样的方法应该会奏效: analyzer = SentimentIntensityAnalyzer() df['rating'] = df['tweets'].apply(analyzer.polarity_scores) pd.concat([df.drop(['rating'], axis=1), df['rati

我有一个数据框,其中包含几行推特,我想使用维德情绪分析,根据每行的内容创建4列分数“积极”、“消极”、“中性”和“复合”


我查了不同的帖子,但我无法找出我的确切情况。提前谢谢你

像这样的方法应该会奏效:

analyzer = SentimentIntensityAnalyzer()
df['rating'] = df['tweets'].apply(analyzer.polarity_scores)
pd.concat([df.drop(['rating'], axis=1), df['rating'].apply(pd.Series)], axis=1)

事实上,我找到了一个简单的解决方案,可以通过列表理解来解决任何面临相同问题的人:

analyzer = SentimentIntensityAnalyzer()
df['compound'] = [analyzer.polarity_scores(x)['compound'] for x in df['tweet']]
df['neg'] = [analyzer.polarity_scores(x)['neg'] for x in df['tweet']]
df['neu'] = [analyzer.polarity_scores(x)['neu'] for x in df['tweet']]
df['pos'] = [analyzer.polarity_scores(x)['pos'] for x in df['tweet']]

我在Python3中使用维德进行了同样类型的情绪分析。看一看,你可能会发现一种方法,如何可能执行你需要的

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
import time
analyzer = SentimentIntensityAnalyzer()

pos_count = 0
pos_correct = 0

with open("D:/Corona_Vac/pythonprogramnet/Positive BOW.txt","r") as f:
    for line in f.read().split('\n'):
        vs = analyzer.polarity_scores(line)
        if not vs['neg'] > 0.1:
            if vs['pos']-vs['neg'] > 0:
                pos_correct += 1
            pos_count +=1


neg_count = 0
neg_correct = 0

with open("D:/Corona_Vac/pythonprogramnet/Positive BOW.txt","r") as f:
    for line in f.read().split('\n'):
        vs = analyzer.polarity_scores(line)
        if not vs['pos'] > 0.1:
            if vs['pos']-vs['neg'] <= 0:
                neg_correct += 1
            neg_count +=1

print("Positive accuracy = {}% via {} samples".format(pos_correct/pos_count*100.0, pos_count))
print("Negative accuracy = {}% via {} samples".format(neg_correct/neg_count*100.0, neg_count))
来自vadertouction.vadertouction导入感伤强度分析器
导入时间
analyzer=analyzer()
位置计数=0
位置正确=0
打开(“D:/Corona\u Vac/pythonprogramnet/Positive BOW.txt”,“r”)作为f:
对于f.read().split('\n')中的行:
vs=分析仪极性得分(直线)
如果不是vs['neg']>0.1:
如果vs['pos']-vs['neg']>0:
位置正确+=1
位置计数+=1
负计数=0
不正确=0
打开(“D:/Corona\u Vac/pythonprogramnet/Positive BOW.txt”,“r”)作为f:
对于f.read().split('\n')中的行:
vs=分析仪极性得分(直线)
如果不是vs['pos']>0.1:

如果vs['pos']-vs['neg']感谢您提供的易于使用的解决方案。谢谢,这正是我想要的。