Как распечатать оценку валентности для каждого словаря в вейдере?

Я пытаюсь напечатать оценку валентности для каждого лексикона (слова) в предложении, используя vader, но в процессе я запутался. Я могу сортировать слова в предложении на положительные, отрицательные и нейтральные с помощью вейдера. Я также хочу напечатать оценку валентности. Как к этому подойти?

sid = SentimentIntensityAnalyzer()
pos_word_list=[]
neu_word_list=[]
neg_word_list=[]

for word in tokenized_sentence:
    if (sid.polarity_scores(word)['compound']) >= 0.1:
        pos_word_list.append(word)
        sid.score_valence(word)
    elif (sid.polarity_scores(word)['compound']) <= -0.1:
        neg_word_list.append(word)
    else:
      neu_word_list.append(word)                

print('Positive:',pos_word_list)        
print('Neutral:',neu_word_list)    
print('Negative:',neg_word_list) 
score = sid.polarity_scores(sentence)
print('\nScores:', score)

Это код, который я видел здесь. Я хочу напечатать это как

Positive: ['happy', 1.3]
Neutral: ['paper', 0, 'too', 0, 'much', 0]
Negative: ['missed', -1.2, 'stupid', -1.9]

Scores: {'neg': 0.491, 'neu': 0.334, 'pos': 0.175, 'compound': -0.5848}

таким образом показывая, что слово «счастливый» имеет в предложении 1,3 балла валентности.


person k_d_11    schedule 23.01.2021    source источник


Ответы (1)


Было бы здорово, если бы вы могли предоставить предложение, которое вы использовали для своего кода. Однако я привел предложение, которое вы можете заменить своим предложением.

Взгляните на мой исходный код:

import nltk
from nltk.tokenize import word_tokenize, RegexpTokenizer
from nltk.sentiment.vader import SentimentIntensityAnalyzer
 
Analyzer = SentimentIntensityAnalyzer()
 
sentence = 'Make sure you stay happy and less doubtful'
 
tokenized_sentence = nltk.word_tokenize(sentence)
pos_word_list=[]
neu_word_list=[]
neg_word_list=[]
 
for word in tokenized_sentence:
    if (Analyzer.polarity_scores(word)['compound']) >= 0.1:
        pos_word_list.append(word)
        pos_word_list.append(Analyzer.polarity_scores(word)['compound'])
    elif (Analyzer.polarity_scores(word)['compound']) <= -0.1:
        neg_word_list.append(word)
        neg_word_list.append(Analyzer.polarity_scores(word)['compound'])
    else:
        neu_word_list.append(word)
        neu_word_list.append(Analyzer.polarity_scores(word)['compound'])

print('Positive:',pos_word_list)
print('Neutral:',neu_word_list)
print('Negative:',neg_word_list) 
score = Analyzer.polarity_scores(sentence)
print('\nScores:', score)

Из того, что я понял из вашего вопроса, я предполагаю, что вы, возможно, ищете такой результат. Дай мне знать, если иначе.

ВЫХОД:

Positive: ['sure', 0.3182, 'happy', 0.5719]
Neutral: ['Make', 0.0, 'you', 0.0, 'stay', 0.0, 'and', 0.0, 'less', 0.0]
Negative: ['doubtful', -0.34]

Scores: {'neg': 0.161, 'neu': 0.381, 'pos': 0.458, 'compound': 0.5984}
person Steffi Keran Rani J    schedule 24.01.2021