`
king_c
  • 浏览: 225477 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

TF/IDF 如何确定网页和查询的相关性

 
阅读更多

 

 写道
2006年6月27日 上午 09:53:00

发表者:吴军,Google 研究员

[我们已经谈过了如何自动下载网页、如何建立索引、如何衡量网页的质量(Page Rank)。我们今天谈谈如何确定一个网页和某个查询的相关性。了解了这四个方面,一个有一定编程基础的读者应该可以写一个简单的搜索引擎了,比如为您所在的学校或院系建立一个小的搜索引擎。]

我们还是看上回的例子,查找关于“原子能的应用”的网页。我们第一步是在索引中找到包含这三个词的网页(详见关于布尔运算的系列)。现在任何一个搜索引擎都包含几十万甚至是上百万个多少有点关系的网页。那么哪个应该排在前面呢?显然我们应该根据网页和查询“原子能的应用”的相关性对这些网页进行排序。因此,这里的关键问题是如何度量网页和查询的相关性。

我们知道,短语“原子能的应用”可以分成三个关键词:原子能、的、应用。根据我们的直觉,我们知道,包含这三个词多的网页应该比包含它们少的网页相关。当然,这个办法有一个明显的漏洞,就是长的网页比短的网页占便宜,因为长的网页总的来讲包含的关键词要多些。因此我们需要根据网页的长度,对关键词的次数进行归一化,也就是用关键词的次数除以网页的总字数。我们把这个商称为“关键词的频率”,或者“单文本词汇频率”(Term Frequency),比如,在某个一共有一千词的网页中“原子能”、“的”和“应用”分别出现了 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.0161,其中“原子能”贡献了 0.0126,而“应用”只贡献了0.0035。这个比例和我们的直觉比较一致了。

TF/IDF(term frequency/inverse document frequency) 的概念被公认为信息检索中最重要的发明。在搜索、文献分类和其他相关领域有广泛的应用。讲起 TF/IDF 的历史蛮有意思。IDF 的概念最早是剑桥大学的斯巴克-琼斯[注:她有两个姓] (Karen Sparck Jones)提出来的。斯巴克-琼斯 1972 年在一篇题为关键词特殊性的统计解释和她在文献检索中的应用的论文中提出IDF。遗憾的是,她既没有从理论上解释为什么权重IDF 应该是对数函数 log(D/Dw)(而不是其它的函数,比如平方根),也没有在这个题目上作进一步深入研究,以至于在以后的很多文献中人们提到 TF/IDF 时没有引用她的论文,绝大多数人甚至不知道斯巴克-琼斯的贡献。同年罗宾逊写了个两页纸的解释,解释得很不好。倒是后来康乃尔大学的萨尔顿(Salton)多次写文章、写书讨论 TF/IDF 在信息检索中的用途,加上萨尔顿本人的大名(信息检索的世界大奖就是以萨尔顿的名字命名的)。很多人都引用萨尔顿的书,甚至以为这个信息检索中最重要的概念是他提出的。当然,世界并没有忘记斯巴克-琼斯的贡献,2004年,在纪念文献学学报创刊 60 周年之际,该学报重印了斯巴克-琼斯的大作。罗宾逊在同期期刊上写了篇文章,用香农的信息论解释 IDF,这回的解释是对的,但文章写的并不好、非常冗长(足足十八页),把一个简单问题搞复杂了。其实,信息论的学者们已经发现并指出,其实 IDF 的概念就是一个特定条件下、关键词的概率分布的交叉熵(Kullback-Leibler Divergence)(详见上一系列)。这样,信息检索相关性的度量,又回到了信息论。

现在的搜索引擎对 TF/IDF 进行了不少细微的优化,使得相关性的度量更加准确了。当然,对有兴趣写一个搜索引擎的爱好者来讲,使用 TF/IDF 就足够了。 如果我们结合上网页排名(Page Rank),那么给定一个查询,有关网页综合排名大致由相关性和网页排名乘积决定。

 原文地址:http://www.google.com.hk/ggblog/googlechinablog/2006/06/blog-post_3066.html

 

分享到:
评论

相关推荐

    Using_TF-IDF_to_Determine_Word_Relevance_in_Document_Queries

    ### 使用TF-IDF确定文档查询中的词相关性 在当今数据驱动的世界中,从大量文本信息中高效地检索相关信息是一项至关重要的技能。本文探讨了如何应用TF-IDF(Term Frequency-Inverse Document Frequency)来确定文档...

    人工智能-项目实践-文档相关性搜索-用python实现TF-IDF算法,用于文档的相关性搜索

    在提供的压缩包文件中,"TF_IDF-master.zip"可能包含了一个完整的TF-IDF实现项目,可能包括了预处理、TF-IDF计算和相关性搜索的代码示例。打开并学习这个项目,你将能更好地理解上述概念,并能够实际操作实现文档...

    基于特定语料库的TF-IDF的中文关键词提取

    TF-IDF(Term Frequency-Inverse Document Frequency)是一种在信息检索和自然语言处理领域广泛应用的算法,用于衡量一个词在文档中的重要性。它基于词频(Term Frequency, TF)和逆文档频率(Inverse Document ...

    tf-idf.zip_Information Retrival_python IR_python TF-IDF_tf-idf

    在信息检索系统中,TF-IDF可用于计算查询与文档的相关性。当我们有一个查询(或关键词),我们可以计算查询中每个词的TF-IDF值,然后将这些值相加以得到查询的总得分。得分最高的文档被认为是与查询最相关的。 此外...

    TF-IDF.zip_tf-idf_tfidf

    2. **搜索引擎排名**:搜索引擎会利用TF-IDF来决定搜索结果的相关性,高TF-IDF值的词更可能与查询相关。 3. **信息检索**:在海量文档中查找相关信息时,TF-IDF有助于找出最相关的文档。 4. **文本摘要**:通过识别...

    TF-IDF.rar_TF-IDF algorithm

    1. **信息检索**:在搜索引擎中,TF-IDF常用于计算查询词与文档的相关性,帮助用户找到最相关的搜索结果。 2. **文本分类和聚类**:TF-IDF可以作为特征向量,用于区分不同类别的文本,帮助实现文本分类和聚类。 3. *...

    tf-idf分词算法

    在实际应用中,TF-IDF算法常用于信息检索系统,比如搜索引擎,用于确定搜索查询中的关键词与文档的相关性。同时,它也被用于文本分类和文档聚类,通过计算不同文档中词的TF-IDF值,可以找出相似的文档或识别文档的...

    TF_IDF:用python实现TF_IDF算法,用于文档的相关性搜索

    在提供的压缩包"TF_IDF-master"中,可能包含了实现TF-IDF算法的源代码示例,包括预处理、TF-IDF计算和相关性搜索的完整流程。通过学习和理解这些代码,你可以更好地掌握如何在实际项目中应用TF-IDF算法进行文本数据...

    TF-IDF及其算法1

    在搜索结果相关性计算时,会比较搜索关键词在每个文档中的TF-IDF值,高TF-IDF值的文档被认为更相关,因此会出现在搜索结果的前面。 5. **不足之处**:TF-IDF倾向于忽略那些在某一类别文档中频繁出现的词语,因为...

    Tf-idf.zip_tfidf

    例如,搜索引擎会使用TF-IDF来确定查询词与文档的相关性,从而决定搜索结果的排序。 5. **TF-IDF实现**:在Python中,可以使用`sklearn.feature_extraction.text`模块的`TfidfVectorizer`类来实现TF-IDF转换。这个...

    keywords_关键词提取_tf-idf.zip

    在信息检索中,它帮助确定查询词和文档的相关性;在文档分类中,它是特征向量的一种表示方式;在文本摘要中,TF-IDF用于挑选出最能代表原文的句子;在推荐系统中,它可以作为用户兴趣的表示。 6. **优化与扩展**: ...

    统计词频,和对文档进行分词处理,计算tf-idf值。

    TF-IDF的应用场景广泛,例如在搜索引擎中,通过计算查询词与文档之间的TF-IDF相似度,可以判断文档与查询的相关性,从而返回最相关的搜索结果。在文本分类中,可以提取每篇文档的TF-IDF向量,然后利用这些向量进行...

    理解TF-IDF:文本挖掘与信息检索的关键加权技术

    TF-IDF在搜索引擎的搜索结果排序中起着核心作用,它可以帮助判断文档与用户查询的相关性。搜索引擎通过计算查询中每个词与文档的TF-IDF得分,来决定哪些文档更匹配用户的搜索请求。此外,虽然TF-IDF在一定程度上能...

    行业资料-交通装置-一种在网络用车系统中使用TF-IDF评估承运车辆与地域相关性的方法.zip

    行业资料-交通装置-一种在网络用车系统中使用TF-IDF评估承运车辆与地域相关性的方法.zip

    基于TF-IDF的社交电商文本信息分类研究.pdf

    TF-IDF(Term Frequency-Inverse Document Frequency)是一种在信息检索和文本挖掘中常用的权重技术。其基本思想是,如果某个词在一篇文章中出现的频率高,而在其他文章中出现的频率低,则认为这个词具有很好的类别...

    python实现TF-IDF算法提取关键词

    TF-IDF(Term Frequency-Inverse Document Frequency)是一种在信息检索和自然语言处理中常见的用于评估一个词在文档集合中的重要性的统计方法。Python是实现这种算法的常用编程语言,其强大的数据处理库如scikit-...

    基于Python语言与TF-IDF向量模型在智能对话的应用.zip

    在智能对话领域,Python语言和TF-IDF向量模型是两个关键的技术工具,它们共同为构建高效、自然的对话系统提供了强大的支持。Python以其简洁的语法和丰富的库资源成为数据科学和自然语言处理(NLP)的首选语言,而TF-...

    IF-IDF算法(Python实现)

    搜索引擎会使用TF-IDF来计算用户查询与文档的相关性,从而返回最相关的搜索结果。高TF-IDF值的词通常被认为是文档的关键词,对于匹配查询更有价值。 例如,如果用户查询"Python IF-IDF算法",搜索引擎会计算这个...

    一篇介绍TFIDF的ppt

    TF-IDF,全称为Term Frequency-Inverse Document Frequency,是一种在...通过将文档和查询表示为向量,并计算它们之间的相似度,TF-IDF能够有效地帮助我们找到与查询最相关的文档,从而提供更符合用户需求的搜索结果。

Global site tag (gtag.js) - Google Analytics