2016-08-08 7 views
-1

Я использую vader sentiment для анализа CSV-файлов, содержащих твиты. Я пытаюсь получить среднее значение для каждого из значений настроений для всего набора твитов. По некоторым причинам многие результаты, как правило, выходят со значениями 0, что не имеет смысла, если это не проблема округления. Кроме Len (результат [I]) всегда возвращает 1. Мой код выглядит следующим образом:Значения Vader Sentiment не отображаются правильно

for row in csv.reader(csv_file): 
    result = { 'pos':[] , 'neg':[], 'compound':[], 'neu':[] } 
    sentences = row 
    f = open(file_name[0], 'a', newline='') 
    writer = csv.writer(f) 
    for sentence in sentences: 
     vs = vaderSentiment(sentence) 
     row = [sentence, str(vs)] 
     writer.writerow(row) 
     result['pos'].append(vs['pos']) 
     result['neg'].append(vs['neg']) 
     result['compound'].append(vs['compound']) 
     result['neu'].append(vs['neu']) 
print('sum:') 
for i in result.keys(): 
    print('\t',i, '=>', float(sum(result[i]))/len(result[i])) 
f.close() 
+0

Как очень приятно, что люди выбирают downvote и не предлагают никакой помощи или объяснения для этого. –

+0

Вы не указали свои входные данные или то, что вы ожидали в качестве вывода. Не там, где у вас есть функция 'vaderSentiment'. –

+0

Спасибо, это справедливо. В последнее время у меня было лицо, похорохованное в этом материале, поэтому я забыл, что это может быть неопределенным для некоторых людей. Vader Sentiment - популярный пакет анализа настроений в Python. Это довольно интересно, но на нем очень мало документации. –

ответ

0

Nevermind, я понял, что глупо размещения результата = { 'поз': [], 'отр': [], 'compound': [], 'neu': []}, где я не должен был так, чтобы он очищал данные на каждой итерации цикла. Я не могу поверить, что это заняло у меня столько времени, чтобы выяснить ...