999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于PyQt5界面的詞云制作軟件設計

2021-07-19 22:11:53姜華林
電腦知識與技術 2021年13期
關鍵詞:文本

姜華林

摘要:文章基于PyQt5界面設計,python編程語言調用第三方庫WordCloud設計詞云制作軟件,通過文件選擇提取關鍵詞及詞云繪制,用QtWebEngineWidgets網頁組件展示詞云,把海量的數據以豐富的視覺效果呈現出來凸顯關鍵詞及其頻率或權重,能幫助閱讀者快速抓住信息的要點。

關鍵詞:PyQt5;窗體界面;WordCloud;詞云;關鍵詞權重

中圖分類號:TP311? ? ? 文獻標識碼:A

文章編號:1009-3044(2021)13-0074-03

Abstract:Based on pyqt5 interface design, python programming language calls the third-party library wordcloud to design the wordcloud production software, extracts keywords and draws the wordcloud through file selection, displays the wordcloud with qtwebenginewidges 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]方式之一,能夠快速地篩選出重要文本信息,對文本中出現頻率較高的詞語或權重大的詞語予以視覺上的突出,這樣不僅可以形象化地呈現文本,把關鍵詞以豐富的圖片視覺效果的形式展現出來,使文本具有視覺沖擊力,突出關鍵的數據,并能夠反映出數據的本質問題,有效提升數據分析的效率,幫助廣大讀者快速地抓住信息的要點,進行閱讀前的篩選。

1 PyQt5概述

PyQt5[2]是基于Digia公司強大圖形框架Qt5的python接口,由一組python模塊構成。PyQt5擁有多個類和函數。可以在Unix、 Windows和 Mac OS等多個平臺運行,常用界面設計有三大模塊:一是QtCore模塊,其涵蓋了核心的非GUI功能,此模塊主要用于程序處理中涉及的目錄、文件、數據類型、文本流、time、mime、進程或線程等對象;二是QtGui模塊,該模塊包括多種處理基本圖形功能的類,涵蓋但不限于:界面設計、事件處理、基本圖像、2D圖形和文本字體等;三是QtWidgets模塊,該模塊包含了一整套UI元素組件,用于設計多種系統風格的界面,操作方便。

2詞云制作基礎知識

詞云制作常用2種方法,一是利用wordcloud包[3]制作,python利用這個wordcloud包可以快速進行詞云繪制,wordcloud包好學易懂、使用較為簡單、繪圖相對靈活、可自行設置背景圖片和指定使用字體。二是利用pyecharts[4]包制作,pyecharts是一款將python與echarts結合的強大的數據可視化工具,是一個用于生成 Echarts 圖表的類庫。Echarts 是百度開源的一個數據可視化 JS 庫。用 Echarts 生成的圖可視化效果非常好。本文應用pyecharts包進行詞云html文件生成,再用QtWebEngineWidgets網頁組件展示詞云,其優點是形狀各異、漂亮美觀,同時用鼠標放在關鍵詞上會顯示其頻率或權重。

2.1詞云繪制函數

add( ) 函數[5],這是pyecharts工具進行詞云繪制的主要函數,用于添加詞云的數據和設置各種配置,參數項較多,常用參數如下:

series_name:str,系列名稱(必選參數),用于 tooltip 的顯示,legend 的圖例篩選;

data_pair:Sequence,系列數據項(必選參數),參數類型為以二元素元組對象構成的列表;

shape:str = "circle",詞云輪廓(可選參數,默認為“circle”),有“circle”“cardioid”“diamond”“triangle-forward”“triangle”“pentagon”和“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( ) 函數,該函數將會在默認根目錄下生成一個*.html 的文件,支持存放詞云的文件路徑參數,設置文件保存位置,如 render("e:\html\my_wordcloud.html"),保存的*.html文件默認用瀏覽器打開,文章中設計的詞云制作軟件用QtWebEngineWidgets網頁組件展示。

3 詞云制作軟件功能流程圖設計

根據詞云制作需求,設計其功能流程圖如圖1:

4詞云制作軟件界面設計

界面分三部分,一是文本處理區域,由選擇文件和文本讀取相應功能組件構成;二是設置關鍵詞及詞云參數區域,由設置各項參數的相應功能組件構成;三是詞云展示區域,由瀏覽詞云網頁組件和相應功能組件構成。

5詞云制作軟件功能實現

5.1文本讀取

一是從文件讀取文本,通過文件瀏覽進行文件選擇,可讀取*.txt、*.docx、*.doc和*.pdf四種文件的文本內容;二是直接復制短文本到界面的文本內容框中。其主要代碼如下:

def read_file(self):

file_name=self.textFile.toPlainText().strip()

if file_name=='':

QMessageBox.warning(self,"警告","文件名稱不能為空!")

return

if file_name.endswith('.txt'):

fi=io.open(file_name,'r',encoding='utf-8')

text=fi.read()

elif file_name.endswith('.pdf'):

pdf_file = open(file_name, 'rb')

text=self.readPdf(pdf_file)

elif file_name.endswith('.docx'):

text=self.readdocx(file_name)

elif file_name.endswith('.doc'):

file_name2=self.doc_to_docx(file_name)

text=self.readdocx(file_name2)

self.textBrowser.setText(text)

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 sentences]

# 用lda模型提取關鍵詞

lda = LdaModel(corpus=corpus, id2word=dictionary, num_topics=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',由于對短文本使用gensim.models中的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],rotate_step=r_step, shape=w_shape)) 實例化詞云制作對象。

5.3.4詞云文件渲染

#默認用日期和時間生成不重復文件名稱(用戶也可根據自己的需要進行命名修改)

file_name="images/"+time.strftime("%Y%m%d_%H%M%S")+".html"

#渲染詞云文件

worldcloud.render(file_name)

5.4詞云展示

本軟件使用PyQt5的QtWebEngineWidgets組件通過讀取詞云html文件進行詞云展示。

5.4.1導入加載頁面功能模塊

不同PyQt5版本的QtWebEngineWidgets模塊導入不相同,本軟件導入模塊代碼為:

from PyQt5 import 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詞云保存

# 導入輸出圖片工具

from pyecharts.render import make_snapshot

# 使用snapshot-selenium 渲染圖片

from snapshot_selenium import snapshot

try:

# 保存文件對話框

file_path =? QFileDialog.getSaveFileName(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條、科技信息和時尚信息的關鍵詞提取及詞云繪制應用示例。

7結束語

基于Python語言的詞云生成[8]相對簡單,代碼簡潔高效,然而完整的詞云制作需要利用多個功能模塊,每個功能模塊均有各自的特定函數,相對獨立的函數功能復雜,參數眾多并設置煩瑣,編寫和調試代碼難度較大,因此它需要特定的專業知識和編程能力,對于一般人員這是一個巨大的難題。文章研究在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].https://blog.csdn.net/cheng_5230/article/details/84065657.

[3] 倪冰葦,趙鴻萍,顧月清.基于詞云圖和層次聚類的天然產物研究熱點分析[J].中國新藥雜志,2020,29(12):1326-1333.

[4] pyecharts[EB/OL].[2020-08-20].http://pyecharts.herokuapp.com/.

[5] pyecharts[EB/OL].[2020-08-20].https://pyecharts.org/#/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.

【通聯編輯:謝媛媛】

猜你喜歡
文本
文本聯讀學概括 細致觀察促寫作
重點:論述類文本閱讀
重點:實用類文本閱讀
初中群文閱讀的文本選擇及組織
甘肅教育(2020年8期)2020-06-11 06:10:02
作為“文本鏈”的元電影
藝術評論(2020年3期)2020-02-06 06:29:22
在808DA上文本顯示的改善
“文化傳承與理解”離不開對具體文本的解讀與把握
基于doc2vec和TF-IDF的相似文本識別
電子制作(2018年18期)2018-11-14 01:48:06
文本之中·文本之外·文本之上——童話故事《坐井觀天》的教學隱喻
從背景出發還是從文本出發
語文知識(2015年11期)2015-02-28 22:01:59
主站蜘蛛池模板: 欧美精品亚洲精品日韩专区| 成年人福利视频| 亚洲无码37.| 丁香婷婷综合激情| 欧美激情,国产精品| 亚洲成av人无码综合在线观看| 啪啪免费视频一区二区| 国产又色又刺激高潮免费看| 欧美成人精品高清在线下载| 精品久久久久久成人AV| 国产成a人片在线播放| 亚洲熟女偷拍| 特级欧美视频aaaaaa| 国产区福利小视频在线观看尤物| 欧美国产视频| 国产麻豆精品久久一二三| 国产H片无码不卡在线视频| 丁香婷婷激情网| 免费毛片视频| 国产微拍一区二区三区四区| 亚洲黄网在线| 伊人久久影视| 国产成人亚洲精品无码电影| 新SSS无码手机在线观看| 成人另类稀缺在线观看| 好久久免费视频高清| 欧美专区日韩专区| 亚洲aaa视频| 国产精品丝袜在线| 国产99视频免费精品是看6| 欧美午夜视频| 亚洲一区二区在线无码 | 在线高清亚洲精品二区| 久久99精品久久久久久不卡| 国产精品久久久久久影院| 日本91在线| a毛片免费看| a级毛片视频免费观看| jizz国产视频| 国产Av无码精品色午夜| 亚洲欧美日韩精品专区| 久久香蕉国产线看精品| 亚洲小视频网站| 精品国产免费人成在线观看| 日韩精品无码免费一区二区三区| 九九热这里只有国产精品| 97国产精品视频自在拍| 国产在线小视频| 午夜国产不卡在线观看视频| 国产一级妓女av网站| 高清亚洲欧美在线看| 一级毛片免费不卡在线视频| 久久精品免费国产大片| 18禁色诱爆乳网站| 久久亚洲国产一区二区| 国产精品国产三级国产专业不 | 宅男噜噜噜66国产在线观看| 国产成熟女人性满足视频| 2021国产在线视频| 亚洲黄色网站视频| 日韩AV无码一区| 日韩第一页在线| 国产女人在线视频| 国产一区二区丝袜高跟鞋| 高清无码一本到东京热| 亚洲男人的天堂视频| 2021国产精品自产拍在线| 久久77777| 久久亚洲中文字幕精品一区| 欧美精品在线免费| 色男人的天堂久久综合| 免费一级毛片在线观看| 91久久偷偷做嫩草影院电| 欧美成人第一页| 亚洲AV无码乱码在线观看代蜜桃| 亚洲一级色| 97se亚洲| 婷婷六月激情综合一区| 国产女人喷水视频| 一级毛片免费播放视频| 71pao成人国产永久免费视频| 日韩无码真实干出血视频|