TF-IDF算法全稱為term frequency–inverse document frequency。TF就是term frequency的縮寫,意為詞頻。IDF則是inverse document frequency的縮寫,意為逆文檔頻率。
為承留等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及承留網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、承留網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!該算法在信息處理中通常用來(lái)抽取關(guān)鍵詞。比如,對(duì)一個(gè)文章提取關(guān)鍵詞作為搜索詞,就可以采用TF-IDF算法。
要找出一篇文章中的關(guān)鍵詞,通常的思路就是,就是找到出現(xiàn)次數(shù)最多的詞。如果某個(gè)詞很重要,它應(yīng)該在這篇文章中多次出現(xiàn)。于是,我們進(jìn)行"詞頻"(Term Frequency,縮寫為TF)統(tǒng)計(jì)。
但是通常,一篇中文的文章中,都會(huì)有很多沒(méi)有實(shí)際意義的詞,比如“的”,“是”,“了”,這類詞是最常用的詞,稱為停用詞,稱它們?yōu)橥S迷~是因?yàn)樵谖谋咎幚磉^(guò)程中如果遇到它們,則立即停止處理,將其扔掉。將這些詞扔掉減少了索引量,增加了檢索效率,并且通常都會(huì)提高檢索的效果。停用詞主要包括英文字符、數(shù)字、數(shù)學(xué)字符、標(biāo)點(diǎn)符號(hào)及使用頻率特高的單漢字等。
當(dāng)過(guò)濾掉所有的停用詞后,剩下的都是實(shí)際意義的詞,但也不能簡(jiǎn)單的認(rèn)為那個(gè)詞出現(xiàn)的次數(shù)多就是關(guān)鍵詞。比如在一篇如何組裝電腦的文章中,出現(xiàn)“CPU”,“主板”等關(guān)鍵詞和出現(xiàn)“說(shuō)明書”的次數(shù)一樣多,但很顯然,CPU,主板等關(guān)鍵詞,更能確定這個(gè)文章的特性。也就是說(shuō),“CPU”,“主板”等關(guān)鍵詞比“說(shuō)明書”這個(gè)關(guān)鍵詞更重要,需要排在前面。所以我們就需要一個(gè)權(quán)重系數(shù),用來(lái)調(diào)整各個(gè)關(guān)鍵詞的重要性。如果一個(gè)詞很少見,但是它在某個(gè)文章中反復(fù)出現(xiàn)多次,那么可以認(rèn)為這個(gè)詞反應(yīng)了這個(gè)文章的特性,可以把它作為關(guān)鍵詞。在信息檢索中,這個(gè)權(quán)重非常重要,它決定了關(guān)鍵詞的重要度,這個(gè)權(quán)重叫做"逆文檔頻率"(Inverse Document Frequency,縮寫為IDF),它的大小與一個(gè)詞的常見程度成反比。
在知道了詞頻和權(quán)重之后,兩者相乘,就得到一個(gè)詞的TF-IDF值,某個(gè)詞對(duì)文章的重要性越高,它的TF-IDF值就越大。所以,排在最前面的幾個(gè)詞,就是這篇文章的關(guān)鍵詞。
因此TF-IDF算法的主要工作就是計(jì)算出TF*IDF值大的那幾個(gè)詞,作為文章的關(guān)鍵詞。
計(jì)算TF*IDF值需要分成以下幾步:
首先需要切詞,也就是說(shuō)把一個(gè)文章切成一個(gè)個(gè)可以作為關(guān)鍵字的詞語(yǔ)。由于中文不像英文那樣,可以通過(guò)空格切詞,因此到目前為止,中文分詞包括三種方法:
1)基于字符串匹配的分詞;
2)基于理解的分詞;
3)基于統(tǒng)計(jì)的分詞。
目前還無(wú)法證明哪一種方法更準(zhǔn)確,第一種方法是最早出現(xiàn)也是最成熟的算法,算法復(fù)雜度也是最低的。切詞首先需要一個(gè)語(yǔ)料庫(kù),然后根據(jù)這個(gè)庫(kù),匹配其中的詞語(yǔ)。目前較流行很多,但是支持.NET平臺(tái)的不多見,主要有中科院計(jì)算所ICTCLAS系統(tǒng)和盤古分詞,功能強(qiáng)大自帶詞典,同時(shí)支持用戶詞典,并且支持.NET開發(fā)者調(diào)用。
分詞完成后,就可以計(jì)算詞頻。詞頻就是某歌詞在文章中出現(xiàn)的次數(shù),由于文章有長(zhǎng)短,為了規(guī)格化詞頻的,取詞頻為一個(gè)相對(duì)值,而不是絕對(duì)值。這個(gè)相對(duì)值可以有2種計(jì)算方法。
一種
詞頻(TF)=某關(guān)鍵詞出現(xiàn)次數(shù)/文章中關(guān)鍵詞總數(shù)
或者
詞頻(TF)=某關(guān)鍵詞出現(xiàn)次數(shù)/文章中出現(xiàn)最多次數(shù)關(guān)鍵詞的出現(xiàn)次數(shù)
接著,計(jì)算逆文檔頻率(IDF)。計(jì)算IDF需要一個(gè)語(yǔ)料庫(kù),它的計(jì)算公式很簡(jiǎn)單
逆文檔頻率(IDF)=log(語(yǔ)料庫(kù)文檔總數(shù)/(包含該詞的文檔數(shù)+1)),之所以要+1是為了防止分母為0。由此可見,當(dāng)一個(gè)詞被越多的文檔包含,則IDF值就越小,也就是所這個(gè)詞很常見,不是最重要的能區(qū)分文章特性的關(guān)鍵詞。
最后將TF和IDF相乘就得到TF-IDF值。
前面提到的盤古分詞的詞庫(kù)中,已經(jīng)包含了IDF的值,因此使用這個(gè)分詞工具,也可以計(jì)算出各個(gè)關(guān)鍵詞的TF-IDF值,實(shí)現(xiàn)排序。
舉個(gè)例子,如下一個(gè)文章。
標(biāo)題為清華科研團(tuán)隊(duì)重大突破 人類有望“餓死”癌細(xì)胞
京華時(shí)報(bào)訊(記者張曉鴿)昨天,清華大學(xué)宣布:該校醫(yī)學(xué)院顏寧教授研究組在世界上首次解析了人源葡萄糖轉(zhuǎn)運(yùn)蛋白GLUT1的晶體結(jié)構(gòu),初步揭示了它的工作機(jī)制以及相關(guān)疾病的致病機(jī)理,在人類攻克×××、糖尿病等重大疾病的探索道路上邁出了極為重要的一步。未來(lái),人類有望“餓死”癌細(xì)胞。
昨天的英國(guó)《自然》雜志以長(zhǎng)文的形式正式刊發(fā)了這一成果。據(jù)介紹,葡萄糖是地球上各種生物最重要、最基本的能量來(lái)源,也是人腦和神經(jīng)系統(tǒng)最主要的供能物質(zhì)。據(jù)估算,大腦平均每天消耗約120克葡萄糖,占人體葡萄糖總消耗量的一半以上。葡萄糖代謝的第一步就是進(jìn)入細(xì)胞,但親水的葡萄糖溶于水,而疏水的細(xì)胞膜就像一層油,因此,葡萄糖自身無(wú)法穿過(guò)細(xì)胞膜進(jìn)入到細(xì)胞內(nèi)發(fā)揮作用,必須依靠轉(zhuǎn)運(yùn)蛋白這個(gè)“運(yùn)輸機(jī)器”來(lái)完成。葡萄糖轉(zhuǎn)運(yùn)蛋白鑲嵌于細(xì)胞膜上,如同在疏水的細(xì)胞膜上開了一扇一扇的門,能夠?qū)⑵咸烟菑募?xì)胞外轉(zhuǎn)運(yùn)到細(xì)胞內(nèi)。
顏寧教授介紹稱,葡萄糖轉(zhuǎn)運(yùn)蛋白GLUT1幾乎存在于人體的每一個(gè)細(xì)胞,是大腦、神經(jīng)系統(tǒng)、肌肉等組織器官中最重要的葡萄糖轉(zhuǎn)運(yùn)蛋白,對(duì)維持人體正常生理功能極為重要。這種轉(zhuǎn)運(yùn)蛋白的功能完全缺失將致人死亡,功能部分缺失會(huì)導(dǎo)致大腦萎縮、智力低下、發(fā)育遲緩等疾病。
同時(shí),這種轉(zhuǎn)運(yùn)蛋白在癌細(xì)胞的新陳代謝中也發(fā)揮著重要功能。癌細(xì)胞需要消耗超量葡萄糖才能維持其生長(zhǎng)擴(kuò)增,轉(zhuǎn)運(yùn)蛋白GLUT1在細(xì)胞中顯著過(guò)量往往意味著有癌變發(fā)生。
“因此,如能研究清楚GLUT1的組成、結(jié)果和工作機(jī)理,就有可能通過(guò)調(diào)控它實(shí)現(xiàn)葡萄糖轉(zhuǎn)運(yùn)的人工干預(yù)?!鳖亴幗淌谡f(shuō),這樣既可以增加正常細(xì)胞的葡萄糖供應(yīng),達(dá)到治療相關(guān)疾病的目的,又可以通過(guò)阻斷葡萄糖供應(yīng)“餓死”癌細(xì)胞。
使用C#代碼調(diào)用盤古分詞的dll,如下:
static void Main(string[] args) { string text = ReadFile(@"D:\系統(tǒng)桌面\ar1.txt"); PanGu.Segment.Init(); Segment segment = new Segment(); //調(diào)用分詞方法 ICollection<WordInfo> words = segment.DoSegment(text); Dictionary<string, double> d = new Dictionary<string, double>(); foreach (var word in words) { //統(tǒng)計(jì)頻率 float tf = (float)System.Text.RegularExpressions.Regex.Matches(text, word.Word).Count / (float)words.Count; if (!d.ContainsKey(word.Word)) d[word.Word] = tf * word.Frequency; } //排序 var lst = d.Select(x => x.Key).OrderByDescending(x => d[x]).ToList(); //打印出前5個(gè)關(guān)鍵詞 lst.Take(5).ToList().ForEach(x => Console.WriteLine(x)); }
結(jié)果為:
用這幾個(gè)關(guān)鍵詞去百度里面查詢,得到的查詢結(jié)果為:
TF-IDF算法的優(yōu)點(diǎn)是簡(jiǎn)單快速,結(jié)果比較符合實(shí)際情況。缺點(diǎn)是,單純以"詞頻"衡量一個(gè)詞的重要性,不夠全面,有時(shí)重要的詞可能出現(xiàn)次數(shù)并不多。而且,這種算法無(wú)法體現(xiàn)詞的位置信息,出現(xiàn)位置靠前的詞與出現(xiàn)位置靠后的詞,都被視為重要性相同,這是不正確的。(一種解決方法是,對(duì)全文的第一段和每一段的第一句話,給予較大的權(quán)重。)
當(dāng)通過(guò)TF-IDF算法找出文章的關(guān)鍵字后,可以運(yùn)用到一些具體的場(chǎng)景。比如:根據(jù)關(guān)鍵字找出相似的文章。
參考文檔:
http://www.ruanyifeng.com/blog/2013/03/tf-idf.html
http://zh.wikipedia.org/wiki/TF-IDF
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。
新聞標(biāo)題:TF-IDF算法簡(jiǎn)介-創(chuàng)新互聯(lián)
文章出自:http://aaarwkj.com/article0/pggio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、虛擬主機(jī)、電子商務(wù)、靜態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容