美文网首页编程小白奋斗史
Python wordcloud 中英文词云

Python wordcloud 中英文词云

作者: alles_gute | 来源:发表于2018-08-23 14:32 被阅读0次

碎碎念

刚刚开始学习python,觉得好玩就编了一个还挺友好的中英文词云小程序,用起来还算是方便,也还算是比较友好哒~
使用到了wordcloud库和jieba库(装wordcloud库的时候老出错,又不想加个c++。。后来才弄明白,原来是要经过编译才能用,从UCI页面上面找到对应的文件下载下来以后,把文件copy到python的文件夹里,再pip安装就好了~)  
说不定以后就能用上呢,嘻嘻O(∩_∩)O  
(今天刚在 CSDN 上注册了,账号是 qq_41757468点击查看我在CSDN上写的博文 欢迎大家批评指正,或是来找我一起交流学习呀~

使用效果

词汇出现的次数越多,字号就越大~


需要处理的文本(此处以英文为例,因为我觉得这个英文好看)
涉及的txt文件和py文件
程序运行ing~
最终的效果图

小程序使用流程

简书似乎不能用markdown画流程图欸。。。只能把自己CSDN上写的截图下来了(手动狗头)



python代码

#中英文词云
print("运行前请确保已经安装 jieba库!")
import jieba
import wordcloud
#选择处理
def bgSetting(bg_flag):
    if bg_flag=="1":
        bgcolor="white"
    elif bg_flag=="2":
        bgcolor="black"
    return bgcolor
def stopwordsSetting(ex_flag):
    if ex_flag=="1":
        print("请在此程序的源文件夹中建立:exclude.txt文件,并在该文本文件中输入需要排除的词汇,一行一个词汇!")
        ex_f=open("exclude.txt","r")
        ex_t=ex_f.read()
        stopwords=ex_t.split()
        ex_f.close()
    else:
        stopwords=[]
    return stopwords
def addwordsSsetting(add_flag):
    if add_flag=="1":
        print("请在此程序的源文件夹中建立:add.txt文件,并在该文本文件中输入需要添加的词汇,一行一个词汇!")
        add_f=open("add.txt","r")
        add_t=add_f.read()
        add_f.close()
        addwords=add_t.split()
    else:
        addwords=[]
    return addwords
#文档读写与处理
def readFile():
    f = open("data.txt", "r")
    t = f.read()
    f.close()
    return t
def ChineseWC(t):    
    add_flag=input("需要添加词汇请扣1,不需要添加词汇请按任意键继续:")
    addwords=addwordsSsetting(add_flag)  
    if addwords !=[]:
        for word in addwords:
            jieba.add_word(word)
    words = jieba.lcut(t)
    txt = " ".join(words)
    font="msyh.ttc"
    return txt,font
def EngWC(t):
    txt=t.replace("\n"," ")
    return txt
#输入
def getInputs():
    print("请将所需转换的TXT文件保存于此程序的源文件夹中,并且命名为:data.txt!")
    print("输出的图片名称为:result.png,将保存于此文件的源文件夹中!")
    w=int(input("请输入需要生成的图片宽度:"))
    h=int(input("请输入需要生成的图片高度:"))
    maxwords=int(input("请输入图片所含词汇的最大值:"))
    ex_flag=input("需要排除词汇请扣1,不需要排除词汇请按任意键继续:")
    bg_flag=input("需要生成白底图片请扣1,需要生成黑底图片请扣2:")
    while bg_flag!="1" and bg_flag!="2":
        bg_flag=input("需要生成白底图片请扣1,需要生成黑底图片请扣2,其他输入为无效输入!")
    language_flag=input("中文词云请扣1,英文词云请扣2:")
    while language_flag!="1" and language_flag!="2":
       language_flag=input("中文词云请扣1,英文词云请扣2,其他输入为无效输入!")
    bgcolor=bgSetting(bg_flag)
    stopwords=stopwordsSetting(ex_flag)
    return w,h,maxwords,stopwords,bgcolor,language_flag
#输出
def getImageC(w,h,bgcolor,font,maxwords,stopwords,txt):
    wc= wordcloud.WordCloud( \
        width =w, height =h,\
        background_color = bgcolor,\
        font_path =font,\
        max_words=maxwords,\
        stopwords=stopwords)
    wc.generate(txt)
    wc.to_file("result.png")
def getImageE(w,h,bgcolor,maxwords,stopwords,txt):
    wc= wordcloud.WordCloud( \
        width =w, height =h,\
        background_color = bgcolor,\
        max_words=maxwords,\
        stopwords=stopwords)
    wc.generate(txt)
    wc.to_file("result.png")
#主函数
def main():
    w,h,maxwords,stopwords,bgcolor,language_flag=getInputs()
    t=readFile()
    if language_flag=="1":
        txt,font=ChineseWC(t)
        getImageC(w,h,bgcolor,font,maxwords,stopwords,txt)
        print("Sucessfully")
    else:
        txt=EngWC(t)
        getImageE(w,h,bgcolor,maxwords,stopwords,txt)
        print("Sucessfully")
try:
    main()
except:
    print("TAT")

相关文章

网友评论

    本文标题:Python wordcloud 中英文词云

    本文链接:https://www.haomeiwen.com/subject/tlapiftx.html