iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
自我挑戰組

NLP 新手的 30 天入門養成計畫系列 第 11

[Day 11] - 原來文章是這麼找到的:TF-IDF (1)

  • 分享至 

  • xImage
  •  

昨天介紹了布林檢索,它的缺點在於只能找出和使用者提問相關的文檔,但並不能說明哪篇文檔的相關性更高,而今天要介紹的 TF-IDF 就可以解決這項問題。

TF-IDF ( Term Frequency - Inverse Document Frequency ) 是一種用於衡量單詞對於一份文檔重要程度的技術,它的做法是分為 TF 和 IDF 兩個部分計算,並將兩者相乘。

Term Frequency

首先要介紹的是 TF ( Term Frequency ),看到它的名字就知道,TF 的作用是判斷某一個單詞出現在某一篇文檔的頻率,計算方式如下:

TF = ( 單詞在文檔中出現的次數 ) / ( 文檔中的總單詞數 )

那為什麼會需要計算這個東西呢?

想像一下有一百篇新聞擺在面前,如果想要快速找出和美國總統大選相關的新聞,就應該要去找 ”美國”、”總統”、”選舉”、”候選人” 等關鍵字出現很多次的文章吧。

計算 TF 的原因就在於,我們認為這個單詞在這篇文章中出現的次數越多,代表這個單詞對這篇文章越重要。

以這三篇文章為例:

  • doc1

    This restaurant serves better pizza than the restaurant across the street because their pizza crust is crispier.

  • doc2

    To make a perfect coffee, use freshly ground coffee beans and hot water, then add milk and sugar to taste. The coffee will be ready to enjoy.

  • doc3

    On a stormy night, the wind howled, and the trees swayed as the wind grew stronger.

套用剛剛提到的計算方式,可以獲得以下結果:

TF(”pizza”, doc1) = 2 / 17

TF(”coffee”, doc2) = 3 / 27

TF(”wind”, doc3) = 2 / 16

可以看的出來,我所列出來的這三個單詞在他們各自的句子中出現的次數比其他單詞還高,代表他們在句子中具有重要的意義。

不過事情也不是那麼的絕對,以前幾天有介紹到的停用詞 ( Stop Word ) 為例,像是 atheand 等沒什麼意義的單詞在文章中無可避免的會出現很多次,但這並不代表他們對於這篇文章來說很重要,反而會造成 TF 計算出來的結果不好。

為了避免這種情況,我們需要使用 IDF 來抑制這個負面效果。

Inverse Document Frequency

IDF ( Inverse Document Frequency ) 的想法是計算這個單詞有沒有出現在很多篇文章中,以此決定這個單詞重不重要,它的計算方式如下:

IDF = ( 文檔總數 ) / ( 包含該單詞的文檔數 )

有點抽象的話我們可以實際計算看看:

IDF(”pizza”) = 3 / 1

IDF(”a”) = 3 / 2

IDF(”the”) = 3 / 3

因為這三篇文章中只有 doc1 和 pizza 有關,所以它的 IDF 比較高,而三篇文章都有出現 the,代表這個單詞其實很常見到,並不是很重要。

最後,我們要做的事情就是把 TF 和 IDF 相乘,才會是完整的 TF-IDF 分數,我們可以用 doc1 為例子說明:

Term TF IDF TF-IDF
This 1 / 17 3 / 1 0.176
restaurant 2 / 17 3 / 1 0.353
serve 1 / 17 3 / 1 0.176
better 1 / 17 3 / 1 0.176
pizza 2 / 17 3 / 1 0.353
than 1 / 17 3 / 1 0.176
the 2 / 17 3 / 3 0.118

在計算完 TF-IDF 之後可以發現,restaurantpizza 的分數最高,表示他們確實和這個文檔的相關性高,如果使用者搜尋了這兩個關鍵字,doc1 在所有被檢索到的文檔中的排名就會比較前面。

反觀 the 在 doc1 中同樣也出現了兩次,但因為它同樣出現在了三篇文檔中,最終的 TF-IDF 分數反而被抑制下去了,由此可見 TF-IDF 這個算法的確可行。

明天會繼續把 TF-IDF 講完,主要是 TF-IDF 進階型態的公式以及實作,這樣就可以順順地接到 BM25 了。

推薦文章
https://web.fe.up.pt/~ssn/wiki/_media/teach/dapi/202021/lectures/dapi2021-information-retrieval.pdf


上一篇
[Day 10] - 原來文章是這麼找到的:反向索引
下一篇
[Day 12] - 原來文章是這麼找到的:TF-IDF (2)
系列文
NLP 新手的 30 天入門養成計畫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言