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.

34 lines
975 B

9 months ago
from collections import Counter
import cppy.cp_util as util
def word_frequency( top_n=10 ):
def decorator(func):
def wrapper(*args, **kwargs):
# 执行被装饰的函数
result = func(*args, **kwargs)
# 初始化词频计数器
word_counts = Counter()
# 分词并计数
for word in util.extract_str_words(result):
word_counts[word] += 1
# 输出所有词的频率最高的n个词
most_common = word_counts.most_common(top_n)
for w, count in most_common:
print(f"{w} - {count}")
return result
return wrapper
return decorator
# 使用装饰器
@word_frequency( top_n=10 )
def read_file(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
return file.read()
read_file( util.testfilepath )