如何用Python寫一個詞頻統(tǒng)計小項目

如何用Python寫一個詞頻統(tǒng)計小項目,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的勐海網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

這里用python做一個小小的英文詞頻的統(tǒng)計。當(dāng)然了,自己寫的,就沒有停詞、計算詞語權(quán)重這些功能了,純粹是寫寫代碼練練手。

首先呢,這里是一篇英文文章,就像下面這樣的185個小段落,數(shù)據(jù)量還是不大的,哈利波特小說好像有10W行,感興趣可以找到分一下。

如何用Python寫一個詞頻統(tǒng)計小項目

雖然我安裝了2、3兩個版本.這里用的是Python2,因為Python2打印好像不用寫括號,比較省事。

廢話不多說,這里主要有兩個腳本,一個是分詞,一個是統(tǒng)計詞頻的:

1

分詞

如何用Python寫一個詞頻統(tǒng)計小項目

我這里是用的cmd窗口的命令依次讀取一行,形成文件流,每次處理一行,否則就需要弄一個很大的列表(list)。

如上面幾行代碼所示,對英文進(jìn)行分詞是非常簡單的,只需要根據(jù)空格分開就行了。不像中文,還需要詞庫、用一系列算法計算。然后打印到控制臺就行了。這樣打印出來的詞語還是無序的,我們需要將其排序,就是讓相鄰詞語一小段一小段一樣的,需要用sort排序,就像這樣:

cmd窗口輸入命令執(zhí)行腳本:

type The_Clock_and_the_Key.txt | python2 splitText.py | sort

這里的“type”是打開一個文本文件,“|”是管道:把左邊內(nèi)容作為參數(shù)給右邊的函數(shù)。

如何用Python寫一個詞頻統(tǒng)計小項目

這樣每個詞語就占一行,其實這個就是hadoop的一個基本功能之一:【排序】。

2

統(tǒng)計詞頻

如何用Python寫一個詞頻統(tǒng)計小項目

思想是,如果當(dāng)前讀進(jìn)來的單詞與保存的單詞不一樣,表明該詞語統(tǒng)計結(jié)束。由于,最后一個詞語賦值給current_word后,沒有對比的了(已經(jīng)到最后一行了,這里打印的時候,需要在循環(huán)外面打印一次,第23行代碼)。


將第一個腳本處理后的一個單詞占一行,并且相鄰段單詞一樣的數(shù)據(jù)流用管道傳入這個腳本進(jìn)行處理。

cmd窗口輸入命令執(zhí)行腳本:

type The_Clock_and_the_Key.txt | python2 splitText.py | sort | python2 splitText2.py | sort /R

這里的sort /R表示倒序(reverse),是一個函數(shù)。

windows命令行不太會玩,最終排序是這樣的排序:

如何用Python寫一個詞頻統(tǒng)計小項目

好像是按照字典排序的,哈哈,就這樣吧!有強(qiáng)迫癥的同學(xué)可以用列表或者字典,調(diào)用Python自帶sort函數(shù)排一下序。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

分享文章:如何用Python寫一個詞頻統(tǒng)計小項目
本文地址:http://muchs.cn/article44/geojhe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計、全網(wǎng)營銷推廣云服務(wù)器、微信小程序自適應(yīng)網(wǎng)站、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)