前言
本文主要是对TF-IDF和BM25在公式推演、发展沿革方面的演述,全文思路、图片基本来源于此篇公众号推文《搜索中的权重度量利器: TF-IDF和BM25》,侵删。
一 术语
- TF: Term Frequency,词频;衡量某个指定的词语在某份【文档】中出现的【频率】
- IDF: Inverse Document Frequency,逆文档频率;一个词语【普遍重要性】的度量。
- TF-IDF = TF*IDF
一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。 -----《TF-IDF 百度百科》
TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
- BM25
- 应用:BM25相关度打分,基于BM25与TextRank的单文档自动文摘(经Rouge评测,效果较为优异)
bm25 是一种用来评价搜索词和文档之间相关性的算法,它是一种基于概率检索模型提出的算法
二 TF-IDF
- <1>传统的TF-IDF
- 【TF】词汇word的词频(TF)值
[TF_{Score} = tf = frac{ 指定词汇word在第i份文档documents[i]中出现的次数 }{ 文档documents[i]的长度 }
]
+ 【IDF】词汇word的逆文档频率(IDF)值
[IDF_{Score} = log( frac{ 文档集documents的总数 }{ 指定词word在文档集documents中出现过的文档总数 } )
]
+ <span class="important">【TF-IDF/关联度计算】</span>词汇word与某份文档documents[j]的关联度得分(TF-IDF)
[TFIDF(word | docuements ) = Similarity(word | documents )
]
[Similarity(word | documents ) = TF_{Score}*IDF_{Score}
]
+ 短语sentence与某份文档documents[j]的关联度得分(TF-IDF)
[sentence = [word1,word2,...,wordi,...,wordn]
]
[TFIDF_{_{sentence}}(word | docuements ) = TFIDF_{_{word1}} + TFIDF_{_{word2}} + ... + TFIDF_{_{wordi}} + ... + TFIDF_{_{wordn}}
]
- <2>早期Lucence版的TF-IDF
- 【TF】
[TF_{Score} = sqrt(tf)
]
+ 【IDF】
[IDF_{Score} = log( frac{ 文档集documents的总数 }{ 指定词word在文档集documents中出现过的文档总数 + 1 } )
]
+ 【filedNorms】fieldNorms:对文本长度的归一化(Normalization)
[fieldNorms = (frac{1}{sqrt(文档documents[j]的长度)})
]
+ <span class="important">【TF-IDF/关联度计算】</span>
[TF-IDF(word | docuements ) = Similarity(word | documents )
]
[Similarity(word | documents ) = TF_{Score} * IDF_{Score} * fieldNorms
]
三 BM25
下一代的TF-IDF。
新版的lucence不再把TF-IDF作为默认的相关性算法,而是采用了BM25(BM是Best Matching的意思)。BM25是基于TF-IDF并做了改进的算法。
![](https://img2018.cnblogs.com/blog/1173617/201908/1173617-20190804153728052-2066553012.png)
四 文献
- 参考文献
- 推荐文献
- 补充:推荐文献
![](https://img2018.cnblogs.com/blog/1173617/201908/1173617-20190809095541398-255573085.png)