qq632280928 发表于 2023-5-29 16:05

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:09

本帖最后由 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

dreamrise 发表于 2023-6-6 15:25

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
```

PengXP 发表于 2023-5-29 20:07

感谢楼主开源精神

wu_yang007 发表于 2023-5-30 00:00

本帖最后由 wu_yang007 于 2023-5-30 00:02 编辑

奇数偶数加个判断控制方向就更好了

kaisen868 发表于 2023-5-30 00:06

挺有意思的,原来原理是这样的。感谢分享。

xm65R 发表于 2023-5-30 07:51

非常感谢

cao777 发表于 2023-5-30 08:33

不错的东西 我试一下看看效果

cao777 发表于 2023-5-30 08:53

本帖最后由 cao777 于 2023-5-30 09:44 编辑

很不错~
已经实现了
有没有办法把这些词分类呢?
例如
菩萨:神仙
观音:神仙
狐狸精:妖怪
小贩:人类
...

szkgoo 发表于 2023-5-31 07:43

感谢分享

Sogrey 发表于 2023-6-1 22:04

很不错的东西啊,下来研究下
页: [1] 2 3
查看完整版本: python导入txt数据-生成词频+词云图