Я возился с несколькими различными алгоритмами для анализа настроений в тексте. Пока что все были белки, кроме одного. Похоже, что это довольно точно.
from nltk.sentiment.vader import SentimentIntensityAnalyzer
sid = SentimentIntensityAnalyzer()
df['sentiment'] = df['review_text'].apply(lambda x: sid.polarity_scores(x))
Это дает мне результаты словаря, например:
{'neg': 0.315, 'neu': 0.593, 'pos': 0.093, 'compound': -0.7178}
{'neg': 0.215, 'neu': 0.556, 'pos': 0.229, 'compound': 0.0516}
{'neg': 0.373, 'neu': 0.133, 'pos': 0.493, 'compound': 0.2263}
{'neg': 0.242, 'neu': 0.547, 'pos': 0.211, 'compound': -0.1027}
{'neg': 0.31, 'neu': 0.69, 'pos': 0.0, 'compound': -0.6597}
Я пытаюсь выяснить, как оценить последнее число в каждом строку (-0,7178, 0,0516, 0,2263, -0,1027, -0,6597) и примените следующие логи c:
If compound <= 0 Then negative
ElseIf compound > .2 Then positive
Else neutral
Я попытался найти подстроку в словаре, например:
sub = '''compound':'''
df['Indexes'] = df['sentiment'].str.find(sub)
df
Я думал о поиске позиции, затем набрал последний номер и запустил логи c, описанные выше. Я начинаю думать, что это не правильный подход. Как лучше всего решить эту проблему?