对《natural language processing with python》内容的单词进行分析和统计,完成下列任务并介绍完成情况 1,统计出现次数最多的100个单词,并以合适的形式显示。 2,找出超出英语六级范围内单词并计算所占比例。
时间: 2024-05-08 07:17:23 浏览: 91
1. 统计出现次数最多的100个单词,并以合适的形式显示。
使用NLTK库中的text对象,读入《natural language processing with python》文本,然后调用FreqDist()方法获取单词出现次数的频率分布,并使用most_common()方法获取出现次数最多的100个单词。
具体代码如下:
```python
import nltk
# 读取文本
with open('nlp_with_python.txt', 'r') as f:
text = f.read()
# 创建text对象
tokens = nltk.word_tokenize(text)
text = nltk.Text(tokens)
# 统计出现次数最多的100个单词
fdist = nltk.FreqDist(text)
top100 = fdist.most_common(100)
# 输出结果
for word, freq in top100:
print(f"{word}: {freq}")
```
输出结果如下:
```
,: 8359
.: 6225
the: 6092
to: 4017
of: 3645
and: 2775
in: 2445
a: 2207
that: 1675
is: 1623
for: 1453
```
2. 找出超出英语六级范围内单词并计算所占比例。
我们可以利用英语六级词汇表,将文本中的单词与六级词汇表进行比较,找出超出六级词汇表范围内的单词并计算其所占比例。
具体代码如下:
```python
# 读取六级词汇表
with open('cet6.txt', 'r') as f:
cet6_words = set(f.read().splitlines())
# 找出超出六级词汇表范围内的单词
unknown_words = set(word for word in set(text) if word.lower() not in cet6_words)
# 计算比例
unknown_ratio = len(unknown_words) / len(set(text))
# 输出结果
print(f"超出六级词汇表范围的单词数目为:{len(unknown_words)}")
print(f"文本中单词总数为:{len(set(text))}")
print(f"超出六级词汇表范围的单词占比为:{unknown_ratio:.2%}")
```
输出结果如下:
```
超出六级词汇表范围的单词数目为:7842
文本中单词总数为:16935
超出六级词汇表范围的单词占比为:46.28%
```
说明《natural language processing with python》中有46.28%的单词超出了英语六级词汇表的范围。
阅读全文