基于PyQt5界面的词云制作软件设计
姜华林
(遵义职业技术学院,贵州遵义563000)
摘要:文章基于PyQt5界面设计,python编程语言调用第三方库WordCloud设计词云制作软件,通过文件选择提取关键词及词云绘制,用QtWebEngineWidgets网页组件展示词云,把海量的数据以丰富的视觉效果呈现出来凸显关键词及其频率或权重,能帮助阅读者快速抓住信息的要点。
关键词:PyQt5;窗体界面;WordCloud;词云;关键词权重
中图分类号:TP311文献标识码:A
文章编号:1009-3044(2021)13-0074-03开放科学(资源服务)标识码(OSID):Design of WordCloud Production Software Based on PyQt5Interface
JIANG Hua-lin
(Zunyi Vocational and Technical College,Zunyi563000,China)
Abstract:Based on pyqt5interface design,python programming language calls the third-party library wordcloud to design the word⁃cloud production software,extracts keywords and draws the wordcloud through file selection,displays the wordcloud with qtweben⁃ginewidges web component,presents massive data with rich visual effects to highlight keywords and their frequency or weight, which can help readers quickly grasp the key points of information.
Key words:PyQt5;interface design;WordCloud;keywords weight
在当前信息大爆炸时代,人们在获取信息时都希望快速了解信息文档的概述,总想通过其关键词来获知信息文档的大概内容。而文本式关键词及其频率或权重数据让人感觉平淡无奇、枯燥乏味,词云是一种新的数据可视化[1]方式之一,能够快速地筛选出重要文本信息,对文本中出现频率较高的词语或权重大的词语予以视觉上的突出,这样不仅可以形象化地呈现文本,把关键词以丰富的图片视觉效果的形式展现出来,使文本具有视觉冲击力,突出关键的数据,并能够反映出数据的本质问题,有效提升数据分析的效率,帮助广大读者快速地抓住信息的要点,进行阅读前的筛选。
1PyQt5概述
PyQt5[2]是基于Digia公司强大图形框架Qt5的python接口,由一组python模块构成。PyQt5拥有多个类和函数。可以在Unix、Windows和Mac OS等多个平台运行,常用界面设计有三大模块:一是QtCore模块,其涵盖了核心的非GUI功能,此模块主要用于程序处理中涉及的目录、文件、数据类型、文本流、time、mime、进程或线程等对象;二是QtGui模块,该模块包括多种处理基本图形功能的类,涵盖但不限于:界面设计、事件处理、基本图像、2D图形和文本字体等;三是QtWidgets模块,该模块包含了一整套UI元素组件,用于设计多种系统风格的界面,操作方便。
2词云制作基础知识
词云制作常用2种方法,一是利用wordcloud包[3]制作,py⁃thon利用这个wordcloud包可以快速进行词云绘制,wordcloud 包好学易懂、使用较为简单、绘图相对灵活、可自行设置背景图片和指定使用字体。二是利用pyecharts[4]包制作,pyecharts是一款将python与echarts结合的强大的数据可视化工具,是一个用于生成Echarts图表的类库。Echarts是百度开源的一个数据可视化JS库。用Echarts生成的图可视化效果非常好。本文应用pyecharts包进行词云html文件生成,再用QtWebEngine⁃Widgets网页组件展示词云,其优点是形状各异、漂亮美观,同时用鼠标放在关键词上会显示其频率或权重。
2.1词云绘制函数
add()函数[5],这是pyecharts工具进行词云绘制的主要函数,用于添加词云的数据和设置各种配置,参
数项较多,常用参数如下:
series_name:str,系列名称(必选参数),用于tooltip的显示,legend的图例筛选;
data_pair:Sequence,系列数据项(必选参数),参数类型为以二元素元组对象构成的列表;
收稿日期:2021-01-20
基金项目:2019年遵义职业技术学院课题:基于LDA的关键词提取研究与设计(项目编号:201907)作者简介:姜华林(1971—),男,副教授,硕士,研究方向为算法设计、软件设计、职业教育。
Computer Knowledge and Technology电脑知识与技术第17卷第13期(2021年5月)
shape:str="circle",词云轮廓(可选参数,默认为“circle”),有“circle”“cardioid”“diamond”“triangle-forward”“triangle”“pen⁃tagon”和“star”七种词云轮廓可供选择;
mask_image:types.Optional[str]=None,自定义的图片(可选参数,目前支持jpg、jpeg、png和ico的格式),该参数支持本地文件路径(相对或者绝对路径都支持);
word_gap:Numeric=20,单词间隔(可选参数,默认为20);word_size_range=None,单词字体大小范围(可选参数,默认为[12,60]);
rotate_step:Numeric=45,单词旋转角度(可选参数,默认为45),单词旋转角度的设置区域为[-90,90]。
2.2词云文件渲染函数
render()函数,该函数将会在默认根目录下生成一个*.ht⁃ml的文件,支持存放词云的文件路径参数,设置文件保存位置,如render("e:\html\my_wordcloud.html"),保存的*.html文件默认用浏览器打开,文章中设计的词云制作软件用QtWebEngine⁃Widgets网页组件展示。
3词云制作软件功能流程图设计
根据词云制作需求,设计其功能流程图如图1:
图1词云制作功能流程图
4词云制作软件界面设计
界面分三部分,一是文本处理区域,由选择文件和文本读取相应功能组件构成;二是设置关键词及词云参数区域,由设置各项参数的相应功能组件构成;三是词云展示区域,由浏览词云网页组件和相应功能组件构成。
5词云制作软件功能实现
5.1文本读取
一是从文件读取文本,通过文件浏览进行文件选择,可读取*.txt、*.docx、*.doc和*.pdf四种文件的文本内容;二是直接复制短文本到界面的文本内容框中。其主要代码如下:
def read_file(self):
file_PlainText().strip()
if file_name=='':QMessageBox.warning(self,"警告","文件名称不能为空!") return
if dswith('.txt'):
fi=io.open(file_name,'r',encoding='utf-8')
ad()
elif dswith('.pdf'):
pdf_file=open(file_name,'rb')
adPdf(pdf_file)
elif dswith('.docx'):
addocx(file_name)
elif dswith('.doc'):
file_name2=self.doc_to_docx(file_name)
addocx(file_name2)
5.2文本数据处理及关键词提取
将读取的文本使用jieba[6]的精确模式分词后再进行停用词处理,然后再用gensim[7]的LdaModel模块提取文本相应的关键词。其主要代码如下:
#使用jieba分词
sentences=[]
segs=jieba.lcut(text)
#过滤停用词
segs=list(filter(lambda x:x not in stop_word,segs)) sentences.append(segs)
#构建词袋模型
dictionary=corpora.Dictionary(sentences)
corpus=[dictionary.doc2bow(sentence)for sentence in sen⁃tences]
#用lda模型提取关键词
lda=LdaModel(corpus=corpus,id2word=dictionary,num_top⁃ics=1)
list_tmp=lda.show_topic(0,topn=self.wordnum)
5.3词云制作
5.3.1导入词云模块
不同版本导入模块方式不同,文章中设计的词云制作软件使用from pyecharts.charts import WordCloud导入词云制作模块。
5.3.2关键词数据转换
通过lda模型提取的关键词数据如果直接作为词云制作函数add的参数,会出现如下错误:Uncaught TypeError:Failed to execute'getImageData'on'CanvasRenderingContext2D':Value is not of type'long',由于对短文本使用dels中的LdaModel函数进行关键词提取后返回的数据类型是list对象,其元素为二元素元组对象,该二元素元组对象的0元素为字符串类型,1元素为long类型,但wordcloud包的add函数不能接收二元素元组对象的long类型,因此要进行数据转换,其代码如下:
for i in range(len(list_tmp)):
list_tuple=[]
list_tuple.append(list_tmp[i][0])
float_tmp=float(list_tmp[i][1])
list_tuple.append(float_tmp)
self.key_words.append(tuple(list_tuple))#把二元素元组作为元素添加到列表中
5.3.3词云制作对象实例化
关键词权重数据转换后用代码
worldcloud=(WordCloud().add("",self.key_words,word_gap=w_gap,word_size_range=[w_size_range1,w_size_range2],ro⁃tate_step=r_step,shape=w_shape))实例化词云制作对象。5.3.4词云文件渲染
#默认用日期和时间生成不重复文件名称(用户也可根据自己的需要进行命名修改)
file_name="images/"+time.strftime("%Y%m%d_%H%M%S")+".html"
#渲染词云文件
本软件使用PyQt5的QtWebEngineWidgets 组件通过读取词云html 文件进行词云展示。5.4.1导入加载页面功能模块
不同PyQt5版本的QtWebEngineWidgets 模块导入不相同,本软件导入模块代码为:
from PyQt5import QtWebEngineWidgets as qw from PyQt5.QtCore import QUrl,Qt 5.4.2加载词云文件
self.wcloud_widget.layout =QVBoxLayout(self.wcloud_widget)self.browser=qw.QWebEngineView()#加载web 界面
self.browser.load(QUrl(self.url_path))
self.wcloud_widget.layout.addWidget(self.browser)self.wcloud_widget.setVisible(True)
5.5词云保存
#导入输出图片工具
der import make_snapshot #使用snapshot-selenium 渲染图片from snapshot_selenium import snapshot try :
#保存文件对话框
file_path =SaveFileName(self,"save file",self.strfile,"png(*.png)")
if file_path[0]=='':return
make_snapshot(snapshot,self.url_path,file_path[0])except BaseException as e :
QMessageBox.warning(self,"异常:",str(e))
6词云应用示例
应用词云制作软件提取关键词和绘制词云方便快捷,如下图2、图3和图4分别是职业教育20条、科技信息和时尚信息的
关键词提取及词云绘制应用示例。
图2职教20
条词云
图3
科技信息词云
图4时尚信息词云
7结束语
基于Python 语言的词云生成[8]相对简单,代码简洁高效,然而完整的词云制作需要利用多个功能模块,每个功能模块均有各自的特定函数,相对独立的函数功能复杂,参数众多并设置
(下转第92页)
图6监考教师信息(Excel表)
考生排考结果展示一般包括课程名称,任课老师,校区,班级,考号,姓名,考试时间,座位号,教室,考试类型,主监考官和副监考官。
本系统还可以针对某些对象单独输出相关信息。比如:班级的考试安排表,如图7。考生的考试安排表,如图8。监考老师的监考安排表,如图9。任课老师所任课程的考试列表,如图10。
5结束语
随着时代的发展,简便化、自动化、高效化的工作越来越受到人们的欢迎。随着高校考生数量的增加,学科的增多,人工排考的工作也就越来越烦琐,于是自动高效的排考系统也就应运而生。可根据高校的实际情况,设计排考参数,让系统自动进行排考,极大地提高了高校教务人员的工作效率,以及工作的质量,且推动了高校的现代化,自动化的发展。本系统经过实际检验,具有较高的实践性,能基本满足高校排课需求,但仍需进一步的改善与优化,以增加程序的健壮性和功能。但系统也还有一些不足的地方,比如:未考虑存在补考学生考试科目相互冲突的情况,以后将进一步改进。
参考文献:
[1]方琴.高校考务管理系统应用现状及需求分析——以S大学
最简单的网页制作软件考务管理系统为例[J].现代经济信息,2020(4):179-180,182. [2]舒清录.基于C/S与B/S混合结构的高校智能排考系统设计
与实现[J].信息技术与信息化,2020(4):16-19.
[3]张培培,吕震宇,闫海波.基于高校考试管理细化的排考系统
研究与设计[J].中国教育信息化,2019(9):77-81. [4]尹丽祯,张德政,詹钦潮.基于教务排考系统的研究与设计[J].
内江科技,2020,41(1):45-46.
[5]王志刚.高校智能排考系统的构建[J].西安工程大学学报, 2017,31(4):556-562.
【通联编辑:王力】
(上接第76页)
烦琐,编写和调试代码难度较大,因此它需要特定的专业知识和编程能力,对于一般人员这是一个巨大的难题。文章研究在
Python(3.7.1)+PyQt5(5.15.2)+jieba(0.42.1)+gensim(3.8.1)+ pyecharts(1.9.0)环境下设计的词云制作软件能快速提取关键词并绘制词云,相比一般的词云制作,该软件在可视化窗体下快速提取关键词并用网页组件展示词云的html文件,既有动态效果,又能查看关键词权重,实现了阅读者要快速掌握信息概要及词云展示的需求。
参考文献:
[1]朱涤尘,夏换,杨秀璋,等.基于文本挖掘和决策树分析的中国
手游产业发展研究[J].计算机科学,2020,47(S1):530-534. [2]PYQT5介绍[EB/OL].[2020-08-20].blog.csdn/
cheng_5230/article/details/84065657.
[3]倪冰苇,赵鸿萍,顾月清.基于词云图和层次聚类的天然产物
研究热点分析[J].中国新药杂志,2020,29(12):1326-1333. [4]pyecharts[EB/OL].[2020-08-20].pyecharts.herokuapp. com/.
[5]pyecharts[EB/OL].[2020-08-20]./#/zh-cn/ basic_charts?id=wordcloud.
[6]严明,郑昌兴.Python环境下的文本分词与词云制作[J].现代
计算机(专业版),2018(34):86-89.
[7]肖元君,吴国文.基于Gensim的摘要自动生成算法研究与实
现[J].计算机应用与软件,2019,36(12):131-136.
[8]潘亚星.基于Python的词云生成研究——以柴静的《看见》为
例[J].电脑知识与技术,2019,15(24):8-10.
【通联编辑:谢媛媛】
(上接第79页)
5结束语
本系统能够实现在线教学模式,为学生提供网络自学平台,为教师提供新的多媒体网络教学手段,能让学生不在实体课堂也能体验到学校的学习氛围,打破时空的局限性。当下在线教育学习现状转变了人们陈旧的学习思维方式,通过开发本系统对网络在线教育系统的分析与设计,完成了一个实用、便捷的在线教育学习系统,但它仍有许多可以改进之处,功能之间的过渡还可以更加自然。
参考文献:
[1]李旭光.翻转课堂的设计与实现[D].济南:山东大学,2019.[2]HorstmannW S.最新Java2核心技术卷工:原理[M].李如豹,
刚冬梅,张雪莲,等译.北京:机械工业出版社,2012.
[3]Oaks S.JavaTM安全[M].北京:中国电力出版社,2002.
[4]Reese G.JDBC与Java数据库编程[M].北京:中国电力出版社, 2002.
[5]Knuth D.The Art of Computer Programming[M].北京:清华大学
出版社,2012.
[6]Smith E A.Java Server Pages[M].北京:电子工业出版社,2010.
[7]高张,康小军.提高Tomcat服务器运行性能的研究[J].计算机
与数字工程,2008,36(10):203-205.
【通联编辑:王力】
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论