我有一系列文本,它们是自定义 WebText 类的实例。每个文本都是一个具有等级(-10 到 +10)和与之关联的字数(nltk.FreqDist)的对象:
>>trainingTexts = [WebText('train1.txt'), WebText('train2.txt'), WebText('train3.txt'), WebText('train4.txt')]
>>trainingTexts[1].rating
10
>>trainingTexts[1].freq_dist
<FreqDist: 'the': 60, ',': 49, 'to': 38, 'is': 34,...>
您现在如何获得两个列表(或字典),其中包含仅在正面评价文本中使用的每个单词(trainingText[].rating>0),另一个列表包含仅在负面文本中使用的每个单词(trainingText[].rating< 0)。并让每个列表包含所有正面或负面文本的总字数,这样你就会得到这样的结果:
>>only_positive_words
[('sky', 10), ('good', 9), ('great', 2)...]
>>only_negative_words
[('earth', 10), ('ski', 9), ('food', 2)...]
我考虑过使用集合,因为集合包含唯一的实例,但我看不出如何使用 nltk.FreqDist 来完成,而且最重要的是,集合不会按词频排序。有任何想法吗?