什么是 TF-IDF,它在全文搜索中是如何使用的?
TF-IDF(词频-逆文档频率)是一种数值统计,用于衡量一个词在文档中相对于文档集合(语料库)的重要性。它结合了两个指标:词频(TF),它计算一个词在文档中出现的频率;以及逆文档频率(IDF),它惩罚那些在许多文档中频繁出现的词。TF 和 IDF 的乘积给出一个分数,突出显示特定文档更独特的词。例如,如果单词“区块链”在一个文档中出现 10 次,但在其他文档中很少出现,则它将具有较高的 TF-IDF 分数,表明它与该文档的相关性。
计算和在搜索中的应用 要计算 TF-IDF,首先计算 TF,即一个词在文档中出现的次数除以该文档中的总词数。IDF 是文档总数除以包含该词的文档数的对数。例如,如果一个语料库有 1,000 篇文档,“数据库”出现在 100 篇中,则 IDF 为 log(1000/100) = 2。如果一个文档有“数据库”这个词,在 100 个总词数中出现了 5 次,则 TF 为 5/100 = 0.05。TF-IDF 分数为 0.05 * 2 = 0.1。在全文搜索中,此分数有助于按相关性对文档进行排名。当用户搜索“数据库优化”时,引擎会计算每个文档中每个词的 TF-IDF,将分数相加,然后返回总分最高的文档。
示例和实际使用 考虑一个包含三个文档的语料库
- “数据库系统使用索引进行优化。”
- “机器学习优化需要大型数据集。”
- “索引加快了数据库查询速度。”
搜索“数据库优化”会将查询标记化为 ["database", “optimization”]。对于文档 1,“数据库”出现一次(TF = 1/6 ≈ 0.17),“优化”出现一次(TF = 0.17)。如果“数据库”出现在 3 个文档中的 2 个文档中,“数据库”的 IDF 为 log(3/2) ≈ 0.18。“优化”出现在 2 个文档中,因此 IDF 为 log(3/2) ≈ 0.18。文档 1 的 TF-IDF 为 (0.17 * 0.18) + (0.17 * 0.18) ≈ 0.06。这两个词都具有较高 TF-IDF 分数的文档(如文档 1)排名更高。此方法确保文档中常见但在总体上很少见的词能够提高相关性,从而提高搜索准确性。