跳转到内容

Tf-idf:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
Time killer留言 | 贡献
无编辑摘要
消歧义
 
(未显示15个用户的22个中间版本)
第1行: 第1行:
{{DISPLAYTITLE:tf-idf}}
'''TF-IDF'''(term frequency–inverse document frequency)是一種用於[[資訊檢索]]與[[文本挖掘]]的常用加權技術。TF-IDF是一種統計方法,用以評估一字詞對於一個文件集或一個[[語料庫]]中的其中一份[[文件]]的重要程度。字詞的重要性隨著它在文件中出現的次數成[[正比]]增加,但同時會隨著它在語料庫中出現的頻率成反比下降。TF-IDF加權的各種形式常被[[搜索引擎]]應用,作為文件與用戶查詢之間相關程度的度量或評級。除了TF-IDF以外,互聯網上的搜尋引擎還會使用基於連結分析的評級方法,以確定文件在搜尋結果中出現的順序。
{{NoteTA|G1=IT}}
'''tf-idf'''({{lang-en|'''t'''erm '''f'''requency–'''i'''nverse '''d'''ocument '''f'''requency}})是一種用於[[資訊檢索]]與[[文本挖掘]]的常用加權技術。tf-idf是一種統計方法,用以評估一字詞對於一個文件集或一個[[語料庫]]中的其中一份[[文件]]的重要程度。字詞的重要性隨著它在文件中出現的次數成[[正比]]增加,但同時會隨著它在語料庫中出現的頻率成反比下降。tf-idf加權的各種形式常被[[搜索引擎]]應用,作為文件與用戶查詢之間相關程度的度量或評級。除了tf-idf以外,互聯網上的搜尋引擎還會使用基於連結分析的評級方法,以確定文件在搜尋結果中出現的順序。


== 原理 ==
== 原理 ==
在一份給定的文件裡,'''詞頻'''(term frequency,tf)指的是某一個給定的詞語在該文件中出現的频率。這個數字是对'''词数'''(term count)的標準化,以防止它偏向長的文件。(同一個詞語在長文件裡可能會比短文件有更高的詞数,而不管該詞語重要與否。)對於在某一特定文件裡的詞語<math> t_{i} </math>來說,它的重要性可表示為:

TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TF-IDF实际上是:TF * IDF,TF词频(Term Frequency),IDF逆向文件頻率(Inverse Document Frequency)。TF表示词条在文档d中出现的频率。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。如果某一类文档C中包含词条t的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当m大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。但是实际上,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别于其它类文档。这就是IDF的不足之处。
在一份給定的文件裡,'''詞頻'''(term frequency,TF)指的是某一個給定的詞語在該文件中出現的频率。這個數字是对'''词数'''(term count)的归一化,以防止它偏向長的文件。(同一個詞語在長文件裡可能會比短文件有更高的詞数,而不管該詞語重要與否。)對於在某一特定文件裡的詞語<math> t_{i} </math>來說,它的重要性可表示為:


:<math> \mathrm{tf_{i,j}} = \frac{n_{i,j}}{\sum_k n_{k,j}}</math>
:<math> \mathrm{tf_{i,j}} = \frac{n_{i,j}}{\sum_k n_{k,j}}</math>


以上式子中<math>n_{i,j}</math>是該詞在文件<math>d_{j}</math>中的出現次數,而分母則是在文件<math>d_{j}</math>中所有字詞的出現次數之和。
以上式子中假設文件<math>d_{j}</math>中共有k個詞語,<math>n_{k,j} </math> 是<math> t_{k} </math>在文件<math>d_{j}</math>中出現的次數。因此,分子<math>n_{i,j}</math>是該詞在文件<math>d_{j}</math>中的出現次數,而分母則是在文件<math>d_{j}</math>中所有字詞的出現次數之和。


'''逆向文件頻率'''(inverse document frequency,IDF)是一個詞語普遍重要性的度量。某一特定詞語的IDF,可以由總文件數目除以包含該詞語之文件的數目,再將得到的商取[[對數]]得到


'''逆向文件頻率'''(inverse document frequency,idf)是一個詞語普遍重要性的度量。某一特定詞語的idf,可以由總文件數目除以包含該詞語之文件的數目,再將得到的商取對數得到。通常,這個[[對數]]取以10為底(記為lg),如下所示
:<math> \mathrm{idf_{i}} = \log \frac{|D|}{|\{j: t_{i} \in d_{j}\}|}</math>

:<math> \mathrm{idf_{i}} = \lg \frac{|D|}{|\{j : t_{i} \in d_{j}\}|}</math>

然而,根據不同的應用場景和領域,也有使用其他類型的[[對數]],例如以2為底的[[對數]](提供信息量的度量,以比特為單位)或[[自然對數]](常用於自然語言處理和其他計算應用中)。選擇哪種對數底數取決於特定情境的需求:


其中
其中


* |D|:語料庫中的文件總數
* |D|:語料庫中的文件總數
* <math> |\{ j: t_{i} \in d_{j}\}| </math>:包含詞語<math> t_{i} </math>的文件數目(即<math> n_{i,j} \neq 0</math>的文件數目)如果该词语不在中,就会导致分母零,因此一般情况下使用<math>1 + |\{j : t_{i} \in d_{j}\}|</math>
* <math> |\{ j: t_{i} \in d_{j}\}| </math>:包含詞語<math> t_{i} </math>的文件數目(即<math> n_{i,j} \neq 0</math>的文件數目)如果詞語不在料中,就致分母零,因此一般情况下使用<math>1 + |\{j : t_{i} \in d_{j}\}|</math>


然後
然後
第23行: 第26行:
:<math> \mathrm{tf{}idf_{i,j}} = \mathrm{tf_{i,j}} \times \mathrm{idf_{i}} </math>
:<math> \mathrm{tf{}idf_{i,j}} = \mathrm{tf_{i,j}} \times \mathrm{idf_{i}} </math>


某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產生出高權重的TF-IDF。因此,TF-IDF傾向於過濾掉常見的詞語,保留重要的詞語。
某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產生出高權重的tf-idf。因此,tf-idf傾向於過濾掉常見的詞語,保留重要的詞語。


== 例子 ==
== 例子 ==
一:有很多不同的[[數學公式]]可以用來[[計算]]TF-IDF。這邊的例子以上述的數學公式來計算。詞頻(TF)是一詞語出現的次數除以該文件的總詞語數。假如一篇文件的總詞語數是100個,而詞語「母牛」出現了3次,那麼「母牛」一詞在該文件中的詞頻就是3/100=0.03。一個計算文件頻率(DF)的方法是測定有多少份文件出現「母牛」一詞,然後除以文件集裡包含文件總數。所以,如果「母牛」一詞在1,000份文件出現過,而文件總數是10,000,000份的話,其逆向文件頻率就是log(10,000,000 / 1,000)=4。最後的TF-IDF的分數為0.03 * 4=0.12。
有很多不同的[[數學公式]]可以用來[[計算]]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。

二:根据关键字k1,k2,k3进行搜索结果的相关性就变成TF1*IDF1 + TF2*IDF2 + TF3*IDF3。比如document1的term总量为1000,k1,k2,k3在document1出现的次数是100,200,50。包含了k1, k2, k3的document总量分别是
1000,10000,5000。document set的总量为10000。
TF1 = 100/1000 = 0.1
TF2 = 200/1000 = 0.2
TF3 = 50/1000 = 0.05
IDF1 = In(10000/1000) = In (10) = 2.3
IDF2 = In(10000/10000) = In (1) = 0;
IDF3 = In(10000/5000) = In (2) = 0.69
这样关键字k1,k2,k3与document1的相关性= 0.1*2.3 + 0.2*0 + 0.05*0.69 = 0.2645
其中k1比k3的比重在document1要大,k2的比重是0.

三:在某个一共有一千词的网页中“原子能”、“的”和“应用”分别出现了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) =6.2。又假定通用词“应用”,出现在五亿个网页中,它的权重IDF = log (2)则只有0.7。也就只说,在网页中找到一个“原子能”的比配相当于找到九个“应用”的匹配。利用IDF,上述相关性计算个公式就由词频的简单求和变成了加权求和,即TF1*IDF1 + TF2*IDF2 +... + TFN*IDFN。在上面的例子中,该网页和“原子能的应用”的相关性为0.0159,其中“原子能”贡献了0.0124,而“应用”只贡献了0.0035。这个比例和我们的直觉比较一致了。


== 在向量空間模型裡的應用 ==
== 在向量空間模型裡的應用 ==
TF-IDF權重計算方法經常會和[[餘弦相似性]](cosine similarity)一同使用於[[向量空間模型]]中,用以判斷兩份文件之間的[[相似性]]。
tf-idf權重計算方法經常會和[[餘弦相似性]](cosine similarity)一同使用於[[向量空間模型]]中,用以判斷兩份文件之間的[[相似性]]。


== TFIDF的理论依据及不足 ==
== tf-idf的理论依据及不足 ==


TFIDF算法是建立在这样一个假设之上的:对区别文档最有意义的词语应该是那些在文档中出现频率高,而在整个文档集合的其他文档中出现频率少的词语,所以如果特征空间坐标系取TF词频作为测度,就可以体现同类文本的特点。另外考虑到单词区别不同类别的能力,TFIDF法认为一个单词出现的文本频数越小,它区别不同类别文本的能力就越大。因此引入了逆文本频度IDF的概念,以TFIDF的乘积作为特征空间坐标系的取值测度,并用它完成对权值TF的调整,调整权值的目的在于突出重要单词,抑制次要单词。但是在本质上IDF是一种试图抑制雜訊的加权,并且单纯地认为文本頻率小的单词就越重要,文本頻率大的单词就越无用,显然这并不是完全正确的。IDF的简单结构并不能有效地反映单词的重要程度和特征词的分布情况,使其无法很好地完成对权值调整的功能,所以TFIDF法的精度并不是很高。
tf-idf算法是建立在这样一个假设之上的:对区别文档最有意义的词语应该是那些在文档中出现频率高,而在整个文档集合的其他文档中出现频率少的词语,所以如果特征空间坐标系取tf词频作为测度,就可以体现同类文本的特点。另外考虑到单词区别不同类别的能力,tf-idf法认为一个单词出现的文本频数越小,它区别不同类别文本的能力就越大。因此引入了逆文本频度idf的概念,以tfidf的乘积作为特征空间坐标系的取值测度,并用它完成对权值tf的调整,调整权值的目的在于突出重要单词,抑制次要单词。但是在本质上idf是一种试图抑制雜訊的加权,并且单纯地认为文本頻率小的单词就越重要,文本頻率大的单词就越无用,显然这并不是完全正确的。idf的简单结构并不能有效地反映单词的重要程度和特征词的分布情况,使其无法很好地完成对权值调整的功能,所以tf-idf法的精度并不是很高。


此外,在TFIDF算法中并没有体现出单词的位置信息,对于Web文档而言,权重的计算方法应该体现出HTML的结构特征。特征词在不同的标记符中对文章内容的反映程度不同,其权重的计算方法也应不同。因此应该对于处于网页不同位置的特征词分别赋予不同的系数,然后乘以特征词的词频,以提高文本表示的效果。
此外,在tf-idf算法中并没有体现出单词的位置信息,对于Web文档而言,权重的计算方法应该体现出HTML的结构特征。特征词在不同的标记符中对文章内容的反映程度不同,其权重的计算方法也应不同。因此应该对于处于网页不同位置的特征词分别赋予不同的系数,然后乘以特征词的词频,以提高文本表示的效果。


== 參考資料 ==
== 參考資料 ==
第65行: 第46行:


== 外部連結 ==
== 外部連結 ==
* [http://portal.acm.org/citation.cfm?id=866292 Term Weighting Approaches in Automatic Text Retrieval]
* [http://portal.acm.org/citation.cfm?id=866292 Term Weighting Approaches in Automatic Text Retrieval]{{Wayback|url=http://portal.acm.org/citation.cfm?id=866292 |date=20060428010144 }}
* [http://elib.cs.berkeley.edu/cgi-bin/pl_dochome?query_src=&format=html&collection=Wilensky_papers&id=3&show_doc=yes Robust Hyperlinking]:An application of tf–idf for stable document addressability.


[[Category:情报检索]]
[[Category:情报检索]]

2024年11月8日 (五) 08:37的最新版本

tf-idf(英語:term frequency–inverse document frequency)是一種用於資訊檢索文本挖掘的常用加權技術。tf-idf是一種統計方法,用以評估一字詞對於一個文件集或一個語料庫中的其中一份文件的重要程度。字詞的重要性隨著它在文件中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。tf-idf加權的各種形式常被搜索引擎應用,作為文件與用戶查詢之間相關程度的度量或評級。除了tf-idf以外,互聯網上的搜尋引擎還會使用基於連結分析的評級方法,以確定文件在搜尋結果中出現的順序。

原理

[编辑]

在一份給定的文件裡,詞頻(term frequency,tf)指的是某一個給定的詞語在該文件中出現的频率。這個數字是对词数(term count)的標準化,以防止它偏向長的文件。(同一個詞語在長文件裡可能會比短文件有更高的詞数,而不管該詞語重要與否。)對於在某一特定文件裡的詞語來說,它的重要性可表示為:

以上式子中假設文件中共有k個詞語,在文件中出現的次數。因此,分子就是該詞在文件中的出現次數,而分母則是在文件中所有字詞的出現次數之和。


逆向文件頻率(inverse document frequency,idf)是一個詞語普遍重要性的度量。某一特定詞語的idf,可以由總文件數目除以包含該詞語之文件的數目,再將得到的商取對數得到。通常,這個對數取以10為底(記為lg),如下所示:

然而,根據不同的應用場景和領域,也有使用其他類型的對數,例如以2為底的對數(提供信息量的度量,以比特為單位)或自然對數(常用於自然語言處理和其他計算應用中)。選擇哪種對數底數取決於特定情境的需求:

其中

  • |D|:語料庫中的文件總數
  • :包含詞語的文件數目(即的文件數目)如果詞語不在資料中,就導致分母為零,因此一般情况下使用

然後

某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產生出高權重的tf-idf。因此,tf-idf傾向於過濾掉常見的詞語,保留重要的詞語。

例子

[编辑]

有很多不同的數學公式可以用來計算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。

在向量空間模型裡的應用

[编辑]

tf-idf權重計算方法經常會和餘弦相似性(cosine similarity)一同使用於向量空間模型中,用以判斷兩份文件之間的相似性

tf-idf的理论依据及不足

[编辑]

tf-idf算法是建立在这样一个假设之上的:对区别文档最有意义的词语应该是那些在文档中出现频率高,而在整个文档集合的其他文档中出现频率少的词语,所以如果特征空间坐标系取tf词频作为测度,就可以体现同类文本的特点。另外考虑到单词区别不同类别的能力,tf-idf法认为一个单词出现的文本频数越小,它区别不同类别文本的能力就越大。因此引入了逆文本频度idf的概念,以tf和idf的乘积作为特征空间坐标系的取值测度,并用它完成对权值tf的调整,调整权值的目的在于突出重要单词,抑制次要单词。但是在本质上idf是一种试图抑制雜訊的加权,并且单纯地认为文本頻率小的单词就越重要,文本頻率大的单词就越无用,显然这并不是完全正确的。idf的简单结构并不能有效地反映单词的重要程度和特征词的分布情况,使其无法很好地完成对权值调整的功能,所以tf-idf法的精度并不是很高。

此外,在tf-idf算法中并没有体现出单词的位置信息,对于Web文档而言,权重的计算方法应该体现出HTML的结构特征。特征词在不同的标记符中对文章内容的反映程度不同,其权重的计算方法也应不同。因此应该对于处于网页不同位置的特征词分别赋予不同的系数,然后乘以特征词的词频,以提高文本表示的效果。

參考資料

[编辑]
  • Salton, G. and McGill, M. J. 1983 Introduction to modern information retrieval. McGraw-Hill, ISBN 0-07-054484-0.
  • Salton, G., Fox, E. A. and Wu, H. 1983 Extended Boolean information retrieval. Commun. ACM 26, 1022–1036.
  • Salton, G. and Buckley, C. 1988 Term-weighting approaches in automatic text retrieval. Information Processing & Management 24 (5): 513–523.

外部連結

[编辑]