python导入txt数据-生成词频+词云图
本帖最后由 qq632280928 于 2023-5-29 16:08 编辑之前做的爬虫,用到了词频分析+词云图现在代码分享给大家
导入txt数据,生成词频+词云图
如果词云图乱码就是缺少这个字体 'E:/msyh.ttc' 这个字体文件需要下载 自己百度下载就行
效果图
下面是代码
# 导入所需库
import jieba
import wordcloud
from collections import Counter
import matplotlib.pyplot as plt
# 读取txt文档
with open('E:/甄嬛传.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 使用jieba进行分词
words = jieba.cut(text)
# 统计词频
word_count = Counter()
for word in words:
if len(word) >= 2:# 仅统计长度大于等于2的词语
word_count += 1
# 获取词频前100的词汇
top100_words = word_count.most_common(100)
# 输出结果到txt文档
with open('甄嬛传词频.txt', 'w', encoding='utf-8-sig') as f:
for word, count in top100_words:
f.write(f'{word}: {count}\n')
# 生成词云图
wc = wordcloud.WordCloud(
width=800, height=600, background_color='white',
font_path='E:/msyh.ttc'# 使用微软雅黑字体
)
wc.generate_from_frequencies(word_count)
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
# 导出词云图
wc.to_file('甄嬛传词云图.png')
本帖最后由 javaxue 于 2023-5-29 21:11 编辑
库都安装了出现 D:\python\pythonProject1\venv\Scripts\python.exe D:/python/pythonProject1/main.py
File "D:\python\pythonProject1\main.py", line 15
word_count += 1
IndentationError: expected an indented block after 'if' statement on line 14
进程已结束,退出代码为 1
javaxue 发表于 2023-5-29 21:09
库都安装了出现 D:\python\pythonProject1\venv\Scripts\python.exe D:/python/pyth ...
原代码缩进有问题。```python
for word in words:
if len(word) >= 2:# 仅统计长度大于等于2的词语
word_count += 1
``` 感谢楼主开源精神 本帖最后由 wu_yang007 于 2023-5-30 00:02 编辑
奇数偶数加个判断控制方向就更好了
挺有意思的,原来原理是这样的。感谢分享。 非常感谢 不错的东西 我试一下看看效果 本帖最后由 cao777 于 2023-5-30 09:44 编辑
很不错~
已经实现了
有没有办法把这些词分类呢?
例如
菩萨:神仙
观音:神仙
狐狸精:妖怪
小贩:人类
... 感谢分享 很不错的东西啊,下来研究下