红楼梦词云python代码
时间: 2023-09-23 07:07:06 浏览: 55
以下是使用Python生成《红楼梦》词云的示例代码:
```python
import jieba
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
# 读取文本文件
text = open('hongloumeng.txt', 'r', encoding='utf-8').read()
# 使用jieba进行中文分词
words = jieba.cut(text)
# 过滤停用词
stopwords = set(STOPWORDS)
stopwords.add('一回')
stopwords.add('不知')
stopwords.add('两个')
stopwords.add('什么')
stopwords.add('说道')
stopwords.add('听见')
stopwords.add('这里')
stopwords.add('进来')
stopwords.add('我们')
stopwords.add('你们')
stopwords.add('如今')
stopwords.add('知道')
stopwords.add('众人')
stopwords.add('那里')
stopwords.add('起来')
stopwords.add('姑娘')
stopwords.add('这个')
stopwords.add('出来')
stopwords.add('他们')
stopwords.add('自己')
stopwords.add('一面')
stopwords.add('只见')
stopwords.add('怎么')
stopwords.add('奶奶')
stopwords.add('太太')
stopwords.add('婆子')
stopwords.add('回来')
stopwords.add('不是')
stopwords.add('这样')
stopwords.add('只是')
stopwords.add('一时')
stopwords.add('不能')
stopwords.add('不敢')
stopwords.add('不好')
stopwords.add('一点')
stopwords.add('就是')
stopwords.add('不到')
stopwords.add('出去')
stopwords.add('一句')
stopwords.add('之后')
stopwords.add('心里')
stopwords.add('今日')
stopwords.add('一声')
stopwords.add('听说')
stopwords.add('咱们')
stopwords.add('这些')
stopwords.add('就要')
stopwords.add('下来')
stopwords.add('大家')
stopwords.add('不用')
stopwords.add('只得')
stopwords.add('不想')
stopwords.add('不由')
stopwords.add('一起')
stopwords.add('这么')
stopwords.add('这时')
stopwords.add('如何')
stopwords.add('不同')
stopwords.add('不再')
stopwords.add('一件')
stopwords.add('这话')
stopwords.add('不过')
stopwords.add('不禁')
stopwords.add('不免')
stopwords.add('不由得')
stopwords.add('不得')
stopwords.add('不曾')
stopwords.add('不肯')
stopwords.add('不敢想')
stopwords.add('不往')
stopwords.add('不像')
stopwords.add('不为')
stopwords.add('不识')
stopwords.add('不怕')
stopwords.add('不觉')
stopwords.add('不便')
stopwords.add('不由自主')
stopwords.add('不怎么')
stopwords.add('一下子')
stopwords.add('不成')
stopwords.add('也许')
stopwords.add('不好意思')
stopwords.add('不少')
stopwords.add('不比')
stopwords.add('不大')
stopwords.add('不然')
stopwords.add('不知道')
stopwords.add('不得不')
stopwords.add('不会')
stopwords.add('不要紧')
stopwords.add('不必')
stopwords.add('不敢当')
stopwords.add('不过是')
stopwords.add('不理')
stopwords.add('不妨')
stopwords.add('不出')
stopwords.add('不用说')
stopwords.add('不然的话')
stopwords.add('不可')
stopwords.add('不免让人')
stopwords.add('不如')
stopwords.add('不得已')
stopwords.add('不在乎')
stopwords.add('不过如此')
stopwords.add('不妨碍')
stopwords.add('也好')
stopwords.add('不依')
stopwords.add('不再说')
stopwords.add('不比之下')
stopwords.add('不但')
stopwords.add('不到位')
stopwords.add('不尽')
stopwords.add('不妨说')
stopwords.add('不挂')
stopwords.add('不同意')
stopwords.add('不止')
stopwords.add('不留')
stopwords.add('不是不')
stopwords.add('不成问题')
stopwords.add('不见得')
stopwords.add('不祥')
stopwords.add('不问')
stopwords.add('不耐')
stopwords.add('不就行了')
stopwords.add('不免有')
stopwords.add('不毛')
stopwords.add('不易')
stopwords.add('不然的话')
stopwords.add('不成体系')
filtered_words = []
for word in words:
if word not in stopwords:
filtered_words.append(word)
# 基于文本生成词云
mask = np.array(Image.open('hongloumeng.png'))
wc = WordCloud(background_color='white', font_path='msyh.ttc', mask=mask, max_font_size=100, min_font_size=10)
wc.generate(' '.join(filtered_words))
# 显示词云
plt.figure(figsize=(10, 10))
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
```
说明:
- 代码中使用了jieba进行中文分词,需要先安装jieba库。
- stopwords是停用词集合,用于过滤一些无意义的词汇。在这里,我们添加了一些《红楼梦》中常出现但无实际意义的词汇。
- 词云使用了《红楼梦》的封面作为掩模(mask),通过指定mask参数可以将词云形状限制在指定图形内。在这里,我们使用了一张红楼梦的图片。
- 最后用matplotlib显示生成的词云。