想问一下如何利用python制作一个txt文件的词云图

我是初学者,想知道详细代码和每个代码的含义,谢谢大家。就是这些了,没别的但是必须大于三十字符,新年快乐

有用记得采纳


import cv2 as cv
import time
from os import path
from PIL import Image
import numpy as np
from wordcloud import WordCloud, ImageColorGenerator

# 将多个路径组合后返回
now_time = time.strftime("%Y_%m_%d_%H_%M_%S")
save_path = path.join('/sdb1/数据/知识/壁纸和文本/自定义壁纸', f"{now_time}.jpg")
# 读文本文件 词\t数量,若为文本则自动分词统计,
text = open('cloudwords.txt').read()
# 读取自定义图片,mask白色部分不会绘制,其余部分会用于绘制词云
mask_img = '1.jpg'  # 图形词云
alice_coloring = None  # np.array(Image.open(mask_img))
# 你可以通过 mask 参数 来设置词云形状
wc = WordCloud(background_color="white", max_words=2000,
               mask=alice_coloring, min_font_size=20, max_font_size=100, random_state=102, scale=4,
               relative_scaling=1, font_path="/sdb1/数据/知识/字体/手写体.ttf").generate(text)
wc.generate_from_text(text)
print('加载文本')
# 改变字体颜色
# img_colors = ImageColorGenerator(alice_coloring)
# 字体颜色为背景图片的颜色
# wc.recolor(color_func=img_colors)
wc.to_file(save_path)
print('生成词云成功!')
cv.imshow('', cv.resize(cv.imread(path.join('/sdb1/数据/知识/壁纸和文本/自定义壁纸', f"{now_time}.jpg")), (1920 // 4, 1080 // 4)))
cv.waitKey()
cv.destroyAllWindows()

这篇文章写的很详细,这种有很多博客都有详细介绍的,就不现在重新给你写一个了
https://blog.csdn.net/weixin_55798278/article/details/123961666

可以的,是否还有其他要求?

# 导入需要用到的库:wordcloud库(制作词云)、PIL库(显示图片)、jieba(中文分词)
import wordcloud
from PIL import Image
import jieba

# 准备文本,这里以余光中《等你,在雨中》为例
text = '''等你, 在雨中, 在造虹的雨中
  蝉声沉落, 蛙声升起
  一池的红莲如红焰, 在雨中
  你来不来都一样, 竟感觉
  每朵莲都像你
  尤其隔着黄昏, 隔着这样的细雨
  永恒, 刹那, 刹那, 永恒
  等你, 在时间之外在时间之内,
  等你, 在刹那, 在永恒
  如果你的手在我的手里, 此刻
  如果你的清芬
  在我的鼻孔, 我会说, 小情人
  诺, 这只手应该采莲, 在吴宫
  这只手应该
  摇一柄桂浆, 在木兰舟中
  一颗星悬在科学馆的飞檐
  耳坠子一般的悬着
  瑞士表说都七点了忽然你走来
  步雨后的红莲, 翩翩, 你走来
  像一首小令
  从一则爱情的典故里你走来
  从姜白石的词里, 有韵地, 你走来'''

# 设置停用词
s = set(wordcloud.STOPWORDS)
# 增加停用词
s.add('的')
s.add('在')

# 中文分词,将文本转换为词的形式
lst = jieba.lcut(text)
# 连接各个次,转换为可词云文件
t = ' '.join(lst)
# 设置字体
mac = 'PingFang.ttc'
win = 'simhei.ttf'

# 创建词云对象。width为图片宽度,height为图片高度,stopwords为停用词,font_path为字体(win系统填win,mac系统填mac)
word_cloud = wordcloud.WordCloud(
      width=1000,
      height=600,
      stopwords=s, 
      font_path=win
)
# 绘制词云
word_cloud.generate(t)
# 保存图片
word_cloud.to_file('wordcloud.png')

# 打开图片
photo = Image.open('wordcloud.png')
# 显示图片
photo.show()

运行结果:

img

望采纳。

请见本人的刚刚写的一篇文章:【NLP开发】Python实现词云图

(1)安装python库

pip install wordcloud  #这是WordCloud的库
pip install matplotlib #显示图像

(2)命令行直接生成
wordcloud_cli --text d:\jianai.txt --imagefile wordcloud.png

img

(3)代码生成


# _*_ coding:utf-8 _*_
import os
from os import path
from wordcloud import WordCloud
 
## 读取文本txt的内容
text = open( r'd:\\西游记.txt' , 'r',encoding='UTF-8').read()
 
# 生成词云对象
wc = WordCloud(
        scale=2,           #缩放系数
        max_font_size=100,  #最大字号
        font_path="C:\\Windows\\Fonts\\simhei.ttf", 
        background_color='white'  #设置背景颜色
        )
 
# 从文本生成词云图
wc.generate(text)  
# 词云图保存为图片文件
wc.to_file('d:\\result.png') 

img

http://t.csdn.cn/duri8

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

上我的博客搜还有界面

可以参考一下

#图库引用
from PIL import Image
#识别库引用
import pytesseract as pt
#图形界面引用
import tkinter as tk
#路径引用
import tkinter.filedialog as filedialog
#我们先来尝试绘制一张简单的词云图,用到的Python当中的wordcloud模块来绘制,
import jieba
import np
from PIL import Image
from wordcloud import WordCloud
import matplotlib.pyplot as plt
#方法
class Application(tk.Tk):
    
    def __init__(self):
        super().__init__()
        self.title("图片文本提取")

        # r"" 的作用是去除转义字符
        pt.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
        #路径变量
        self.img_path = tk.StringVar()
        #布局
        self.frame = tk.Frame(self)
        self.frame.pack(padx=10, pady=10)
        #标签
        self.lbl_file = tk.Label(self.frame, text="图像")
        self.lbl_file.grid(row=0, column=0)
        #输入框布局
        self.txt_file = tk.Entry(self.frame, width=60, textvariable=self.img_path)
        self.txt_file.grid(row=0, column=1, sticky=tk.W)
        #button形式以及布局
        self.btn_file = tk.Button(self.frame, text="选择", command=self.sel_img_file)
        self.btn_file.grid(row=0, column=1, sticky=tk.E)
        #同上
        self.lbl_txt = tk.Label(self.frame, text="文本")
        self.lbl_txt.grid(row=1, column=0)        
        self.txt_exract = tk.Text(self.frame)
        self.txt_exract.grid(row=1, column=1)        
        self.btn_extract = tk.Button(self.frame, text="提取文本", command=self.extract_text)
        self.btn_extract.grid(row=2, column=1, sticky=tk.W+tk.E)        
        
    def sel_img_file(self):
        self.img_path.set(filedialog.askopenfilename(title="选择图片", initialdir="."))

    def extract_text(self):
        if self.img_path:
            img = Image.open(self.img_path.get())
            text = pt.image_to_string(img, lang="chi_sim")
            self.txt_exract.delete(1.0, tk.END)
            self.txt_exract.insert(tk.END, text)
            #我们导入文本内容,并且去除掉一下换行符和空格
            text = text.replace('\n',"").replace("\u3000","")
            text_cut = jieba.lcut(text)
            # 将分好的词用某个符号分割开连成字符串
                text_cut = ' '.join(text_cut)
            #结果当中或许存在着不少我们不需要看的、无关紧要的内容,这个时候就需要用到停用词了,我们可以自己来构建,
            #也可以直接使用别人已经构建好的停词表
            stop_words = open(r"D:\thonny娱乐\常见中文停用词表.txt",encoding='utf8').read()
            text_cut = jieba.lcut(text)
            # 将分好的词用某个符号分割开连成字符串
            text_cut = ' '.join(text_cut)
            background = Image.open(r"D:\thonny娱乐\1.png")
            graph = np.array(background)
            # 使用WordCloud生成词云
            word_cloud = WordCloud(font_path="simsun.ttc",  # 设置词云字体
                                   background_color="white", # 词云图的背景颜色
                                   stopwords=stop_words, # 去掉的停词
                                   mask=graph)
            word_cloud.generate(text_cut)
            word_cloud.to_file("1.png")
if __name__ == "__main__":
    app = Application()
    app.mainloop()
    
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/628396966566178.png "#left")