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