NLP自然語言處理tf-idf 三個基本應用【更新中】

Submitted by neurta on Sat, 05/11/2019 - 14:16
語料庫

色狠狠亚洲爱综合网站任務一:現在有一篇長文《美國的蜜蜂養殖》,用計算機提取它的關鍵詞。

1、詞頻:如果某個詞很重要,它應該在這篇文章中多次出現。我們進行"詞頻"(Term Frequency,縮寫為TF)統計。

2、停用詞:結果你肯定猜到了,出現次數最多的詞是----"的"、"是"、"在"----這一類最常用的詞。它們叫做"停用詞"(stop words),表示對找到結果毫無幫助、必須過濾掉的詞。

?

規則一:如果某個詞比較少見,但是它在這篇文章中多次出現,那么它很可能就反映了這篇文章的特性,正是我們所需要的關鍵詞。

  假設我們把它們都過濾掉了,只考慮剩下的有實際意義的詞

  發現"美國"、"蜜蜂"、"養殖"這三個詞的出現次數一樣多

  因為"美國"是很常見的詞,相對而言,"蜜蜂"和"養殖"不那么常見,"蜜蜂"和"養殖"的重要程度要大于"美國"

?

3、IDF :最常見的詞("的"、"是"、"在")給予最小的權重,

色狠狠亚洲爱综合网站    較常見的詞("美國")給予較小的權重,

    較少見的詞("蜜蜂"、"養殖")給予較大的權重。

色狠狠亚洲爱综合网站    這個權重叫做"逆文檔頻率"(Inverse Document Frequency,縮寫為IDF),

色狠狠亚洲爱综合网站    它的大小與一個詞的常見程度成反比。

?

色狠狠亚洲爱综合网站4、TF-IDF:"詞頻"(TF)和"逆文檔頻率"(IDF)以后,兩個值相乘,得到了一個詞的TF-IDF值。

色狠狠亚洲爱综合网站    某個詞對文章的重要性越高,它的TF-IDF值就越大。

    所以,排在最前面的幾個詞,就是這篇文章的關鍵詞。

具體實現:

1、計算詞頻

色狠狠亚洲爱综合网站  詞頻(TF) = 某個詞在文章中的出現次數

文章有長短之分,為了便于不同文章的比較,做"詞頻"標準化。

  詞頻(TF) =?某個詞在文章中的出現次數 / 文章總詞數

色狠狠亚洲爱综合网站或者 詞頻(TF) =?某個詞在文章中的出現次數 / 擁有最高詞頻的詞的次數

?

2、某個詞在文章中的出現次數

色狠狠亚洲爱综合网站這時,需要一個語料庫(corpus),用來模擬語言的使用環境。

色狠狠亚洲爱综合网站逆文檔頻率(IDF) = log(語料庫的文檔總數/包含該詞的文檔總數+1)

?

3、計算TF-IDF

  TF-IDF = 詞頻(TF) * 逆文檔頻率(IDF)

  可以看到,TF-IDF與一個詞在文檔中的出現次數成正比,與該詞在整個語言中的出現次數成反比。

  所以,自動提取關鍵詞的算法就是計算出文檔的每個詞的TF-IDF值,

  然后按降序排列,取排在最前面的幾個詞。

詞頻
?

從上表可見,"蜜蜂"的TF-IDF值最高,"養殖"其次,"美國"最低。(如果還計算"的"字的TF-IDF,那將是一個極其接近0的值。)

所以,如果只選擇一個詞,"蜜蜂"就是這篇文章的關鍵詞。

?

總結:

TF-IDF算法的優點是簡單快速,結果比較符合實際情況。

缺點是,單純以"詞頻"衡量一個詞的重要性,不夠全面,有時重要的詞可能出現次數并不多。

而且,這種算法無法體現詞的位置信息,出現位置靠前的詞與出現位置靠后的詞,都被視為重要性相同,這是不正確的。

(一種解決方法是,對全文的第一段和每一段的第一句話,給予較大的權重。)

任務二:TF-IDF與與余弦相似的應用:找相似文章

除了找到關鍵詞,還希望找到與原文章相似的其他文章

需要用到余弦相似性:

句子A:我喜歡看電視,不喜歡看電影

句子B:我不喜歡看電視,也不喜歡看電影

色狠狠亚洲爱综合网站基本思路是:如果這兩句話的用詞越相似,它們的內容就應該越相似。

色狠狠亚洲爱综合网站      因此,可以從詞頻入手,計算它們的相似程度。

?

1、分詞

  句子A:我/喜歡/看/電視,不/喜歡/看/電影。

  句子B:我/不/喜歡/看/電視,也/不/喜歡/看/電影。

2、列出所有值

色狠狠亚洲爱综合网站  我,喜歡,看,電視,電影,不,也。

3、計算詞頻

色狠狠亚洲爱综合网站  句子A:我 1,喜歡 2,看 2,電視 1,電影 1,不 1,也 0。

  句子B:我 1,喜歡 2,看 2,電視 1,電影 1,不 2,也 1

4、寫出詞頻向量。

  句子A:[1, 2, 2, 1, 1, 1, 0]

  句子B:[1, 2, 2, 1, 1, 2, 1]

色狠狠亚洲爱综合网站我們可以通過夾角的大小,來判斷向量的相似程度。夾角越小,就代表越相似。

色狠狠亚洲爱综合网站假定a向量是[x1, y1],b向量是[x2, y2],那么可以將余弦定理改寫成下面的形式

tfidf02

?結論:

  我們就得到了"找出相似文章"的一種算法:

  • 使用TF-IDF算法,找出兩篇文章的關鍵詞
  • 每篇文章各取出若干個關鍵詞(比如20個),合并成一個集合,計算每篇文章對于這個集合中的詞的詞頻(為了避免文章長度的差異,可以使用相對詞頻);
  • 生成兩篇文章各自的詞頻向量
  • 計算兩個向量的余弦相似度,值越大就表示越相似

計算兩個向量的余弦相似度,值越大就表示越相似

任務三:如何通過詞頻,對文章進行自動摘要

色狠狠亚洲爱综合网站信息都包含在句子中,有些句子包含的信息多,有些句子包含的信息少。

色狠狠亚洲爱综合网站"自動摘要"就是要找出那些包含信息最多的句子。

句子的信息量用"關鍵詞"來衡量。如果包含的關鍵詞越多,就說明這個句子越重要。

Luhn提出用"簇"(cluster)表示關鍵詞的聚集。所謂"簇"就是包含多個關鍵詞的句子片段。

?

自動摘要

只要關鍵詞之間的距離小于"門檻值",它們就被認為處于同一個簇之中。Luhn建議的門檻值是4或5。

色狠狠亚洲爱综合网站也就是說,如果兩個關鍵詞之間有5個以上的其他詞,就可以把這兩個關鍵詞分在兩個簇。

簇的重要性 = (包含的關鍵詞數量)^2 / 簇的長度

其中的簇一共有7個詞,其中4個是關鍵詞。因此,它的重要性分值等于 ( 4 x 4 ) / 7 = 2.3。

?

然后,找出包含分值最高的簇的句子(比如5句),把它們合在一起,就構成了這篇文章的自動摘要

自動摘要

Comments

例1

?

有很多不同的數學公式可以用來計算TF-IDF。這邊的例子以上述的數學公式來計算。詞頻 (TF) 是一詞語出現的次數除以該文件的總詞語數。假如一篇文件的總詞語數是100個,而詞語“母牛”出現了3次,那么“母牛”一詞在該文件中的詞頻就是3/100=0.03。一個計算文件頻率 (IDF) 的方法是文件集里包含的文件總數除以測定有多少份文件出現過“母牛”一詞。所以,如果“母牛”一詞在1,000份文件出現過,而文件總數是10,000,000份的話,其逆向文件頻率就是 lg(10,000,000 / 1,000)=4。最后的TF-IDF的分數為0.03 * 4=0.12。

例2

色狠狠亚洲爱综合网站在某個一共有一千詞的網頁中“原子能”、“的”和“應用”分別出現了 2 次、35 次 和 5 次,那么它們的詞頻就分別是 0.002、0.035 和 0.005。 我們將這三個數相加,其和 0.042 就是相應網頁和查詢“原子能的應用” 相關性的一個簡單的度量。概括地講,如果一個查詢包含關鍵詞 w1,w2,...,wN, 它們在一篇特定網頁中的詞頻分別是: TF1, TF2, ..., TFN。 (TF: term frequency)。 那么,這個查詢和該網頁的相關性就是:TF1 + TF2 + ... + TFN。

讀者可能已經發現了又一個漏洞。在上面的例子中,詞“的”占了總詞頻的 80% 以上,而它對確定網頁的主題幾乎沒有用。我們稱這種詞叫“應刪除詞”(Stopwords),也就是說在度量相關性是不應考慮它們的頻率。在漢語中,應刪除詞還有“是”、“和”、“中”、“地”、“得”等等幾十個。忽略這些應刪除詞后,上述網頁的相似度就變成了0.007,其中“原子能”貢獻了 0.002,“應用”貢獻了 0.005。細心的讀者可能還會發現另一個小的漏洞。在漢語中,“應用”是個很通用的詞,而“原子能”是個很專業的詞,后者在相關性排名中比前者重要。因此我們需要給漢語中的每一個詞給一個權重,這個權重的設定必須滿足下面兩個條件:

色狠狠亚洲爱综合网站1.?一個詞預測主題能力越強,權重就越大,反之,權重就越小。我們在網頁中看到“原子能”這個詞,或多或少地能了解網頁的主題。我們看到“應用”一次,對主題基本上還是一無所知。因此,“原子能“的權重就應該比應用大。

2.?應刪除詞的權重應該是零。

色狠狠亚洲爱综合网站我們很容易發現,如果一個關鍵詞只在很少的網頁中出現,我們通過它就容易鎖定搜索目標,它的權重也就應該大。反之如果一個詞在大量網頁中出現,我們看到它仍然不是很清楚要找什么內容,因此它應該小。概括地講,假定一個關鍵詞 w 在 Dw 個網頁中出現過,那么 Dw 越大,w的權重越小,反之亦然。在信息檢索中,使用最多的權重是“逆文本頻率指數” (Inverse document frequency 縮寫為IDF),它的公式為log(D/Dw)其中D是全部網頁數。比如,我們假定中文網頁數是D=10億,應刪除詞“的”在所有的網頁中都出現,即Dw=10億,那么它的IDF=log(10億/10億)= log (1) = 0。假如專用詞“原子能”在兩百萬個網頁中出現,即Dw=200萬,則它的權重IDF=log(500) =2.7。又假定通用詞“應用”,出現在五億個網頁中,它的權重IDF = log(2)則只有 0.3。也就是說,在網頁中找到一個“原子能”的匹配相當于找到九個“應用”的匹配。利用 IDF,上述相關性計算的公式就由詞頻的簡單求和變成了加權求和,即 TF1*IDF1 + TF2*IDF2 +... + TFN*IDFN。在上面的例子中,該網頁和“原子能的應用”的相關性為 0.0069,其中“原子能”貢獻了 0.0054,而“應用”只貢獻了0.0015。這個比例和我們的直覺比較一致了

當前,真正在搜索引擎等實際應用中廣泛使用的是 tf-idf 模型。tf-idf 模型的主要思想是:如果詞w在一篇文檔d中出現的頻率高,并且在其他文檔中很少出現,則認為詞w具有很好的區分能力,適合用來把文章d和其他文章區分開來。

var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?44d5929b98ed1fd093ffc3d47ec712b9"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); document.writeln("");