日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

词频统计工程相关

發(fā)布時(shí)間:2023/12/2 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 词频统计工程相关 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

(the format of this article is from SkYjoKEr)

?

//=======================開始干之前=======================

模塊
1、WordClass 一個(gè)存放單詞以及實(shí)現(xiàn)相關(guān)操作的類,其中單詞以二元組<word, freq>的形式存儲(chǔ)。 (20min)

2、WordCounter 完成單詞統(tǒng)計(jì),用一個(gè)List保存所有有效的單詞。

3、在WordCounter里實(shí)現(xiàn)方法AddFile,對(duì)每添加的一個(gè)文件,提取出所有的單詞,按規(guī)則加入到List中。(同2一起實(shí)現(xiàn),3h)

4、quicksort實(shí)現(xiàn)一個(gè)雙關(guān)鍵字的排序 (10min)

5、判斷路徑合法以及合法之后的文件名抽取,這部分不單獨(dú)寫成一個(gè)類(20min)

6、打印 (10min)

算上一些調(diào)試時(shí)間,預(yù)計(jì)花費(fèi)5個(gè)小時(shí)完成這個(gè)小項(xiàng)目。

?

//=======================開始干之后=======================

寫的時(shí)候模塊順序同設(shè)計(jì)時(shí)略有不同。

1、main函數(shù)。包括一個(gè)簡(jiǎn)單粗暴的命令行、有效路徑判斷及文件名抽取。實(shí)際使用了1hour,超出預(yù)計(jì)很多。問(wèn)題出在抽取文件名,我一開始想使用GetFiles直接提取要求的四種格式的文件名,過(guò)濾掉其他格式。但是GetFiles方法里的參數(shù)好像不像正則表達(dá)式那么強(qiáng)大,它不能實(shí)現(xiàn)幾種格式做或運(yùn)算。后來(lái)上網(wǎng)一查,大家也說(shuō)這個(gè)方法要么提取全部文件,要么提取一種格式的文件。最后我只能先把所有格式的文件都提出來(lái),在調(diào)用addFile時(shí)做個(gè)判斷。想通了這一點(diǎn),實(shí)現(xiàn)起來(lái)倒是也不難。本來(lái)覺得還要寫個(gè)文件夾里套文件夾的遞歸,GetFiles里有個(gè)searchoption.alldirectories參數(shù),直接實(shí)現(xiàn)了,我只想說(shuō)牛逼。?

2、WordClass,正常時(shí)間完成。相關(guān)的操作包括構(gòu)造函數(shù),詞頻加1,get和set。

3、WordCounter和addFile。項(xiàng)目的核心和難點(diǎn),需要實(shí)現(xiàn)寫文件、分詞、統(tǒng)計(jì)三大功能,寫這個(gè)雖然用了4個(gè)小時(shí),但我覺得自己的效率還算過(guò)得去。受到淡定大神的影響,我一開始打算用正則表達(dá)式實(shí)現(xiàn)分詞,但是看了一會(huì)覺得這個(gè)難度不大適合我,最后老實(shí)的用StreamReader讀一行,然后split分詞。這兩個(gè)工具在以前寫C++大作業(yè)時(shí)用過(guò),現(xiàn)在寫起來(lái)算熟門熟路。為了輔助這三大功能,還寫了兩個(gè)小方法,legalWord判斷單詞是否合法,wordCompareEqual判斷有沒有相同的詞出現(xiàn)(包括-e模式)。

4、雙關(guān)鍵字快排,正常時(shí)間完成。

5、打印。先把所有內(nèi)用緩沖到一個(gè)StreamBuilder里面,最后寫到一個(gè)文件里。正常時(shí)間完成。

寫完后調(diào)試也將近花了1個(gè)小時(shí)。寫的時(shí)候不小心把legalWord的return都寫成了false,運(yùn)行的時(shí)候一個(gè)合法單詞都沒有,這個(gè)錯(cuò)誤看了幾遍都沒看出來(lái),最后還是調(diào)試調(diào)出來(lái)的。

?最后用的總時(shí)間大概是7個(gè)小時(shí)。

?

//=======================提高性能=======================

感覺別的地方?jīng)]什么可以優(yōu)化的,要優(yōu)化的話就是在判斷是否出現(xiàn)重復(fù)的地方。因?yàn)槲覍懙呐袛嗍荗(n)的,借用樹結(jié)構(gòu)或者二分查找可以實(shí)現(xiàn)O(log n),Hash也能優(yōu)化不少性能。可是我都沒實(shí)現(xiàn)。

以I盤下的所有文件做測(cè)試。

優(yōu)化前:

?

優(yōu)化后:

可以看到,用了HASH后,運(yùn)行時(shí)間減少到1/3左右。

?

//=======================感想與總結(jié)=======================

C#的屬性,真的很方便。

類的屬性變量命名,用下劃線打頭,譬如詞頻用_freq,忽然感覺到自己可憐的詞匯量夠用了不少。

Split其實(shí)還是可以用用的,因?yàn)榉指舴抢锟梢詡鬟M(jìn)去一個(gè)分隔符數(shù)組。

文件操作相關(guān)的Directory和GetFiles,大愛。

VS2012按下F1就進(jìn)去msdn了,這樣比上網(wǎng)搜有效率多,久違的幸福感嗎?……

轉(zhuǎn)載于:https://www.cnblogs.com/hurj/archive/2012/09/24/2699474.html

總結(jié)

以上是生活随笔為你收集整理的词频统计工程相关的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。