自然語言處理中,TF和IDF的概念

2021-05-22 07:23:21 字數 3700 閱讀 6408

====摘自網路,有修改====

tf-idf(term frequency–inverse document frequency)是一種用於資訊檢索與資訊探勘的常用加權技術。tf-idf是一種統計方法,用以評估一字詞對於乙個檔案集或乙個語料庫中的其中乙份檔案的重要程度。字詞的重要性隨著它在檔案中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。tf-idf加權的各種形式常被搜尋引擎應用,作為檔案與使用者查詢之間相關 ...

接下來讓我們看看,tf 和 idf 個是什麼東西呢?tf 全名是term frequency,也就是某個關鍵字出現的次數,譬如說某篇文章裡面,「電腦」這個詞出現很多次,或是「使用者需求」這個詞出現很多次,那麼這些詞句的出現頻率,就會很高。一篇文章中出現很多次的詞句,必定有其重要性。譬如說一篇論述「人工智慧」的文章,「人工智慧」這個詞句再文章中出現的頻率也一定很高。然而為什麼除了 tf (term frequency) 以外,還要有 idf (inverse document frequency) 呢?

讓我們先想想,如果單使用某個字詞出現的頻率,來判斷一篇文章最重要的關鍵字,會有什麼困難。首先,我們會遇到一些常用字詞,出現的頻率也很高,會和重要字詞出現的頻率一樣高,讓電腦因此無法分辨出,哪些是常用字詞,那些是重要字詞。如果就英文來說,有個規則是語言學家 (linguist) 歸納出來的規則,叫做 zipf』s law。

引述中文維基百科的一段介紹如下:

從根本上講, 齊夫定律 可以表述為, 在自然語言的 語素庫 裡, 乙個單詞出現的頻率與它在頻率表裡的排名成 反比. 所以, 頻率最高的單詞出現的頻率大約是出現頻率第二位的單詞的 2 倍,而出現頻率第二位的單詞則是出現頻率第四位的單詞的2倍。這個定律被作為任何與 power law probability distributions 有關的事物的參考。 這個 「定律」 是 harvard linguist george kingsley zipf (ipa [z?f])發表的。

比如, 在 brown 語庫, 「the」 是最常見的單詞,它在這個語庫中出現了大約 7 %(10 萬單詞中出現 69971 次)。正如齊夫定律中所描述的一樣,出現次數為第二位的單詞 「of」 佔了整個語庫中的 3.5% (36411次), 之後的是」and」 (28852次). 僅僅 135 但此項就佔了 brown 語庫的一半。

所以我們現在知道問題在哪邊了。如果只用詞句出現的頻率來判斷某一篇文章裡面最重要的關鍵字,我們可能會找到常用字,而不是最重要的字,像是英文裡面的 「the」、」a」、」it」,都是常常出現的字,但是通常一篇文章裡面最重要的字不是這些字,即使那些重要的字出現的頻率也很高。

這個時候我們要怎麼辦呢?idf 在這個時候就幫上忙了。在了解 idf 之前,我們先了解 df 是什麼。df 就是document frequency,也就是說,如果今天我們手中有固定 n 篇文章,某個關鍵字的 document frquency (df),就是說這個關鍵字在 n 篇文章裡面出現了幾次。inverse document frequency (idf) 則是把 df 取倒數,如此一來,乙個數字乘以 idf,就等於是除以 df 的意思。

有了 tf 和 idf 以後,我們就可以計算 tf 乘上 idf,對每乙個關鍵字都算出乙個分數。這個分數的高低,就代表了這個關鍵字在某篇文章中的重要程度。為什麼我們說這樣子可以找出重要的字,而不是常出現的字呢?因為 tf 會把某篇文章中,出現最多次的排在第一位,其次的排在第二位,以此類推。然而乘上 idf 以後,也就是除以 df,那些常常出現的字,像是英文中的 「the」、」a」、」it」,因為每一篇文章都會出現,所以 df 就大。df 大,取倒數之後的 idf 就小,idf 小,乘上 tf 以後,雖然」the」、」a」、」it」在某篇文章中出現的頻率很高,但是因為 idf 小,tf * idf 一相乘,重要性就變低了,我們 (電腦程式) 就不會把這些常出現的字,誤認為是重要的字了!

真正重要的字會得到什麼樣子的分數呢?如果這篇文章剛好在講 ai,「ai」 出現很多次,因此 「ai」 在這篇文章裡面的 tf 很高。然而我們電腦資料庫裡面的 n 篇文章,並不是每一篇都在講 ai,也因此」ai」可能只有在 n 篇文章裡面的某 3 篇文章出現,因此 df 只有 3,idf 變成 0.33,假設我們 n = 100 有 100 篇文章在資料庫裡面,其他常出現字像是 「the」 每一篇都出現,df 就是 100,idf 就是 0.01。所以 「ai」 的 idf 會比 「the」 的 idf 高,假設這篇文章中 「ai」 和 「the」 兩個字出現的次數剛好一樣,乘上 idf 以後,」ai」 這個字的分數就比 「the」 這個字的分數來的高,電腦也就會判斷 「ai」 是這篇文章重要的關鍵字,而 「the」 這個字並不是這篇文章的重要關鍵字。

我們也可以比較一下人類和電腦的不同。電腦做數學數字的計算,或是執行固定的步驟 ,非常擅長,速度也很快。人類可以了解乙個字的意思,讀完一篇文章以後,了解了意思,之後要找這篇文章最重要的關鍵字,是從「意義」開始,回憶出或做出結論,這篇文章重要的關鍵字是什麼。

然而如果要電腦也遵照這個方向,先了解字的意義,再了解文章的意義,然後在做出結論,這篇文章的重要關鍵字,反而困難,因為要了解字的意義,電腦需要先有乙個語意網路 (semantic network),或是知識的分類關係樹 (ontology),把字句依照語意分門別類,有如生物裡面的「界門綱目科屬種」一般的關係分類,才有辦法了解乙個字和其他字的關係。之後要了解一篇文章,又必須要了解乙個句子,牽涉到自然語言處理 (nlp: natural language processing) 的問題,像是從句子裡面找出主詞、動詞、和受詞,以及補語,分辨出子句和主句,代名詞的指稱,以及前後文判斷產生不同的剖析 (parsing)。了解完一句,才能了解整篇文章。

因此,tf * idf 對於電腦來說,計算速度快,工程也不浩大,不用大型計算機就可以計算。這邊也可以順便提到 strong ai 和 weak ai 的關係。如果就工程的角度,tf * idf 是個好方法,it works! 節省我們的時間,或是解決大問題中的乙個小環節。然而 strong ai 在這邊會提出「中文房間」(chinese room) 的論證,也就是說,電腦能夠找出重要關鍵字,是否就代表電腦真的「知道」(understand) 關鍵字的意義呢?

中文房間 (chinese room) 簡單地說,就是乙個人關在房間裡面,只留兩個視窗,乙個地方會送紙條出來,另乙個地方會送紙條出去。房間裡面有一本手冊,裡面寫滿對照表,記載者看到什麼英文本,就應該輸出什麼中文字,以及一些指令的對照,譬如說視窗送乙個指令說 combine,就把兩個中文字寫在一起才送出去。接著我們在外面就開始送英文句子進去這個房間,另乙個視窗就會有這句話的中文翻譯跑出來。然而這個論證想要坦討的就是,雖然這個房間看起來像是會把英文翻譯成中文,但是在房間裡面的那個操作人員並不懂中文,他指是按照指令,還有手冊裡面的對照表,機械式地動作,可是外面看起來像是這個房間會英翻中,因此這個房間應該懂得中文才對。

在這邊我的看法是,也許就近程來看,我們只要有可以解決問題的解答就可以,不管電腦是否真的懂 (understand) 字的意義。然而長期來說,如果我們真的需要具有人類的智力的電腦出現,能夠真的懂而不是行為上看起來懂,那麼就要仔細**中文房間這種論證。也許生物的方法,像是計算神經科學的方法,是乙個方向。

我們可能又會問,神經元只有動作電位和靜止兩個狀態,怎麼能了解意義?但是只有乙個神經元,或許沒辦法了解意義,全部大腦的神經元互動作用,意義可能就因此被了解了!其中的奧妙,就是計算神經科學嘗試要解答的問題之一。有興趣的讀者也可以一起從人腦開始,解決 strong ai 的問題。或是有數學的高手,也許某乙個數學理論,可以很漂亮地解決意義了解的問題也說不定,像是 manifolds,具有乙個集合使用不同面向來**的特性,同時具有 global 和 local 的性質,是個不錯的候選選項。從這個方向去解決 strong ai 也是另乙個可能性。總之,繼續努力研究就是了!

什麼是自然語言處理,自然語言處理目前的應用有哪些?

自然語言處理大體包括了自然語言理解和自然語言生成兩個部分,實現人機間自然語言通訊意味著要使計算機既能理解自然語言文字的意義,也能以自然語言文本來表達給定的意圖 思想等,前者稱為自然語言理解,後者稱為自然語言生成。自然語言處理是電腦科學領域與人工智慧領域中的乙個重要方向。自然語言處理的終極目標是用自然...

造飛機和自然語言處理?

自然語言處理60多年的發展過程,基本上可以分成兩個階段。早期的20多年,是科學家們走彎路的階段。全世界的科學家對計算機處理自然語言的認識都被自己侷限在人類學習語言的方式上,即用電腦模擬人腦,這20多年的成果幾乎為零。直到20世紀70年代,一些自然語言處理的先驅重新認識這個問題,找到了基於數學模型和統...

自然語言處理的應用

這篇文章是應老師要求創作的關於自然語言處理在自己專業的應用,因為我是計科專業,其應用較為廣泛,所以下面就來 自然語言處理的應用。1.詞法分析 基於大資料和使用者行為,對自然語言進行中文分詞 詞性標註 命名識體識別,定位基本語言元素,消除歧義,支撐自然語言的準確理解。中文分詞 將連續的自然語言文字,切...