定义一个类,可以对输入的文章进行统计,要求实现以下几个方法: 1. 统计出各个单词出现的次数和频率 2. 查看出现频率最多的前10个单词 3. 输入单词能够得到单词的出现次数和频率
时间: 2023-03-24 19:00:55 浏览: 170
统计字符串中每个单词出现的个数和频率—-四种方法
好的,以下是对您提出的问题的回答:
1. 定义一个类,可以对输入的文本进行统计,包括每个单词出现的次数和频率:
```
class TextStatistics:
def __init__(self, text):
self.word_dict = {}
self.total_words = 0
words = text.split()
for word in words:
if word in self.word_dict:
self.word_dict[word] += 1
else:
self.word_dict[word] = 1
self.total_words += 1
def get_word_count(self, word):
return self.word_dict.get(word, 0)
def get_word_frequency(self, word):
return self.word_dict.get(word, 0) / self.total_words
```
在这个类中,我们使用一个字典来存储每个单词出现的次数,并且在初始化时将文本分割成单词。get_word_count方法返回单词出现的次数,get_word_frequency方法返回单词出现的频率(次数除以总单词数)。
2. 要查看出现频率最高的前10个单词,我们可以使用Python中的collections.Counter类:
```
import collections
class TextStatistics:
def __init__(self, text):
self.word_dict = collections.Counter(text.split())
self.total_words = sum(self.word_dict.values())
def get_word_count(self, word):
return self.word_dict.get(word, 0)
def get_word_frequency(self, word):
return self.word_dict.get(word, 0) / self.total_words
def get_top_10_words_by_frequency(self):
return self.word_dict.most_common(10)
```
在这个类中,我们使用collections.Counter类来代替手动创建字典,并且将total_words计算方法改为使用Counter类的values方法求和。get_top_10_words_by_frequency方法使用Counter类的most_common方法来获取出现频率最高的前10个单词。
3. 要获取输入单词的出现次数和频率,只需要在get_word_count和get_word_frequency方法中传递单词参数即可:
```
import collections
class TextStatistics:
def __init__(self, text):
self.word_dict = collections.Counter(text.split())
self.total_words = sum(self.word_dict.values())
def get_word_count(self, word):
return self.word_dict.get(word, 0)
def get_word_frequency(self, word):
return self.word_dict.get(word, 0) / self.total_words
def get_top_10_words_by_frequency(self):
return self.word_dict.most_common(10)
```
在这个类中,我们没有做任何修改,您可以使用get_word_count和get_word_frequency方法来获取输入单词的出现次数和频率。
阅读全文