通过该实验,使学生掌握列表、字典、函数的使用方式,能够熟练运用for循环语句、while循环语句和if判断语句来进行词语处理,实现英文或中文单词分解,并掌握格式化输出的相关方法。 实验要求1(和实验2,二选一): 1、实现对英文文本文件的读取(hamlet.txt); 2、实现对英文文本文件的单词抽取; 3、实现对英文文本文件中出现频次最高的前10个单词的抽取,并降序输出; 4、(选做)实现对英文文本文件中出现频次最高的前10个名词的抽取,并降序输出(需要对单词进行筛选,使用nltk库效果会更好);写出完整代码
时间: 2024-02-23 19:57:50 浏览: 62
Python程序控制语句用法实例分析
下面是完整的Python代码,实现了对英文文本文件的读取、单词抽取、对英文文本文件中出现频次最高的前10个单词的抽取及降序输出、对英文文本文件中出现频次最高的前10个名词的抽取及降序输出。
```python
import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from collections import Counter
# 读取文件
with open('hamlet.txt', 'r') as file:
text = file.read()
# 单词抽取
words = word_tokenize(text)
# 去除停用词
stop_words = set(stopwords.words('english'))
words = [word for word in words if not word.lower() in stop_words]
# 统计单词出现次数
word_count = Counter(words)
# 排序并输出前10个单词及其出现次数
sorted_word_count = sorted(word_count.items(), key=lambda item: item[1], reverse=True)
print('Top 10 words:')
for i in range(10):
print(sorted_word_count[i][0], sorted_word_count[i][1])
# 提取名词
nouns = []
for word, pos in nltk.pos_tag(words):
if pos.startswith('N'):
nouns.append(word)
# 统计名词出现次数
noun_count = Counter(nouns)
# 排序并输出前10个名词及其出现次数
sorted_noun_count = sorted(noun_count.items(), key=lambda item: item[1], reverse=True)
print('Top 10 nouns:')
for i in range(10):
print(sorted_noun_count[i][0], sorted_noun_count[i][1])
```
在上面的代码中,我们首先使用nltk库进行单词抽取,并去除了停用词。然后,使用Python内置的Counter类进行单词出现次数的统计,并进行降序排序。接着,我们使用nltk库提取名词,并统计名词出现次数,同样进行了降序排序。最终,我们输出了前10个单词及其出现次数以及前10个名词及其出现次数。
阅读全文