选择一部中文小说,比如四大名著,.txt 格式,字数不少于 10000 2. 切词,去掉停用词(如:的,了,我们,你们,这里……),进行词频统计; 3. 保存出现次数最多的前 200 个词,保存在:小说名字_词频.txt 中; 4. 绘制词云图并保存。 5. 代码用函数封装 6. 提交一个 word,包含程序源代码、词云图、保存后的词频文件截图
时间: 2024-01-26 13:03:18 浏览: 156
抱歉,作为一个语言模型,我无法执行您的要求。但是,我可以提供一些思路供您参考。
1. 选择一部中文小说,比如《红楼梦》,将其以 txt 格式保存到本地。
2. 导入 jieba 库,对小说进行切词,并去除停用词。具体代码如下:
```
import jieba
import jieba.analyse
import codecs
# 读取文本
with codecs.open('红楼梦.txt', 'r', 'utf-8') as f:
text = f.read()
# 切词并去除停用词
words = jieba.analyse.extract_tags(text, topK=10000, withWeight=True, allowPOS=('n', 'ns', 'vn', 'v'))
stop_words = set()
with codecs.open('stopwords.txt', 'r', 'utf-8') as f:
for line in f:
stop_words.add(line.strip())
words = [(word, weight) for word, weight in words if word not in stop_words]
```
其中,stopwords.txt 是一个包含中文停用词的文本文件,可以从网上下载。
3. 对词频进行统计,并取出出现次数最多的前 200 个词。具体代码如下:
```
from collections import Counter
# 统计词频
word_count = Counter(dict(words))
# 取出出现次数最多的前 200 个词
top_words = word_count.most_common(200)
# 保存到文件
with codecs.open('红楼梦_词频.txt', 'w', 'utf-8') as f:
for word, count in top_words:
f.write(f'{word}\t{count}\n')
```
4. 使用 wordcloud 库绘制词云图,并保存到本地。具体代码如下:
```
import matplotlib.pyplot as plt
from wordcloud import WordCloud
# 生成词云图
wordcloud = WordCloud(background_color='white', width=1000, height=800, font_path='simhei.ttf').fit_words(word_count)
# 显示词云图
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
# 保存词云图
wordcloud.to_file('红楼梦_词云图.png')
```
其中,simhei.ttf 是一个中文字体文件,可以从网上下载。
5. 将以上代码封装成一个函数,调用函数即可生成词频文件和词云图。具体代码如下:
```
import jieba
import jieba.analyse
import codecs
from collections import Counter
import matplotlib.pyplot as plt
from wordcloud import WordCloud
def generate_wordcloud(novel_name):
# 读取文本
with codecs.open(novel_name, 'r', 'utf-8') as f:
text = f.read()
# 切词并去除停用词
words = jieba.analyse.extract_tags(text, topK=10000, withWeight=True, allowPOS=('n', 'ns', 'vn', 'v'))
stop_words = set()
with codecs.open('stopwords.txt', 'r', 'utf-8') as f:
for line in f:
stop_words.add(line.strip())
words = [(word, weight) for word, weight in words if word not in stop_words]
# 统计词频
word_count = Counter(dict(words))
# 取出出现次数最多的前 200 个词
top_words = word_count.most_common(200)
# 保存到文件
with codecs.open(f'{novel_name[:-4]}_词频.txt', 'w', 'utf-8') as f:
for word, count in top_words:
f.write(f'{word}\t{count}\n')
# 生成词云图
wordcloud = WordCloud(background_color='white', width=1000, height=800, font_path='simhei.ttf').fit_words(word_count)
# 显示词云图
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
# 保存词云图
wordcloud.to_file(f'{novel_name[:-4]}_词云图.png')
```
6. 在 main 函数中调用 generate_wordcloud 函数,传入小说名字即可生成词频文件和词云图。具体代码如下:
```
if __name__ == '__main__':
generate_wordcloud('红楼梦.txt')
```
执行以上代码后,会生成一个红楼梦_词频.txt 文件和一个红楼梦_词云图.png 文件,分别保存了红楼梦的词频统计和词云图。
阅读全文