我尝试使用我以前的功能calculate_total_sentiment(tweet1):
,将推文分类为"very positive", "positive", "neutral, "negative"
和"very negative"
的不同类别。
现在我想使用group_by_sentiment
的这个新函数,它接受一个字符串列表,我想将它们归类为与我的calculate_total_sentiment
相同的类别。
我如何将它们整理出来?下面是我的calculate_total_sentiment
代码,它可以解决如何将这个功能实现到这个新功能并使其归入同一类别。
group_by_sentiment
的例子是
group_by_sentiment(['sad', '#notok'])
[[], [], [], [], ['sad', 'notok']]
其中列表的最后一个将包含所有非常负面的类别,而第一个是非常积极的
def calculate_total_sentiment(tweet1):
total = negative_word_score(tweet) + positive_word_score(tweet) + \
positive_hashtag_score(tweet) + negative_hashtag_score(tweet) + \
emoticon_score(tweet)
if total > 2:
return ("Very Positive")
elif total > 0:
return ("Positive")
elif total == 0:
return ("Neutral")
elif total > -3:
return ("Negative")
else:
return ("Very Negative")
def group_by_sentiment(L):
very_negative = []
negative = []
neutral = []
positive = []
very_positive = []
output = [very_positive, positive, neutral, negative, very_negative]
for char in range(len(L)):
if calculate_total_sentiment(tweet1) == 'Very Positive':
output[0].append(very_positive)
elif calculate_total_sentiment(tweet1) == 'Positive':
output[1].append(positive)
elif calculate_total_sentiment(tweet1) == 'Neutral':
output[2].append(neutral)
elif calculate_total_sentiment(tweet1) == 'Negative':
output[3].append(negative)
elif calculate_total_sentiment(tweet1) == 'Very Negative':
output[4].append(very_negative)
return output
答案 0 :(得分:0)
我不确定我完全理解你的问题,但是你有没有理由不使用字典(或者这个特例是defaultdict
):
from collections import defaultdict
def group_by_sentiment(L):
output = defaultdict(list)
for tweet in L:
output[calculate_total_sentiment(tweet)].append(tweet)]
return output
>>> group_by_sentiment(['sad', '#notok'])
defaultdict(list, {'Very Negative': ['sad', '#notok']})
您的代码显然还有许多其他问题,例如tweet
未在calculate_total_sentiment
中定义,因为arg被称为tweet1