国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python的詞云生成研究

2019-11-03 13:11潘亞星
電腦知識與技術(shù) 2019年24期
關(guān)鍵詞:詞云書評分詞

潘亞星

摘要: 近幾年,隨著大數(shù)據(jù)、人工智能快速發(fā)展,Python呈現(xiàn)出爆發(fā)式的增長。伴隨著移動互聯(lián)網(wǎng)的快速發(fā)展,越來越多的人選擇線上閱讀,詞云是一種新的可視化方式,能夠準(zhǔn)確快速地篩選出重要文本信息,把關(guān)鍵字以圖片的形式展現(xiàn)出來,幫助廣大讀者快速地進(jìn)行閱讀前的篩選。該文主要介紹了基于Python的詞云生成。以豆瓣網(wǎng)中柴靜《看見》一書的書評為例,嘗試對此書評進(jìn)行詞云生成。首先通過中文組件jieba進(jìn)行分詞,然后用TF-IDF算法提取關(guān)鍵詞,最后利用wordcloud制作出詞云圖。

關(guān)鍵詞:中文分詞;詞云;Python

中圖分類號:TP311? ? ? ? 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2019)24-0008-03

開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):

1 概述

在人們獲取信息的過程中,經(jīng)常會出現(xiàn)大量不必要的信息,影響人們的閱讀速度,浪費掉一些有限的時間。但隨著多媒體技術(shù)進(jìn)一步發(fā)展,使得信息的展現(xiàn)方式有了更多的可能性。當(dāng)下,詞云盛行,詞云能夠準(zhǔn)確快速地篩選重要出文本信息,把關(guān)鍵字以圖片的形式展現(xiàn)出來,吸引人們的眼球,且詞云的生成簡單,制作工具容易獲得。用詞云來分析一本書的書評,可以讓讀者對書評的關(guān)鍵詞一目了然,從而決定是否去閱讀它?!犊匆姟芬粫亲x過的書籍中印象最深刻的一本,也是向同學(xué)推薦最多的一本書,它記錄了非典、汶川地震、北京奧運會等重大事件,是21世紀(jì)初中國社會十年變遷的備忘錄。希望通過漂亮的詞云,可以有更多的人了解這本書,從而去閱讀。

制作詞云的方法很多,但在一些人專業(yè)的人眼里,Python是最好的編程語言,功能全面,無所不能,因此嘗試用Python來做《看見》書評的詞云生成。1991年初,Python發(fā)布了第一個公開發(fā)行版。2008前后,Python的運用領(lǐng)域進(jìn)一步擴(kuò)張,開始在文學(xué)分析、金融領(lǐng)域有所運用。Python是一個跨平臺的語言,能夠把其他語言制作的各種模塊,輕松地結(jié)合在一起,廣泛應(yīng)用,被稱為“膠水語言”。得益于Python在多個領(lǐng)域的應(yīng)用都在逐漸變熱,Python的排名以強勁的勢頭迅速上升,根據(jù)TIOBE編程語言排行榜2019年6月更新的數(shù)據(jù),Java和C在保持領(lǐng)先地位的同時,Python排名再度超過C++,占據(jù)了第三名的位置。

2 原理

2.1 中文分詞

詞云是對關(guān)鍵詞的展示,制作詞云,首先要提取出關(guān)鍵詞,提取關(guān)鍵詞的前提是分詞。分詞就是將連續(xù)的字按照一定的規(guī)范劃分成不連續(xù)的詞的過程。雖然英文也存在短語劃分的問題,但中文分詞比英文要復(fù)雜、困難得多。用到分詞的領(lǐng)域有很多,如機(jī)器翻譯、自動分類、自動摘要等。有很多軟件和在線工具可以實現(xiàn)簡單的分詞,例如:武大沈陽老師的ROST- CM、中科院張華平老師的ICTCLAS2012等。目前,研究中文分詞的大多是科研院校,還有一個比較出名專業(yè)研究中文分詞的商業(yè)公司:海量。

jieba是Python的中文分詞組件,它的優(yōu)點很多如:支持繁體分詞、支持自定義詞典、且有三種分詞模式:一是精確模式;二是全模式;三是搜索引擎模式。搜索引擎分詞模式,是對精確模式的再次切分,用以提高召回率。Jieba默認(rèn)使用精確模式,全模式分詞需要添加cut_all參數(shù),將其設(shè)置為True, jieba.cut_for_search()函數(shù)適合用于搜索引擎構(gòu)建倒排索引的分詞。

jieba.cut()以及jieba.cut_for_search()返回的結(jié)構(gòu)都是一個可迭代的generator,使用for循環(huán)得到的每一個詞語(unicode)。待分詞的字符串可以是gbk字符串、utf-8字符串或者unicode。

2.2 詞云生成

詞云又稱文字云或者標(biāo)簽云,是文本數(shù)據(jù)可視化的一種方法?!霸~云”的作用就是過濾掉大量的文本信息,對文本中出現(xiàn)頻率較高的“關(guān)鍵詞”予以視覺上的突出,使瀏覽者快速領(lǐng)略到文本的主旨。目前有很多在線的詞云制作工具,每個人都可以根據(jù)自己的需要,制作自己喜歡的詞云圖。例如:

(1)www.wordArt.com是一個在線的詞云創(chuàng)作工具,可以制作出精美的詞云藝術(shù)。WordArt 用戶可以自主選擇形狀、顏色、文字布局等。

(2)www.minitagcloud.cn一個在線詞云制作的中文網(wǎng)站。圖形多樣,可以處理簡單錄入和大段落文本,分詞簡單,可操作性強,同時還可以添加元素,設(shè)置字體和樣式等,也可以將完成后的作品保存或下載到本地。

(3)www.wordle.net,wordle是詞云制作的典型代表。但是這個網(wǎng)站是需要支持java功能的,如果瀏覽器沒有安裝java模塊的話就不能顯示出效果,目前,Wordle的Web版本已不再適用于大多數(shù)人,建議安裝一個wordle的桌面版本,功能與之前一樣。由Wordle創(chuàng)建的詞云圖片自己可以隨意使用,可以打印出來或保存在桌面上。

對于零基礎(chǔ)的人來說,用以上這些專用的工具來做一個詞云分析圖是個很好的選擇,便捷而強大,但也有不足之處,功能太專一,適用的范圍有限。對于略有基礎(chǔ)的人來說,Python是個更好的選擇,因為Python有支持中文、開源、免費等特點。在Python環(huán)境下,通過安裝第三方wordcloud庫也能輕松地制作詞云圖,并對其進(jìn)行個性化的設(shè)置。

Python在制作詞云過程中可以設(shè)置的屬性有:

(1) font_path:? ? #字體路徑,不設(shè)置字體路徑不能正常顯示。

(2) background_color:? ? #設(shè)置背景顏色。

(3) mask:? ? #指定遮罩圖,即圖云的形狀。

(4) min_font_size:? ? #顯示的最小字體值,默認(rèn)為4。

(5) max_font_size:? ? #顯示的最大字體值,默認(rèn)為20。

(6) max_words:? ? #顯示詞的最大個數(shù)。

2.3 步驟

如今人民過上了日益美好的生活。書籍資源豐富,且有越來越多的免費的在線讀書軟件。閱讀的重要性無人不曉,習(xí)近平總書記也曾在多個場合對讀書學(xué)習(xí)有過深刻的闡述。在一次文藝工作座談會上習(xí)總書記說過“我年輕時讀了不少文學(xué)作品,涉獵了當(dāng)時能找到的各種書籍,不僅其中許多精彩章節(jié)、雋永文字至今記憶猶新,而且從中悟出了不少生活真諦。”但是如何在浩如煙海的書籍資源中快速篩選感興趣的有價值的書籍呢,通過詞云圖可以滿足廣大讀者的需求,并給讀者充分的想象的空間,這也是在此研究詞云生成的原因。希望能夠用好看的詞云圖吸引讀者,讓讀者從讀者中來,到讀者中去。用Python做書評的詞云圖的具體操作步驟如下:

(1) 保存文本信息

(2) 中文分詞

(3) 提取關(guān)鍵詞

(4) 詞云生成

由于,保存文本信息的操作簡單也比較簡單,所以在此簡單介紹兩種方法。第一種是以文本文件的格式保存在當(dāng)?shù)匚募A下。另一種是對確切指定的網(wǎng)址進(jìn)行數(shù)據(jù)抓取,獲取信息??梢愿鶕?jù)指定的URL,抓取豆瓣網(wǎng)《看見》一書的最受歡迎的五星好評的書評信息,通過建立連接發(fā)送HTTP請求,利用Requests建立與服務(wù)器的連接,服務(wù)器收到請求后做出應(yīng)答。然后進(jìn)行頁面處理,先對HTML的源代碼進(jìn)行過濾和處理,分析出需要的信息,再對結(jié)果進(jìn)行整合,最后通過HTML可以看到《看見》一書書評。接下來重點介紹中文分詞的實現(xiàn)、提取關(guān)鍵詞的算法實現(xiàn)以及詞云生成的實現(xiàn)。

3 技術(shù)支持

3.1 中文分詞實現(xiàn)

Python的標(biāo)準(zhǔn)庫是安裝Python時默認(rèn)自帶的庫,是Python的一個組成部分,如turtle庫、time庫以及random庫等。Python還有許多下載后安裝才能使用的庫,稱為第三方庫。使用pip安裝第三方庫,pip是從屬于Python的,對應(yīng)的pip負(fù)責(zé)給對應(yīng)的Python安裝第三方模塊。

首先需要安裝Python的第三方庫,在命令提示符中輸入pip install jieba,安裝“結(jié)巴”分詞工具,以實現(xiàn)分詞??梢酝ㄟ^網(wǎng)絡(luò)爬蟲的方式獲取書評信息,書評的URL網(wǎng)址為:www.book.douban.com/subject/20427187/reviews,如果要爬去大量的數(shù)據(jù)進(jìn)行保存,爬蟲一定是絕佳的方法,能大大提高工作效率。由于在此只需要的是一篇受歡迎的好評指數(shù)為五顆星的書評,不需要大量抓取數(shù)據(jù),所以在此選擇把書評以文以book-review.txt為文件名,保存在自己建好的文件夾下,進(jìn)行操作,需要注意的是,要進(jìn)行分詞的文本文件必須為UTF-8編碼。具體的代碼實現(xiàn)如下:

filename = "book-review.txt"

with open(filename) as f:

mytext = f.read()

import jieba

mytext = " ".join(jieba.cut(mytext))

print(mytext)

中文分詞技術(shù)如果能夠加入人為參與和主觀判斷,它的準(zhǔn)確性和有效性會有效提升。在對《看見》書評分詞時也有主觀參與的部分:自定義詞典的添加和無用詞的剔除。對于一些比較常見的詞jieba能夠自動分辨出來,因為jieba有內(nèi)置的詞庫。對于jieba詞庫中沒有的詞,基于漢字成詞能力的隱馬爾科夫模型(HMM)和Viterbi算法,jieba有一定的新詞識別能力,但對于那些比較生僻的詞,通過自定義詞庫來添加,可以使分詞的正確率更高。根據(jù)jieba.load_userdict(file_name)添加自定義詞典,使用jieba.add_word(word,freq=None,tag=None)函數(shù)向自定義的詞典中添加新詞,通過主觀判斷,《看見》一書是現(xiàn)代文學(xué)作品,通俗易懂,且它的書評中也沒有太過于生僻的詞,所以沒有添加新詞的必要,但面對無用詞的剔除時,雖然jieba已經(jīng)過濾掉了大量的無用詞,但也有漏網(wǎng)之魚,所以《看見》書評分詞后人為干涉剔除了“為了”“除了”“東西”等沒有實際意義的詞。

3.2 提取關(guān)鍵詞的實現(xiàn)

jieba中文分詞實現(xiàn)了分詞、詞性標(biāo)注、關(guān)鍵詞提取。關(guān)鍵詞提取就是從大量文本信息中,找到最能代表此文本的詞,把它們抽取出來。并不是簡單的來說,一個詞出現(xiàn)的頻率越高,就越能表現(xiàn)文章的主旨,關(guān)鍵詞的提取需要用到具體的算法。Jieba關(guān)鍵詞提取涉及了兩種算法:TF-IDF算法和TextRank算法,重點研究TF-IDF算法的實現(xiàn)。

TF-IDF(Term Frequency-Inverse Document Frequency,詞頻-逆文件頻率),它是一種數(shù)值統(tǒng)計算法,用于反映一個詞對于語料中某篇文檔的重要程度。主要思想是:一個詞在一個文檔中出現(xiàn)的次數(shù)越多,即TF高;并且在所有文檔中出現(xiàn)的次數(shù)越少,即DF低(IDF高),越能夠代表這篇文章的主旨。

詞頻(term frequency,TF)指某一特定的詞在該文本文件中出現(xiàn)的次數(shù)。但需要注意的是一些通用的詞語對于主題沒有太大的作用,反而是一些出現(xiàn)頻率較少的詞更能表達(dá)文章的主題,所以不能單純使用TF算法。

公式:

[TF=某個詞出現(xiàn)的頻數(shù)所有詞出現(xiàn)的頻數(shù)之和]

逆向文件頻率(inverse document frequency ,IDF)指某一特定的詞在所有文件中出現(xiàn)的次數(shù)越少,它逆向文件頻率值越大,說明它能很好地區(qū)分能力,具有代表性,一特定詞的IDF值,是由總文件數(shù)目除以包含該詞的所有文件的數(shù)目,再將得到的值取對數(shù)得到的。分母加1,是為了避免分母為零的情況。

公式:

[IDF=log (總文件數(shù)目包含該詞的文件的數(shù)+1)]

TF-IDF=TF * IDF,使用TF-IDF算法提取關(guān)鍵詞的算法可靠,因為它能夠過濾掉常見的詞,保留重要的詞。以TF-IDF算法實現(xiàn)jieba中文分詞的關(guān)鍵代碼為:

from jieba import analyse

tfidf = analyse.extract_tags? ? # 引入TF-IDF關(guān)鍵詞抽取接口

keywords = tfidf(text)? ? ?# 基于TF-IDF算法進(jìn)行關(guān)鍵詞抽取

print "keywords by tfidf:"

for keyword in keywords:? ? # 輸出抽取出的關(guān)鍵詞

print keyword + "/"

TextRank算法要比TF-IDF算法復(fù)雜一些。它不是簡單做加減乘除運算,而是基于圖論和圖模型,對圖中的點計算權(quán)重,以權(quán)重值作為排序算法。權(quán)重高的語法單元可以作為關(guān)鍵詞。TextRank算法實現(xiàn)jieba中文分詞的關(guān)鍵代碼為:

from jieba import analyse

textrank = analyse.textrank? ? # 引入TextRank關(guān)鍵詞抽取接口

keywords = textrank(text)? ? ?# 基于TextRank算法進(jìn)行關(guān)鍵詞抽取

for keyword in keywords:? ? # 輸出抽取出的關(guān)鍵詞

print keyword + "/"

3.3 詞云生成實現(xiàn)

要實現(xiàn)詞云生成,首先為Python安裝第三方的詞云工具,在命令提示符中輸入pip install wordcloud,進(jìn)行安裝。由于wordcloud默認(rèn)的字體是英文的,不包含中文編碼,因此需要自己下載一個中文字體如:simsun.ttf(宋體),把simsun.ttf和《看見》書評book-review.txt放在同一個文件夾下。在分詞完成后,伴隨著提取關(guān)鍵詞也已經(jīng)完成了,接下來就詞云的關(guān)鍵步驟。可以設(shè)置一些個性化的操作,首先可以設(shè)置mask的形狀,可以使用默認(rèn)的矩形,也可以選擇用書籍的封面,或是作者的圖片等自定義的背景遮罩,在詞云生成時選擇了以柴靜采訪時的一張圖片為mask,還可以設(shè)置最大字?jǐn)?shù)限制,最大字體和最小字體以及顏色等等,在此做了簡單的設(shè)置如下。

from wordcloud import WordCloud(

background_color="white",

max_words=62,

mask=bg,? ? ? ? ? ? #設(shè)置圖片的背景

max_font_size=50,

random_state=42,

font_path='simsun.ttf'? ?#中文處理

).generate(mytext)

import matplotlib.pyplot as plt

plt.imshow(wordcloud,interpolation='lilinear'))? ? #開始畫圖

plt.axis("off")? ? ?#為云圖去掉坐標(biāo)軸

圖2? 《看見》書評的詞云生成

4 結(jié)語

基于Python詞云生成并沒有那么簡單,它需要一定的專業(yè)知識,首先它的環(huán)境配置就是一大難關(guān),其次Python還有一些需要特別注意的語法點,但經(jīng)過仔細(xì)研究和學(xué)習(xí),用Python做詞云還是可以實現(xiàn)的。雖然詞云有一定的局限性,但詞云的優(yōu)點和價值不容忽視。目前,已有用詞云技術(shù)報道全國兩會,讓公民可以一眼看懂那些晦澀難懂的報告;也有一些教育工作者開始用詞云圖進(jìn)行英語詞匯教學(xué);還有一些主流報紙頭版詞云的微信公眾號,讓閱讀者通過詞云的方式快速了解主流報紙頭版內(nèi)容。不僅任何一本書的書評都可以做成漂亮的詞云圖,任何文本信息都可以做成詞云,方便用戶在互聯(lián)網(wǎng)上快速閱讀。也可以將這些詞云圖保存下來,放到朋友圈或是微博上,都是展示自己的極佳方式。把《看見》書評的詞云圖放在微博上,不僅獲得了大量的閱讀量,還得到了不少熟悉或陌生的朋友的評論和點贊。相信在未來一定會有越來越多的人看到詞云的價值,通過詞云來了解信息,認(rèn)識世界。

參考文獻(xiàn):

[1] 楊雁瑩.基于TextRank算法的微博個人關(guān)鍵詞云提取的設(shè)計與實現(xiàn)[J].電腦編程技巧與維護(hù),2019,02(005):14-18.

[2] 馮與潔.詞云生成系統(tǒng)的構(gòu)建[J].通訊世界,2019(03):190-192.

[3] 嚴(yán)明.Python環(huán)境下的文本分詞與詞云制作[J].現(xiàn)代計算機(jī),2018,34(021):86-89.

[4] 高宇.基于聚焦型網(wǎng)絡(luò)爬蟲的影評獲取技術(shù)[J].中國計量大學(xué)學(xué)報,2018,29(3):299-303.

[5] 袁在成.可視化工具“詞云”在英語教學(xué)中的應(yīng)用研[J].中國教育學(xué)刊,2016,S1(02):102-103.

【通聯(lián)編輯:代影】

猜你喜歡
詞云書評分詞
書評
書評
書評
分詞在英語教學(xué)中的妙用
圖學(xué)學(xué)報(2014年2期)2014-03-06
書評
論英語不定式和-ing分詞的語義傳承
渭源县| 石景山区| 延庆县| 成安县| 韩城市| 永修县| 甘德县| 嘉善县| 柳州市| 来安县| 兴业县| 北票市| 定结县| 综艺| 彩票| 贵德县| 宜兴市| 泗阳县| 商河县| 星子县| 柳州市| 南召县| 宜兴市| 东乡族自治县| 法库县| 额尔古纳市| 望江县| 右玉县| 子长县| 永川市| 通河县| 丽江市| 乾安县| 理塘县| 保德县| 平度市| 绥德县| 嘉义市| 伽师县| 白水县| 富源县|