用python编写程序找出文档中出现次数前10多的单词或者人名。(最好是文学作品,英文要求单词最多,中文要求输出人名最多,哈姆雷特和三国演义除外)。要求程序可实际运行
时间: 2024-10-16 17:12:17 浏览: 56
对于英文文本,我们可以使用Python的`nltk`库来完成词频统计,然后选择最常见的10个单词。这里假设你已经有了一个文本文件:
```python
import nltk
from nltk.corpus import stopwords
from collections import Counter
# 加载停用词
stop_words = set(stopwords.words('english'))
def top_10_words(file_path):
# 读取文本内容
with open(file_path, 'r') as file:
text = file.read().lower()
# 分词
words = nltk.word_tokenize(text)
# 移除停用词
filtered_words = [word for word in words if word not in stop_words and word.isalpha()]
# 统计词频
word_counts = Counter(filtered_words)
# 获取最常出现的10个单词
most_common_words = word_counts.most_common(10)
print("Top 10 common words:")
for word, count in most_common_words:
print(f"{word}: {count}")
# 调用函数
top_10_words('your_text_file.txt')
```
请注意,你需要下载`punkt`和`stopwords`数据包:`nltk.download('punkt')` 和 `nltk.download('stopwords')`。
对于中文文本,我们可以使用jieba库来分词,并统计出现频率最高的名字:
```python
import jieba.analyse
import re
def top_10_names(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read()
# 使用正则表达式提取人名,这只是一个基本的模式匹配,实际需要更复杂的命名实体识别技术
names = re.findall(r'[A-Za-z\u4e00-\u9fa5]+', text)
# 统计人名频率
name_counts = Counter(names)
top_names = name_counts.most_common(10)
print("Top 10 common names:")
for name, count in top_names:
print(f"{name}: {count}")
# 调用函数
top_10_names('your_text_file.txt')
```
记得替换`'your_text_file.txt'`为你实际的文件路径。
阅读全文