编写python程序直接解决传入文件进行词频统计的问题,同样要求实现根据频数从大到小排序的功能,能够正确读取识别中英文混合的txt文件,并记录map与reduce的运行时间和总时间
时间: 2025-01-01 16:37:31 浏览: 10
在Python中,我们可以使用内置模块`collections`的`Counter`类来快速统计词频,并利用`sorted`函数配合lambda表达式来按频率降序排列单词。同时,我们还可以使用`timeit`模块来测量`map`、`reduce`操作以及整个流程的运行时间。
下面是一个简单的示例程序:
```python
import collections
import time
import re
def word_frequency(file_path):
# 读取文本文件
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read()
# 使用正则表达式处理中英文混合内容,将文本拆分成单词列表
words = re.findall(r'\b\w+\b', text)
# 使用Counter计算词频
start_time_map = time.time()
freq_counter = collections.Counter(words)
map_time = time.time() - start_time_map
# 按照频率降序排序
sorted_freq = sorted(freq_counter.items(), key=lambda x: x[1], reverse=True)
return sorted_freq, map_time
# 测试文件路径
file_path = "your_file.txt"
word_list, map_reduce_time = word_frequency(file_path)
print(f"词频统计结果:{word_list}")
print(f"Map操作时间:{map_reduce_time}秒")
total_time = time.time() - start_time_map
print(f"总时间(包括Map和排序):{total_time}秒")
阅读全文