三国演义词云
时间: 2023-07-27 18:07:22 浏览: 70
好的,我可以为您生成一个三国演义的词云,下面是生成词云的Python代码:
```python
# 导入需要的库
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud
# 读取三国演义文本
with open("sgyy.txt", "r", encoding="utf-8") as f:
sgyy_content = f.read()
# 使用 jieba 分词
sgyy_words = jieba.cut(sgyy_content)
# 将分词结果转换成字符串
sgyy_text = " ".join(sgyy_words)
# 生成词云
wc = WordCloud(width=800, height=400, background_color="white", font_path="msyh.ttc").generate(sgyy_text)
# 显示词云
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.show()
```
请确认您已经将三国演义的文本保存为`sgyy.txt`文件。如果您需要更改词云的大小、背景色、字体等参数,可以自行修改代码。
希望这个代码可以帮助到您。
相关问题
python三国演义词云
好的,关于Python三国演义词云,您可以使用jieba分词和wordcloud库来实现。具体步骤如下:
1. 读取三国演义文本文件,可以使用Python内置的open函数来打开文件并读取内容。
2. 使用jieba分词对文本进行分词处理,可以使用jieba库中的cut函数。
3. 对分词结果进行词频统计,可以使用Python内置的collections库中的Counter函数。
4. 使用wordcloud库生成词云图,可以设置词云图的形状、颜色、字体等参数。
以下是示例代码:
```python
import jieba
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 读取文本文件
with open('sgyy.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 分词处理
words = jieba.cut(text)
# 统计词频
word_counts = Counter(words)
# 生成词云图
wc = WordCloud(font_path='msyh.ttc', background_color='white', width=800, height=600, max_words=200, max_font_size=100)
wc.generate_from_frequencies(word_counts)
# 显示词云图
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
```
三国演义词云图python
以下是三国演义词云图的Python代码:
```python
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 读取文件
with open('threekingdoms.txt', 'r', encoding='utf-8') as f:
txt = f.read()
# 分词
words = jieba.lcut(txt)
# 去重
dupDict={'曹操' : ['孟德','丞相'],
'玄德' : ['刘备','皇叔','刘皇叔','玄德曰'],
'云长' : ['关羽','关云长','关公'],
'孔明' : ['诸葛亮','诸葛','孔明曰'],
'张飞' : ['翼徳'],
'赵云' : ['子龙','赵子龙'],
'周瑜' : ['公瑾','都督']}
ls = []
for i in words:
if len(i)==1:
continue
for key in dupDict:
if i in dupDict[key]:
i = key
ls.append(i)
words = ls
# 生成词云
wordcloud = WordCloud(font_path='simhei.ttf', background_color='white', width=800, height=600).generate(' '.join(words))
# 显示词云
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
# 输出词频最高的5个词
word_freq = {}
for word in words:
if word in word_freq:
word_freq[word] += 1
else:
word_freq[word] = 1
top_words = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)[:5]
print('词频最高的5个词:')
for word, freq in top_words:
print(word, freq)
```