python统计hamlet.txt中英文单词使用频率最高的前十个单词并排序写入到sor
时间: 2024-05-10 20:14:58 浏览: 192
你可以使用Python中的collections库来实现这个功能。以下是代码示例:
```python
import re
from collections import Counter
# 读取文件内容
with open('hamlet.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 使用正则表达式匹配单词
words = re.findall(r'\b\w+\b', text)
# 统计单词出现次数
word_count = Counter(words)
# 获取使用频率最高的前十个单词
top_words = word_count.most_common(10)
# 写入文件
with open('sort.txt', 'w', encoding='utf-8') as f:
for word, count in top_words:
f.write(f'{word}\t{count}\n')
```
这个代码会读取文件`hamlet.txt`中的内容,并使用正则表达式匹配出所有的单词。然后使用collections库中的Counter类统计每个单词出现的次数。最后获取使用频率最高的前十个单词,并将它们写入到文件`sort.txt`中,每行一个单词,格式为`单词\t出现次数`。
相关问题
python统计hamlet.txt中英文单词使用频率最高的前十个单词并排序写入到sort.txt中,需排除原文大小写,单词间的间隔多样性的差异对词频统计的干扰
这里是一个Python程序,可以实现您的需求:
```python
import re
from collections import Counter
# 读取文件内容
with open("hamlet.txt", "r", encoding="utf-8") as f:
text = f.read()
# 统一转换为小写字母
text = text.lower()
# 提取所有单词
words = re.findall(r'\b\w+\b', text)
# 统计单词出现次数并取前十个
top_words = Counter(words).most_common(10)
# 写入文件
with open("sort.txt", "w", encoding="utf-8") as f:
for word, count in top_words:
f.write(f"{word}: {count}\n")
```
说明:
1. 首先使用 `with` 语句打开文件,读取文件内容并保存在变量 `text` 中。
2. 然后将所有字符转换为小写字母,避免大小写的干扰。
3. 使用正则表达式 `r'\b\w+\b'` 提取所有单词,其中 `\b` 表示单词的边界,`\w+` 表示一个或多个字母数字字符。
4. 使用 `Counter` 类统计单词出现次数,并使用 `most_common()` 方法取前十个。
5. 最后使用 `with` 语句打开文件,将排序后的单词列表写入到文件中。
注意,这个程序只是一个简单的例子,没有考虑一些特殊情况,比如单词中包含连字符、缩写词等。如果需要处理这些情况,需要对正则表达式进行修改。
《哈姆雷特》是啥事毕业的一部经典悲剧作品,该作品对应的hamlet.txt,编写程序统计hamlet.txt中出现频率最高的前10个单词,并将结果用文件名"hamlet_词频统计.txt"保存,最后用词云图展示。编写程序的参考步骤如下: (1)读取hamlet.txt (2)对文本进行预处理,将文本中的字母全变为小写,然后去除标点符号等特殊符号,例如 " , ? - :\"等等 (3)将文本分词,统计单词出现的频率 (4)排除掉大多数冠词、代词、连接词等词语,例如 the and to of a be等 (5)按照单词出现的频率的降序排列,输出前10个单词机器出现的频率,将结果写入文件hamlet_词频统计.txt中 (6)用词云图展示词频。
好的,我已经明白你的问题了。下面是Python代码实现上述步骤,需要安装jieba和wordcloud库:
```python
import jieba
import re
from collections import Counter
from wordcloud import WordCloud
# 读取文件hamlet.txt
with open('hamlet.txt', 'r', encoding='UTF-8') as f:
text = f.read()
# 将文本中的字母全变为小写,然后去除标点符号等特殊符号
text = text.lower()
text = re.sub(r'[^\w\s]', '', text)
# 分词并统计单词出现频率
words = jieba.lcut(text)
exclude_words = ['the', 'and', 'to', 'of', 'a', 'be'] # 排除掉一些常见词
words = [word for word in words if word not in exclude_words]
word_counts = Counter(words)
# 按照单词出现的频率的降序排列,输出前10个单词及出现频率
word_freqs = word_counts.most_common(10)
with open('hamlet_词频统计.txt', 'w', encoding='UTF-8') as f:
f.write('单词\t\t频率\n')
for word, freq in word_freqs:
f.write(f'{word}\t\t{freq}\n')
# 用词云图展示词频
wordcloud = WordCloud(font_path='simhei.ttf', width=800, height=600, background_color='white')
wordcloud.generate_from_frequencies(word_counts)
wordcloud.to_file('hamlet_词云图.png')
```
运行上述代码,会生成一个名为"hamlet_词频统计.txt"的文件,里面记录了出现频率最高的前10个单词及其出现次数;同时还会生成一个名为"hamlet_词云图.png"的文件,展示了单词出现频率的词云图。
阅读全文