Вывод оценок настроения Вейдера в столбцы на основе строк твитов в фрейме данных - PullRequest
0 голосов
/ 05 мая 2020

У меня есть фрейм данных, содержащий строки твитов, и я хотел бы создать 4 столбца с оценками «положительный», «отрицательный», «нейтральный» и «составной» на основе содержимого каждой строки с использованием анализа настроений Вейдера.

Я просмотрел разные сообщения, но не мог понять это для моего конкретного случая. Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 08 мая 2020

Я проделал такую ​​же работу, используя Вейдера для анализа настроений в python 3. Посмотрите, вы можете найти способ сделать то, что вам нужно.

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))

Надеюсь, вы может исправить. Спасибо

2 голосов
/ 05 мая 2020

Примерно так должно работать:

analyzer = SentimentIntensityAnalyzer()
df['rating'] = df['tweets'].apply(analyzer.polarity_scores)
pd.concat([df.drop(['rating'], axis=1), df['rating'].apply(pd.Series)], axis=1)
1 голос
/ 05 мая 2020

На самом деле я нашел простое решение, позволяющее сделать это через понимание списков для всех, кто сталкивается с той же проблемой:

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']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...