You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.3 KiB

9 months ago
import string
from collections import Counter
from cppy.cp_util import *
9 months ago
################################
9 months ago
# data
9 months ago
################################
data = ''
9 months ago
words = []
word_freqs = []
9 months ago
################################
# procedures
################################
def read_file(path_to_file):
"""读取文件内容并赋值给全局变量data"""
9 months ago
global data
with open(path_to_file, encoding='utf-8') as f:
9 months ago
data = f.read()
9 months ago
def extractwords():
"""提取data中的单词并赋值给全局变量words"""
9 months ago
global data
global words
9 months ago
words = data.lower().split()
9 months ago
with open(stopwordfilepath) as f:
stop_words = set(f.read().split(','))
9 months ago
stop_words.update(string.ascii_lowercase)
words = [word for word in words if word not in stop_words]
def frequencies():
"""统计words中单词的频率并赋值给全局变量word_freqs"""
9 months ago
global words
global word_freqs
word_freqs.extend([(word, 1) for word in words])
def sort():
"""对word_freqs按照频率进行排序"""
global word_freqs
9 months ago
word_freqs = Counter(words).most_common()
if __name__ == "__main__":
read_file(testfilepath)
extractwords()
9 months ago
frequencies()
sort()
for tf in word_freqs[:10]:
print(tf[0], '-', tf[1])