使用jupyternotebook编程:有一个压缩包“讲话思想数据库的副本.rar”,重要讲话文本数据库包含8个主题,每个主题包含若干讲话文本标题及具体时间。任选某一主题,做一个主题词云图,词云形状自定义,不能是默认形状要求:去除无意义的停用词,可视化图形美观、可读、准确。
时间: 2024-01-01 11:04:04 浏览: 113
好的,这个任务可以分为以下几个步骤:
1. 解压缩 "讲话思想数据库的副本.rar" 压缩包,获取讲话文本数据库文件
2. 从讲话文本数据库文件中选择一个主题,并读取该主题下的讲话文本标题及具体时间
3. 将讲话文本标题中的停用词去除,并统计每个关键词在标题中出现的次数
4. 生成词云图,形状自定义,美观、可读、准确
下面是一个基于Python的代码示例,您可以在Jupyter Notebook中执行该代码来完成任务:
```python
# 导入所需的库
import os
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 设置词云图形状
mask_path = "your_mask_image_path" # 自定义词云图形状的路径
# 选择一个主题,并读取该主题下的讲话文本标题及具体时间
topic = "your_topic_name" # 选择的主题名字
data_path = "path/to/your/database/file" # 数据库文件路径
titles = [] # 存储标题的列表
with open(data_path, "r", encoding="utf-8") as f:
for line in f:
if topic in line:
titles.append(line.strip().split("\t")[1]) # 提取标题
# 去除停用词,并统计每个关键词在标题中出现的次数
stopwords_path = "path/to/your/stopwords/file" # 停用词文件路径
stopwords = set()
with open(stopwords_path, "r", encoding="utf-8") as f:
for word in f:
stopwords.add(word.strip())
word_counts = {}
for title in titles:
words = jieba.cut(title)
for word in words:
if word not in stopwords:
word_counts[word] = word_counts.get(word, 0) + 1
# 生成词云图
cloud = WordCloud(font_path="path/to/your/font/file", mask=plt.imread(mask_path),
background_color="white", max_words=50).generate_from_frequencies(word_counts)
plt.imshow(cloud, interpolation="bilinear")
plt.axis("off")
plt.show()
```
需要注意的是,上述代码中需要替换的部分有:
- `your_mask_image_path`:自定义词云图形状的路径,需要设置为您想要的词云形状的图片路径
- `your_topic_name`:选择的主题名字,需要替换为您选择的主题名字
- `path/to/your/database/file`:数据库文件路径,需要替换为您的讲话文本数据库文件路径
- `path/to/your/stopwords/file`:停用词文件路径,需要替换为您的停用词文件路径
- `path/to/your/font/file`:字体文件路径,需要替换为您选择的字体文件路径
另外,需要安装以下库:
- jieba:用于中文分词
- wordcloud:用于生成词云图
- matplotlib:用于可视化
阅读全文