基于Python编写词云软件并显示分词结果
作者:微小冷
这篇文章主要为大家详细介绍了如何基于Python编写一个简单的词云制作软件并显示分词结果,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
显示分词结果
目前来说虽然实现了词云输出的功能,但词云创作的过程却被隐藏起来了,为了更加便于操作,需要一个显示分词结果的组件,这一点Text就完全可以胜任,故而在initWidgets
中添加
def initWidgets(self): # 前面不用动 frm = ttk.LabelFrame(self, text="分词结果") frm.pack(fill=tk.BOTH, expand=True) self.txtSplit = tk.Text(frm) self.txtSplit.pack(side=tk.LEFT, fill=tk.BOTH, padx=5, pady=5, expand=True) self.addScroll(frm, self.txtSplit)
其中self.addScroll
用于添加滚动条,内容如下
def addScroll(self, frm, txt): scroll = ttk.Scrollbar(frm) scroll.pack(side=tk.RIGHT,fill=tk.Y) txt.config(yscrollcommand=scroll.set) scroll.config(command=txt.yview)
由于text组件不能绑定StringVar,所以需要设置一个函数,用于更改txtSplit中的值
def setSplit(self, txt): self.txtSplit.delete(1.0, "end") self.txtSplit.insert("end", txt) self.txtSplit.see("end")
然后,添加分词按钮,修改initPara函数
def initPara(self, frmPara): # 前面不用改动 frm = ttk.Frame(frmPara) frm.pack(side=tk.TOP, fill=tk.X) ttk.Button(frm, text="分词预览", command=self.splitWords).pack(side=tk.LEFT) ttk.Button(frm, text="分词保存", command=self.saveWords).pack(side=tk.LEFT) ttk.Button(frm, text="输出词云", command=self.genWordCloud).pack(side=tk.LEFT)
并将splitWords函数改为
def splitWords(self): p = self.paths["输入路径"].get() with open(p, encoding='utf8') as f: text = f.read() words = jieba.lcut(text) self.words = [w for w in words if len(w)>1] # 取出长度大于1的词 self.setSplit("\n".join(self.words))
效果如下
词云输出方法
相应地,输出词云的方法也要更改,原来是通过self.words来生成词云,现在则要经过self.txtSplit
def genWordCloud(self): # 前面不用改 cloud = WordCloud(**dct) txt = self.txtSplit.get(1.0, "end") txt = " ".join(txt.split("\n")) cloud.generate(txt) # 后面也不用改
这样就可以生成词云了,接下来要实现保存分词结果的功能。
def saveWords(self): path = asksaveasfilename() with open(path) as f: f.write(self.txtSplit.get(1.0, 'end'))
到此这篇关于基于Python编写词云软件并显示分词结果的文章就介绍到这了,更多相关Python词云内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!