使用gradio搭建一个简单的词云服务
1.词云服务的故事
在繁忙的都市中,有一家名为“词云”的创业公司,专注于为各类企业提供高效的云计算服务。词云公司凭借其前沿的技术和优质的服务,逐渐在竞争激烈的市场中脱颖而出。
公司创始人兼CEO JavaRoom,是一个对技术充满热情的年轻人。他坚信,云计算将会成为企业数字化转型的重要推动力。因此,他带领团队不断研发创新,力求为客户提供更加稳定、安全、高效的服务。
一天,JavaRoom接到了一个来自大型跨国企业——智远科技的合作意向书。JavaRoom科技对词云的服务表示出了浓厚的兴趣,并希望能够建立长期稳定的合作关系。这是一个难得的机会,李明知道,他必须全力以赴。
为了赢得这次合作,李明组织了一次团队会议,讨论如何更好地满足智远科技的需求。会议中,团队成员们纷纷发表了自己的看法和建议。
“我们可以为他们量身定制一套云计算解决方案,确保能够满足他们所有的业务需求。”技术部门的负责人王强提出了一个具体的方案。
“同时,我们还可以提供24小时的技术支持,确保他们的业务能够稳定运行。”客服部门的负责人张丽补充道。
JavaRoom认真听取了大家的意见,最后他决定采纳王强和张丽的建议,并亲自带领团队与智远科技进行深入沟通。
经过几轮紧张的谈判和讨论,词云最终与智远科技达成了合作协议。JavaRoom科技对词云的服务表示非常满意,并决定长期合作。
这次成功的合作不仅为词云带来了可观的收益,更让李明和他的团队信心倍增。他们知道,只要坚持创新和优质服务,词云一定能够在云计算领域取得更大的成功。
2.依赖
主要就是gradio和wordcloud。
pip install gradio wordcloud
3.代码实现
注释很齐全了,主要是
- process实现根据输入的文本或文本文件,mask图生成词云图
- 使用gradio.Blocks实现展示
具体如下:
import gradio as gr
import wordcloud
import numpy as np
def process(text, filepath, mask_img):
"""
生成词云并保存为图片
Args:
text (str): 文本内容
filepath (str): 文件路径
mask_img (PIL.Image.Image): 掩膜图像
Returns:
str: 保存词云图片的文件名
"""
# 读取mask图像
mask = np.array(mask_img)
# 创建词云
wc = wordcloud.WordCloud(background_color="white", max_words=2000, mask=mask)
if len(text) == 0:
# 打开文件
print(filepath)
with open(filepath, 'r') as file:
# 逐行读取并打印
for line in file:
# print(line, end='') # 默认情况下,print会在每行末尾添加换行符,这里使用end=''来避免这个行为
text += line
wc.generate(text)
# 返回图像
wc.to_file("output_image.png")
return "output_image.png"
# 创建Gradio界面
with gr.Blocks(css="footer {visibility: hidden}") as demo:
with gr.Row():
gr.HTML(value="""<h1 align="center">词云服务</h1>""")
with gr.Row():
with gr.Column():
text = gr.Textbox(label="文本框输入【优先】")
file = gr.File(label="文本输入")
mask = gr.Image(label="上传Mask图像")
with gr.Column():
output_image = gr.Image(label="词云输出")
with gr.Row():
send_btn = gr.Button("❤️❤️❤️Submit❤️❤️❤️")
clear_btn = gr.Button("😍😍😍Clear😍😍😍")
send_btn.click(process, inputs=[text, file, mask], outputs=[output_image])
clear_btn.click(lambda _: (None, None, None, None), inputs=clear_btn, outputs=[text, file, mask, output_image])
with gr.Row():
examples = [
[
"",
"alice_license.txt",
"alice_mask.png" # 替换为你的mask图像路径
]
]
gr_examples = gr.Examples(examples=examples,
label="输入示例 (点击选择例子)",
inputs=[text, file, mask],
examples_per_page=20)
demo.launch()
4.效果
效果如下,这样就避免了收费词云服务了,自己想什么时候用就什么时候用。