• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Python的詞云生成研究

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

      潘亞星

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

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

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

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

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

      1 概述

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

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

      2 原理

      2.1 中文分詞

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

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

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

      2.2 詞云生成

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

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

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

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

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

      Python在制作詞云過(guò)程中可以設(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:? ? #顯示詞的最大個(gè)數(shù)。

      2.3 步驟

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

      (1) 保存文本信息

      (2) 中文分詞

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

      (4) 詞云生成

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

      3 技術(shù)支持

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

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

      首先需要安裝Python的第三方庫(kù),在命令提示符中輸入pip install jieba,安裝“結(jié)巴”分詞工具,以實(shí)現(xiàn)分詞。可以通過(guò)網(wǎng)絡(luò)爬蟲的方式獲取書評(píng)信息,書評(píng)的URL網(wǎng)址為:www.book.douban.com/subject/20427187/reviews,如果要爬去大量的數(shù)據(jù)進(jìn)行保存,爬蟲一定是絕佳的方法,能大大提高工作效率。由于在此只需要的是一篇受歡迎的好評(píng)指數(shù)為五顆星的書評(píng),不需要大量抓取數(shù)據(jù),所以在此選擇把書評(píng)以文以book-review.txt為文件名,保存在自己建好的文件夾下,進(jìn)行操作,需要注意的是,要進(jìn)行分詞的文本文件必須為UTF-8編碼。具體的代碼實(shí)現(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)確性和有效性會(huì)有效提升。在對(duì)《看見(jiàn)》書評(píng)分詞時(shí)也有主觀參與的部分:自定義詞典的添加和無(wú)用詞的剔除。對(duì)于一些比較常見(jiàn)的詞jieba能夠自動(dòng)分辨出來(lái),因?yàn)閖ieba有內(nèi)置的詞庫(kù)。對(duì)于jieba詞庫(kù)中沒(méi)有的詞,基于漢字成詞能力的隱馬爾科夫模型(HMM)和Viterbi算法,jieba有一定的新詞識(shí)別能力,但對(duì)于那些比較生僻的詞,通過(guò)自定義詞庫(kù)來(lái)添加,可以使分詞的正確率更高。根據(jù)jieba.load_userdict(file_name)添加自定義詞典,使用jieba.add_word(word,freq=None,tag=None)函數(shù)向自定義的詞典中添加新詞,通過(guò)主觀判斷,《看見(jiàn)》一書是現(xiàn)代文學(xué)作品,通俗易懂,且它的書評(píng)中也沒(méi)有太過(guò)于生僻的詞,所以沒(méi)有添加新詞的必要,但面對(duì)無(wú)用詞的剔除時(shí),雖然jieba已經(jīng)過(guò)濾掉了大量的無(wú)用詞,但也有漏網(wǎng)之魚,所以《看見(jiàn)》書評(píng)分詞后人為干涉剔除了“為了”“除了”“東西”等沒(méi)有實(shí)際意義的詞。

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

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

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

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

      公式:

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

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

      公式:

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

      TF-IDF=TF * IDF,使用TF-IDF算法提取關(guān)鍵詞的算法可靠,因?yàn)樗軌蜻^(guò)濾掉常見(jiàn)的詞,保留重要的詞。以TF-IDF算法實(shí)現(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ù)雜一些。它不是簡(jiǎn)單做加減乘除運(yùn)算,而是基于圖論和圖模型,對(duì)圖中的點(diǎn)計(jì)算權(quán)重,以權(quán)重值作為排序算法。權(quán)重高的語(yǔ)法單元可以作為關(guān)鍵詞。TextRank算法實(shí)現(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 詞云生成實(shí)現(xiàn)

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

      4 結(jié)語(yǔ)

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

      參考文獻(xiàn):

      [1] 楊雁瑩.基于TextRank算法的微博個(gè)人關(guān)鍵詞云提取的設(shè)計(jì)與實(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ì)算機(jī),2018,34(021):86-89.

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

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

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

      猜你喜歡
      詞云書評(píng)分詞
      書評(píng)
      書評(píng)
      書評(píng)
      分詞在英語(yǔ)教學(xué)中的妙用
      圖學(xué)學(xué)報(bào)(2014年2期)2014-03-06
      書評(píng)
      論英語(yǔ)不定式和-ing分詞的語(yǔ)義傳承
      松滋市| 莆田市| 五台县| 荔波县| 江城| 平舆县| 平定县| 夹江县| 阿尔山市| 彝良县| 赣榆县| 互助| 铜山县| 德昌县| 左云县| 民权县| 阜城县| 桓台县| 庆阳市| 长沙市| 伊宁县| 洮南市| 崇左市| 平泉县| 哈尔滨市| 保康县| 阿合奇县| 伊金霍洛旗| 合阳县| 于田县| 珠海市| 南部县| 固镇县| 清水河县| 延寿县| 东宁县| 阜宁县| 普兰店市| 永年县| 北票市| 海安县|