概念地圖・TF-IDF 權重
分類:敘事
這一頁不只是把一個概念解釋一遍——一張自己畫的結構圖,加上拿台灣情境從頭走一次的實例演練、這個框架什麼時候會騙你,以及它接回 P.A.I.N. 之後長什麼樣。一頁必須交付的三層 →
TF-IDF 權重:哪個詞真的認得出這一份
那一年的一千張報修單裡,有九百七十張寫著「號誌」兩個字,而「跳掉」只出現在其中八張上。照「出現最多次」排,每一張的第一名都會是「號誌」——一千張長得一模一樣,等於什麼都沒排。TF-IDF 換了個秤法:先數這個詞在這一份出現幾次,再數整批文件有幾份也用了它,兩個數字相乘。常見詞被第二個數字壓下去,只在少數幾份出現的詞被抬起來。
兩個訊號相乘,五個詞分出高低
先看一份通用語料:一百份文件,其中一份裡挑出五個詞,逐個秤一次。
| 詞 | 這一份出現幾次 | 有幾份文件含它 | 稀有度(IDF) | 相乘後的權重 |
|---|---|---|---|---|
| A | 12 | 100 | 0 | 0 |
| B | 8 | 50 | 0.301 | 2.41 |
| C | 5 | 10 | 1.000 | 5.00 |
| D | 4 | 2 | 1.699 | 6.80 |
| E | 1 | 1 | 2.000 | 2.00 |
稀有度那一欄的算法是:把一百除以「有幾份文件含它」,再取以十為底的對數。A 在這一份出現十二次,是五個詞裡寫最多的——可是一百份文件全部都有它,稀有度那一欄歸零,相乘之後整條長條也歸零。E 走到另一個極端:只有一份文件含它,稀有度是全場最高的二點零,然而這一份只寫了它一次,乘完只剩二點零,排在倒數第二,只贏過完全沒有分辨力的 A。真正排第一的是 D——出現四次,只有兩份文件含它,兩邊都沒有站到端點上。
這個詞算不算關鍵字,看三件事
秤一個詞之前,這三件事你要答得出來。前兩件是數出來的,第三件要用眼睛驗。
一、在這一份裡,它被寫了幾次。翻開一張報修單,同一個零件名被重複提到,通常代表它是這一張的重點——民眾越寫越多次,代表那件事在他眼裡越難忽略。這一步只看眼前這一張,不管別人怎麼寫。它也是唯一會被「這一份的長短」影響的地方:一張寫得落落長的單子,每個詞的次數天生就會偏高,秤之前記得先除以總字數換成比例。自問:這個詞在這一份裡出現幾次?
二、整批裡,有幾份也寫了它。這一步要把眼睛從單張抬起來,看整疊。數的是「有幾份文件含這個詞」——一份文件裡寫了很多次還是只寫一次,在這一步一律只算一份。這個定義最容易被記反:它量的是分布的廣度,跟出現次數是分開算的兩件事。一個詞如果整疊都有,它就沒有能力把任何一份挑出來;一個詞如果只躺在角落幾份上,它一開口就等於報上了門牌號碼。自問:我手上那一整批文件,有幾份也有它?
三、遮住其他欄位,只留這個詞,還認得出這一份嗎。把一張報修單的其他內容全部蓋掉,只露出秤出來排在最前面的那個詞,然後回頭去那疊裡撈——撈得回同一張,這個權重就是對的。撈出來一大把,代表你秤到的還是通用詞,只是它剛好在這一份裡被多寫了幾次。內部文件的自動分類做不準,多半就卡在這一關:分數算得漂漂亮亮,最高分的那個詞卻誰都認得,等於沒有替任何一份掛上牌子。自問:只留這個詞,我還挑得出這一份嗎?
一疊交通號誌報修單,逐詞秤一次
底下這個台灣中部某縣市的號誌維護窗口,是為了把這個結構講清楚而編出來的示意情境,沒有指涉任何真實機關。全年收到一千張報修單,我們挑其中一張,把上面的四個詞逐個秤一遍。
- 「號誌」寫了三次,一千張裡有九百七十張都有它:稀有度只剩零點零一三,乘完是零點零四。它在這一張被寫最多次,卻連把這一張跟隔壁那張分開都做不到。寫最多次的詞,往往是這批文件的背景音
- 「左轉」寫了兩次,一千張裡有兩百一十張有它:稀有度零點六七八,乘完一點三六。它開始有分辨力了——至少把這一張劃進「路口轉向」那一群。範圍縮到兩成,人就動得了
- 「秒數」寫了兩次,一千張裡有一百二十張有它:稀有度零點九二一,乘完一點八四。同樣寫兩次,它比「左轉」再往前一步,因為含它的張數更少。次數打平時,稀有的那個勝出
- 「跳掉」只寫了一次,一千張裡只有八張有它:稀有度衝到二點零九七,乘完二點一零,全場最高。派工員真正要找的那八張,靠的是這個只寫一次的詞
這一張單子上被寫最多次的是「號誌」,被秤到最前面的卻是「跳掉」——差別來自那一千張的分布,跟文筆無關。維護窗口真正的痛,是派工員每天早上要從一疊單子裡認出「哪幾張講的是同一種故障」。「號誌」把一千張全部貼上同一個標籤,等於沒貼;「跳掉」只落在八張上,一秤就把那八張從一千張裡撈出來,而它在那八張上通常只被寫了一次。把這把秤接到工單系統上,能做的事很直接:讓系統自動標出每一張權重最高的詞,再把同一個詞的單子併成一個工單群,維修班一次帶齊零件出門,省下來的是重複跑同一個路口的車程。以上為說明結構用的示意情境,僅供理解框架之用。
TF-IDF 什麼時候會騙你
- 同一件事換個講法,它就當成兩個詞。「秒數跳掉」「時制錯亂」「號誌亂跳」在民眾筆下講的是同一種故障,在 TF-IDF 眼裡卻是三串互不相干的字。三個說法各自被分散秤過一輪,每一個含它的份數都不夠低,權重也就都抬不起來——真正該被撈出來的那一族故障,被自己的三種說法稀釋掉了。要補這一刀,得先做同義詞歸戶再秤,光調公式沒有用。
- 語料一換,同一個詞的份量就翻臉。稀有度是拿整批文件當分母算出來的,換一批文件就是換一把尺。「號誌」在交通報修單裡是背景音,權重壓到接近零;同一個詞丟進全市整年的市民陳情裡,含它的份數掉得很低,權重立刻竄到前面。所以任何一次「這個詞很關鍵」的結論,都只在你當初那疊文件裡成立——換季、換部門、換年度,都得重秤一次。
- 只寫過一次的錯字,會被它捧成第一名。稀有度最高的常常是打錯的字、系統代碼、承辦人的姓氏——它們在整疊裡只出現一兩份,分母小到極點,權重自動衝上去。招牌圖裡的 E 就是這種東西的原型:稀有度全場最高,只靠這一份寫過一次撐著。實務上一定要配一道下限,把出現份數過少的詞整批擋掉,否則秤出來的關鍵字清單會是一堆亂碼。
秤完之後留下來的那幾個詞
秤詞,其實是在秤距離。
TF-IDF 的兩條曲線,量的都是文件跟文件之間的距離——一個詞能把這一份從另外九百九十九份裡拉開多遠,它就有多重。這件事《痛點》裡有個對應:一個創業點子值不值錢,看的是它能不能把你要服務的那群人,從整個市場裡切出來;被講過幾次,秤不出這件事。人人都在喊的痛,跟「號誌」一樣,喊得再大聲也切不出任何人。這張圖畫得出哪個詞最能認出這一份,畫不出那個詞背後有沒有人正在痛——「跳掉」權重最高,只代表它罕見,那八張單子背後的駕駛有沒有因為秒數亂跳差點撞上,這把秤一個字都秤不出來。今晚可以做一件小事:打開你最近寫的三份提案,把三份都出現的字圈掉,剩下的那幾個字,才是你真正在賣的東西。
關於 TF-IDF,常被問到的幾件事
IDF 到底在數什麼?
數的是「整批文件裡,有幾份含這個詞」,跟它在某一份裡出現幾次分開算。一份文件把同一個詞寫了三十次,在 IDF 這一步也只算一份。算法是把文件總數除以含它的份數,再取對數:含它的份數越少,這個值越大;整批文件都有它的時候,一除等於一,取完對數是零,這個詞的權重整條歸零——招牌圖裡的 A 就是這樣被歸零的。
為什麼要取對數?
不取的話,稀有度會被拉得太開。一千份裡有兩份含它,一千除以二是五百;只有一份含它,是一千。這種級距會大到把詞頻那一邊完全壓掉,秤出來的永遠是最罕見的那個字。取以十為底的對數之後,五百變成二點七、一千變成三——差距被壓平,詞頻那一邊才有機會說話。對數在這裡的角色,是把「稀有」這件事的邊際效益調降。
詞頻那一半要不要除以文件長度?
只要你的文件長短不一就要。原始詞頻是「出現幾次」,一篇兩千字的文章跟一則兩百字的留言擺在一起秤,長的那篇每個詞的次數天生就高。常見作法是除以該份文件的總詞數換成比例,也有作法是先取一次對數壓平。招牌圖那五個詞來自同一份文件,直接用次數比較不會出問題;跨文件比較時,這一步省不得。
現在還有人用 TF-IDF 嗎?
有,而且用得比想像中多。它算得快、不用訓練、每一個分數都追得回原始數字——出了問題可以逐詞攤開來看是哪一步秤歪了。很多搜尋系統的第一層過濾仍然是它的近親 BM25,把候選文件縮到幾百份之後,才交給語意模型細排。小團隊做內部文件檢索、客服工單分類,拿它當第一版通常就夠用,等到同義詞的問題真的痛起來,再往上疊。
數一次自己文件裡最常出現的那個詞,它可能什麼都沒說。真正認得出你的,是那些只在你這一份裡反覆出現、在別人那裡難得一見的字——同樣的直覺,資訊熵用在一整則訊息上,這裡把它縮到單一個詞;至於為什麼分布尾端的東西反而最有辨識力,可以再看一次長尾分布那張圖。
喜歡這篇文章嗎?
每週幫你拆二本好書,把判斷力、好書金句、好問題,直送你的信箱。
不適合你可隨時退訂 · 每週兩封,陪你把書讀進生活。
送出即表示同意我們依隱私權政策使用你的 email。