轉(zhuǎn)-TF-IDF及其算法

概念

 TF-IDF(term frequency–inverse document frequency)是一種用于資訊檢索與資訊探勘的常用加權(quán)技術(shù)。TF-IDF是一種統(tǒng)計(jì)方法涯竟,用以評(píng)估一字詞對(duì)于一個(gè)文件集或一個(gè)語(yǔ)料庫(kù)中的其中一份文件的重要程度。字詞的重要性隨著它在文件中出現(xiàn)的次數(shù)成正比增加恩伺,但同時(shí)會(huì)隨著它在語(yǔ)料庫(kù)中出現(xiàn)的頻率成反比下降徙瓶。TF-IDF加權(quán)的各種形式常被搜尋引擎應(yīng)用,作為文件與用戶查詢之間相關(guān)程度的度量或評(píng)級(jí)烹困。除了TF-IDF以外玄妈,因特網(wǎng)上的搜尋引擎還會(huì)使用基于連結(jié)分析的評(píng)級(jí)方法,以確定文件在搜尋結(jié)果中出現(xiàn)的順序髓梅。

原理

  在一份給定的文件里拟蜻,**詞頻 (term frequency, TF)** 指的是某一個(gè)給定的詞語(yǔ)在該文件中出現(xiàn)的次數(shù)。這個(gè)數(shù)字通常會(huì)被歸一化(分子一般小于分母 區(qū)別于IDF)枯饿,以防止它偏向長(zhǎng)的文件酝锅。(同一個(gè)詞語(yǔ)在長(zhǎng)文件里可能會(huì)比短文件有更高的詞頻,而不管該詞語(yǔ)重要與否奢方。)

逆向文件頻率 (inverse document frequency, IDF) 是一個(gè)詞語(yǔ)普遍重要性的度量搔扁。某一特定詞語(yǔ)的IDF,可以由總文件數(shù)目除以包含該詞語(yǔ)之文件的數(shù)目蟋字,再將得到的商取對(duì)數(shù)得到稿蹲。

某一特定文件內(nèi)的高詞語(yǔ)頻率,以及該詞語(yǔ)在整個(gè)文件集合中的低文件頻率,可以產(chǎn)生出高權(quán)重的TF-IDF。因此驾讲,TF-IDF傾向于過濾掉常見的詞語(yǔ)巫击,保留重要的詞語(yǔ)。

  **TFIDF的主要思想是**:如果某個(gè)詞或短語(yǔ)在一篇文章中出現(xiàn)的頻率TF高屠凶,并且在其他文章中很少出現(xiàn),則認(rèn)為此詞或者短語(yǔ)具有很好的類別區(qū)分能力,適合用來分類熬拒。TFIDF實(shí)際上是:TF * IDF,TF詞頻(Term Frequency)垫竞,IDF反文檔頻率(Inverse Document Frequency)澎粟。**TF**表示詞條在文檔d中出現(xiàn)的頻率(另一說:**TF詞頻(Term Frequency)指**的是某一個(gè)給定的詞語(yǔ)在該文件中出現(xiàn)的次數(shù))蛀序。IDF的主要思想是:如果包含詞條t的文檔越少,也就是n越小活烙,IDF越大(見后續(xù)公式)徐裸,則說明詞條t具有很好的類別區(qū)分能力。如果某一類文檔C中包含詞條t的文檔數(shù)為m啸盏,而其它類包含t的文檔總數(shù)為k重贺,顯然所有包含t的文檔數(shù)n=m+k,當(dāng)m大的時(shí)候回懦,n也大气笙,按照IDF公式得到的IDF的值會(huì)小,就說明該詞條t類別區(qū)分能力不強(qiáng)怯晕。(另一說:**IDF反文檔頻率(Inverse Document Frequency)**是指果包含詞條的文檔越少潜圃,IDF越大,則說明詞條具有很好的類別區(qū)分能力舟茶。)但是實(shí)際上谭期,有時(shí)候,如果一個(gè)詞條在一個(gè)類的文檔中頻繁出現(xiàn)稚晚,則說明該詞條能夠很好代表這個(gè)類的文本的特征崇堵,這樣的詞條應(yīng)該給它們賦予較高的權(quán)重,并選來作為該類文本的特征詞以區(qū)別與其它類文檔客燕。這就是IDF的不足之處.

  在一份給定的文件里鸳劳,**詞頻**(term frequency,TF)指的是某一個(gè)給定的詞語(yǔ)在該文件中出現(xiàn)的頻率也搓。這個(gè)數(shù)字是對(duì)**詞數(shù)**(term count)的歸一化赏廓,以防止它偏向長(zhǎng)的文件。(同一個(gè)詞語(yǔ)在長(zhǎng)文件里可能會(huì)比短文件有更高的詞數(shù)傍妒,而不管該詞語(yǔ)重要與否幔摸。)對(duì)于在某一特定文件里的詞語(yǔ) ![t_{i}](http://upload-images.jianshu.io/upload_images/10000468-6bc40f3731d4368d..png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

來說,它的重要性可表示為:

\mathrm{tf_{i,j}} = \frac{n_{i,j}}{\sum_k n_{k,j}}
  以上式子中 ![n_{i,j}](http://upload-images.jianshu.io/upload_images/10000468-063fc681d1483297..png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

是該詞
t_{i}

在文件
d_{j}

中的出現(xiàn)次數(shù)颤练,而分母則是在文件
d_{j}

中所有字詞的出現(xiàn)次數(shù)之和既忆。

** 逆向文件頻率**(inverse document frequency,IDF)是一個(gè)詞語(yǔ)普遍重要性的度量嗦玖。某一特定詞語(yǔ)的IDF患雇,可以由總文件數(shù)目除以包含該詞語(yǔ)之文件的數(shù)目,再將得到的商取對(duì)數(shù)得到:

<dl style="margin: 24px; padding: 0px; font-weight: 400; box-sizing: border-box; list-style: none;">

<dd style="margin: 0px 0px 8px 180px; padding: 0px; font-weight: 400; box-sizing: border-box; list-style: none;">
\mathrm{idf_{i}} = \log \frac{|D|}{|{j: t_{i} \in d_{j}}|}

</dd>

</dl>

其中

  • |D|:語(yǔ)料庫(kù)中的文件總數(shù)

  • |{ j: t_{i} \in d_{j}}|

    :包含詞語(yǔ)
    t_{i}

    的文件數(shù)目(即
    n_{i,j} \neq 0

    的文件數(shù)目)如果該詞語(yǔ)不在語(yǔ)料庫(kù)中宇挫,就會(huì)導(dǎo)致被除數(shù)為零苛吱,因此一般情況下使用

    1 + |{j : t_{i} \in d_{j}}|

然后

<dl style="margin: 24px; padding: 0px; font-weight: 400; box-sizing: border-box; list-style: none;">

<dd style="margin: 0px 0px 8px 40px; padding: 0px; font-weight: 400; box-sizing: border-box; list-style: none;">
\mathrm{tf{}idf_{i,j}} = \mathrm{tf_{i,j}} \times \mathrm{idf_{i}}

</dd>

</dl>

  某一特定文件內(nèi)的高詞語(yǔ)頻率,以及該詞語(yǔ)在整個(gè)文件集合中的低文件頻率器瘪,可以產(chǎn)生出高權(quán)重的TF-IDF翠储。因此绘雁,TF-IDF傾向于過濾掉常見的詞語(yǔ),保留重要的詞語(yǔ)援所。

示例

一:有很多不同的數(shù)學(xué)公式可以用來計(jì)算TF-IDF庐舟。這邊的例子以上述的數(shù)學(xué)公式來計(jì)算。詞頻 (TF) 是一詞語(yǔ)出現(xiàn)的次數(shù)除以該文件的總詞語(yǔ)數(shù)任斋。假如一篇文件的總詞語(yǔ)數(shù)是100個(gè)继阻,而詞語(yǔ)“母牛”出現(xiàn)了3次废酷,那么“母牛”一詞在該文件中的詞頻就是3/100=0.03抹缕。一個(gè)計(jì)算文件頻率 (DF) 的方法是測(cè)定有多少份文件出現(xiàn)過“母懦后。”一詞,然后除以文件集里包含的文件總數(shù)卓研。所以趴俘,如果“母牛”一詞在1,000份文件出現(xiàn)過奏赘,而文件總數(shù)是10,000,000份的話寥闪,其逆向文件頻率就是 log(10,000,000 / 1,000)=4。最后的TF-IDF的分?jǐn)?shù)為0.03 * 4=0.12磨淌。

二:根據(jù)關(guān)鍵字k1,k2,k3進(jìn)行搜索結(jié)果的相關(guān)性就變成TF1IDF1 + TF2IDF2 + TF3IDF3疲憋。比如document1的term總量為1000,k1,k2,k3在document1出現(xiàn)的次數(shù)是100梁只,200缚柳,50。包含了 k1, k2, k3的docuement總量分別是 1000搪锣, 10000秋忙,5000。document set的總量為10000构舟。 TF1 = 100/1000 = 0.1 TF2 = 200/1000 = 0.2 TF3 = 50/1000 = 0.05 IDF1 = log(10000/1000) = log(10) = 2.3 IDF2 = log(10000/100000) = log(1) = 0; IDF3 = log(10000/5000) = log(2) = 0.69 這樣關(guān)鍵字k1,k2,k3與docuement1的相關(guān)性= 0.12.3 + 0.20 + 0.050.69 = 0.2645 其中k1比k3的比重在document1要大灰追,k2的比重是0.

三:在某個(gè)一共有一千詞的網(wǎng)頁(yè)中“原子能”、“的”和“應(yīng)用”分別出現(xiàn)了 2 次狗超、35 次 和 5 次弹澎,那么它們的詞頻就分別是 0.002、0.035 和 0.005抡谐。 我們將這三個(gè)數(shù)相加裁奇,其和 0.042 就是相應(yīng)網(wǎng)頁(yè)和查詢“原子能的應(yīng)用” 相關(guān)性的一個(gè)簡(jiǎn)單的度量。概括地講麦撵,如果一個(gè)查詢包含關(guān)鍵詞 w1,w2,...,wN, 它們?cè)谝黄囟ňW(wǎng)頁(yè)中的詞頻分別是: TF1, TF2, ..., TFN刽肠。 (TF: term frequency)溃肪。 那么,這個(gè)查詢和該網(wǎng)頁(yè)的相關(guān)性就是:TF1 + TF2 + ... + TFN音五。

讀者可能已經(jīng)發(fā)現(xiàn)了又一個(gè)漏洞惫撰。在上面的例子中,詞“的”站了總詞頻的 80% 以上躺涝,而它對(duì)確定網(wǎng)頁(yè)的主題幾乎沒有用厨钻。我們稱這種詞叫“應(yīng)刪除詞”(Stopwords),也就是說在度量相關(guān)性是不應(yīng)考慮它們的頻率坚嗜。在漢語(yǔ)中夯膀,應(yīng)刪除詞還有“是”、“和”苍蔬、“中”诱建、“地”、“得”等等幾十個(gè)碟绑。忽略這些應(yīng)刪除詞后俺猿,上述網(wǎng)頁(yè)的相似度就變成了0.007,其中“原子能”貢獻(xiàn)了 0.002格仲,“應(yīng)用”貢獻(xiàn)了 0.005押袍。細(xì)心的讀者可能還會(huì)發(fā)現(xiàn)另一個(gè)小的漏洞。在漢語(yǔ)中凯肋,“應(yīng)用”是個(gè)很通用的詞谊惭,而“原子能”是個(gè)很專業(yè)的詞,后者在相關(guān)性排名中比前者重要否过。因此我們需要給漢語(yǔ)中的每一個(gè)詞給一個(gè)權(quán)重午笛,這個(gè)權(quán)重的設(shè)定必須滿足下面兩個(gè)條件:

1. 一個(gè)詞預(yù)測(cè)主題能力越強(qiáng),權(quán)重就越大苗桂,反之药磺,權(quán)重就越小。我們?cè)诰W(wǎng)頁(yè)中看到“原子能”這個(gè)詞煤伟,或多或少地能了解網(wǎng)頁(yè)的主題癌佩。我們看到“應(yīng)用”一次,對(duì)主題基本上還是一無所知便锨。因此围辙,“原子能“的權(quán)重就應(yīng)該比應(yīng)用大。

2. 應(yīng)刪除詞的權(quán)重應(yīng)該是零放案。

我們很容易發(fā)現(xiàn)姚建,如果一個(gè)關(guān)鍵詞只在很少的網(wǎng)頁(yè)中出現(xiàn),我們通過它就容易鎖定搜索目標(biāo)吱殉,它的權(quán)重也就應(yīng)該大掸冤。反之如果一個(gè)詞在大量網(wǎng)頁(yè)中出現(xiàn)厘托,我們看到它仍然不很清楚要找什么內(nèi)容,因此它應(yīng)該小稿湿。概括地講铅匹,假定一個(gè)關(guān)鍵詞 w 在 Dw 個(gè)網(wǎng)頁(yè)中出現(xiàn)過,那么 Dw 越大饺藤,w的權(quán)重越小包斑,反之亦然。在信息檢索中涕俗,使用最多的權(quán)重是“逆文本頻率指數(shù)” (Inverse document frequency 縮寫為IDF)罗丰,它的公式為log(D/Dw)其中D是全部網(wǎng)頁(yè)數(shù)。比如再姑,我們假定中文網(wǎng)頁(yè)數(shù)是D=10億丸卷,應(yīng)刪除詞“的”在所有的網(wǎng)頁(yè)中都出現(xiàn),即Dw=10億询刹,那么它的IDF=log(10億/10億)= log (1) = 0。假如專用詞“原子能”在兩百萬個(gè)網(wǎng)頁(yè)中出現(xiàn)萎坷,即Dw=200萬凹联,則它的權(quán)重IDF=log(500) =6.2。又假定通用詞“應(yīng)用”哆档,出現(xiàn)在五億個(gè)網(wǎng)頁(yè)中蔽挠,它的權(quán)重IDF = log(2)則只有 0.7。也就只說瓜浸,在網(wǎng)頁(yè)中找到一個(gè)“原子能”的比配相當(dāng)于找到九個(gè)“應(yīng)用”的匹配澳淑。利用 IDF,上述相關(guān)性計(jì)算個(gè)公式就由詞頻的簡(jiǎn)單求和變成了加權(quán)求和插佛,即 TF1IDF1 + TF2IDF2 +... + TFN*IDFN杠巡。在上面的例子中,該網(wǎng)頁(yè)和“原子能的應(yīng)用”的相關(guān)性為 0.0161雇寇,其中“原子能”貢獻(xiàn)了 0.0126氢拥,而“應(yīng)用”只貢獻(xiàn)了0.0035。這個(gè)比例和我們的直覺比較一致了锨侯。

轉(zhuǎn)載自:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/17/2595249.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嫩海,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子囚痴,更是在濱河造成了極大的恐慌叁怪,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件深滚,死亡現(xiàn)場(chǎng)離奇詭異奕谭,居然都是意外死亡涣觉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門展箱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旨枯,“玉大人,你說我怎么就攤上這事混驰∨矢簦” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵栖榨,是天一觀的道長(zhǎng)昆汹。 經(jīng)常有香客問我,道長(zhǎng)婴栽,這世上最難降的妖魔是什么满粗? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮愚争,結(jié)果婚禮上映皆,老公的妹妹穿的比我還像新娘。我一直安慰自己轰枝,他們只是感情好捅彻,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鞍陨,像睡著了一般步淹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诚撵,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天缭裆,我揣著相機(jī)與錄音,去河邊找鬼寿烟。 笑死澈驼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的韧衣。 我是一名探鬼主播盅藻,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼畅铭!你這毒婦竟也來了氏淑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤硕噩,失蹤者是張志新(化名)和其女友劉穎假残,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辉懒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年阳惹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片眶俩。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡莹汤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出颠印,到底是詐尸還是另有隱情纲岭,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布线罕,位于F島的核電站止潮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏钞楼。R本人自食惡果不足惜喇闸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望询件。 院中可真熱鬧燃乍,春花似錦、人聲如沸宛琅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)夯秃。三九已至,卻和暖如春痢艺,著一層夾襖步出監(jiān)牢的瞬間仓洼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國(guó)打工堤舒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留色建,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓舌缤,卻偏偏與公主長(zhǎng)得像箕戳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子国撵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 在上班回來的動(dòng)車上被小朋友左右半包圍了陵吸,左邊一歲半的小男孩在用母親的手機(jī)看《熊出沒》,右邊四歲的小女孩父親手機(jī)里的...
    秦川小小生閱讀 279評(píng)論 6 3
  • 有一個(gè)故事我要告訴你 當(dāng)太陽(yáng)跳出海面介牙,陽(yáng)光灑落 海浪的波光壮虫,粼粼,散滿了金色的夢(mèng) 我向往著,住在海岸 同你近一些 ...
    墩墩不胖閱讀 192評(píng)論 0 1
  • 日本巖手縣大槌町徐伐,在近海的山丘,靜立著一座白色的電話亭募狂。許多人特地來到這里办素,撥通默念的號(hào)碼,卻剛打過招呼熬尺,就已泣不...
    那一座城閱讀 603評(píng)論 0 1
  • 如果我是童話里的人物摸屠,那么我是,我是誰(shuí)呢粱哼!我是我自己季二!或許我可以是灰姑娘,我被我心理上的繼母所虐待揭措,所指責(zé)胯舷,所不能...
    真與真閱讀 153評(píng)論 1 1