使用Python对《西游记》进行分词、停用词过滤和词频统计,并利用wordCloud绘制词云,并对形状和颜色进行修改,背景格式设为孙悟空的形状。
时间: 2024-03-17 15:39:54 浏览: 257
好的,这是一个关于Python自然语言处理的问题,我会尽力回答你。
首先,我们需要安装相关的Python库,包括jieba、wordcloud、PIL等。可以使用以下命令进行安装:
```
pip install jieba
pip install wordcloud
pip install Pillow
```
接着,我们需要获取《西游记》的文本数据。这里我使用了网络上的一份TXT文件,可以使用以下代码进行下载:
```python
import urllib.request
url = 'https://raw.githubusercontent.com/ArcticZhao/ChineseNLP/master/data/xiyouji.txt'
urllib.request.urlretrieve(url, 'xiyouji.txt')
```
然后,我们可以使用jieba对文本进行分词,并过滤掉停用词。停用词是指在自然语言中频繁出现,但是对文本意义影响不大的词语,例如“的”、“了”、“是”等。可以使用以下代码进行分词和过滤:
```python
import jieba
import jieba.analyse
# 加载停用词
stopwords = []
with open('stopwords.txt', encoding='utf-8') as f:
for line in f:
stopwords.append(line.strip())
# 读取文本
with open('xiyouji.txt', mode='r', encoding='utf-8') as f:
text = f.read()
# 分词
words = jieba.cut(text)
# 过滤停用词
filtered_words = []
for word in words:
if word not in stopwords and word != '\n':
filtered_words.append(word)
```
接着,我们可以使用Python的collections库对词频进行统计,并将结果保存到一个字典中:
```python
from collections import Counter
# 统计词频
word_counts = Counter(filtered_words)
# 转化为字典
word_counts_dict = dict(word_counts)
```
最后,我们可以使用wordcloud库绘制词云。这里我选择了孙悟空的形状作为背景,并将词云的颜色设置为红色。可以使用以下代码进行绘制:
```python
from wordcloud import WordCloud
from PIL import Image
import numpy as np
# 加载背景图片
mask = np.array(Image.open('sunwukong.jpg'))
# 配置词云
wordcloud = WordCloud(
font_path='msyh.ttc', # 字体设置为微软雅黑
background_color='white', # 背景颜色设置为白色
mask=mask, # 设置背景图片
colormap='Reds', # 颜色设置为红色
max_words=200, # 最多显示前200个高频词
max_font_size=100, # 最大字体为100
width=800, # 词云图宽度
height=800, # 词云图高度
)
# 生成词云
wordcloud.generate_from_frequencies(word_counts_dict)
# 显示词云
image = wordcloud.to_image()
image.show()
```
这样,我们就完成了对《西游记》的分词、停用词过滤、词频统计和词云绘制。
阅读全文