TF-IDF算法原理和公式
一、什么是TF-IDF算法
TF-IDF算法是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,因特网上的搜索引擎还会使用基于链接分析的评级方法,以确定文件在搜寻结果中出现的顺序。
从事SEO行业时间比较长的人应该都听说过TF-IDF算法,TF-IDF算法属于搜索引擎中的核心部分。TF-IDF算法是增加相关词的覆盖率,以及高优布局关键词密度,从而在百度谷歌等搜索引擎内容质量这一项上的排名加分,获取超高分值。下面是TF-IDF公式
大家看了定义之后跟我一样是懵的吧,为了便于大家理解,我们来举一个简单易懂的例子。
假如说我们在百度上搜索“水果”这个词,百度爬虫抓取的网站内容有下面5个,你觉得哪个内容排名第一?
- 内容1: 水果有水果,水果,水果,水果,水果
- 内容2: 水果有苹果,桃子,西瓜,菠萝,梨子
- 内容3: 蔬菜都很好吃,我最爱吃茄子了
- 内容4: 苹果,梨子都是很好吃的水果
- 内容5:好吃的水果有西瓜,苹果,葡萄,其他水果还有菠萝,猕猴桃
相信很多人心里面有了答案,大家凭直觉,内容2 跟内容5 应该排名靠前,内容5很可能是第1,内容2是排名第2。
最终的排名顺序为52413,至于为什么呢?核心词为“水果”,5和2里都有“水果”和“苹果”两个关键词且5里有出现两次“水果”,4比2少了一个苹果关键词,1里面包括有“水果”这个关键词但有堆砌行为,3和核心词没有相关性。
其实按照TF-IDF算法也能得出这个结论,那么TF-IDF是怎么做的,请大家跟上我的步伐。
二、TF-IDF算法的计算步骤
第1步:计算逆文档频率
我们先统计各个词语被包含的文章数。比如“水果”被4篇文章(内容1、2、4、5)引用,4就是“水果”的逆文档频率。
分词后,各个单词的逆文档频率如下:
水果=4、苹果=3、好吃=2、菠萝=2、西瓜=2、梨子=2,桃子=1、猕猴桃=1、蔬菜=1,茄子=1
PS: IDF= log(语料库中的文件总数 / 包含词语 t 的文件数目),为了便于理解,这里做了精简。
按照我们的直觉,如果一篇文章把逆文档频率最高的前面的词都包含了,说明这篇文章内容更贴合用户意图,更受到搜索引擎喜欢。回到例子,”水果、苹果”是本例中重要性最高的2个词,如果内容中包含“水果、苹果”,那么这篇内容质量就越好。
所以把包含“水果、苹果”的内容拿出来,就是比较靠谱的内容了:
- 内容2: 水果有苹果,桃子,西瓜,菠萝,梨子
- 内容4: 苹果,梨子都是很好吃的水果
- 内容5: 好吃的水果有西瓜,苹果,葡萄,其他水果还有菠萝,猕猴桃
第2步:计算词频(TF)
我们把内容1、内容3砍掉了,剩下的内容2、内容4、内容5怎么排序。我们想一下,一个词语在内容中出现的次数越高,也说明这个词语对这篇文章更重要。回到本例,“水果”是我们的核心词,那么因为内容5中出现“水果”两次,内容2、内容4次数是1,那么内容5胜出。最后的排序结果如下
- 内容5: 好吃的水果有西瓜,苹果,葡萄,其他水果还有菠萝,猕猴桃 (第一名)
- 内容2: 水果有苹果,桃子,西瓜,菠萝,梨子(第二名)
- 内容4: 苹果,梨子都是很好吃的水果(第三名)
- 内容1: 水果有水果,水果,水果,水果,水果(相关度不够,被剔除)
- 内容3: 蔬菜都很好吃,我最爱吃茄子了( 相关度不够,被剔除 )
以上是砍了又砍的TF-IDF算法简化解读版,真实的TFIDF算法比这个要正规复杂很多,这里只是让大家get到重点。
三、TF-IDF对SEO优化的重要性
TF-IDF对SEO非常!
我们可以看到,TFIDF算法,不仅可以衡量关键词对页面的重要性,更能衡量文章的广度相关性。对于百度、google来说,TFIDF算法的出现屏蔽了一大批用关键词密度来获取排名的SEO小白,同时提升了搜索质。
百度百科里面说了:“除了TF-IDF以外,因特网上的搜索引擎还会使用基于链接分析的评级方法,以确定文件在搜寻结果中出现的顺序”。意思是什么?你排名可以由下面的公式决定。文章得分=TFIDF得分+链接得分,这说明百度搜索引擎在用TFIDF!
1、百度在用TFIDF算法
百度专利中使用TFIDF的实锤,请查看百度专利文档《CN102737018A-基于非线性统一权值对检索结果进行排序的方法及装置-公开》。搜索算法来去匆匆,百度算法更新迭代也非常快,但是TFIDF算法有点不同,它是目前最核心的搜索算法之一。
2、TFIDF得分比重极高
如果搜索引擎确定使用TF-IDF对网页内容作为评判质量的因子,那么这个比重有多大?码迷知道,现在的搜索引擎一般用如下的算法计算网站页面得分:score(页面得分) = TFIDF分 * x + 链接分 * y + 用户体验分 * z(其中x+y+z=100%;);
大约在2G左右的谷歌搜索资料中,我们做了人工智能训练,预测TFIDF分值大约占百度40%左右的权重,谷歌更是达到了50%。
链接分,通过朋友透露,权重大约占百度20%左右,谷歌尚不清楚。
用户体验得分的比率,百度在40%左右。
所以说,做SEO优化:排名得分=40%的内容质量相关性(TFIDF)+40%的用户体验分+20%的链接分(域名+外链),TFIDF的确是较为关键的一部分。
TF-IDF算法原理和公式相关推荐
- SEO技术深度解析(TF-IDF算法原理及公式)
做为SEO行业老鸟应该听说过TF-IDF算法,TF-IDF算法属于搜索引擎中的核心部分.TF-IDF算法是增加相关词的覆盖率,以及高优布局关键词密度,从而在百度谷歌等搜索引擎内容质量这一项上的排名加分 ...
- 关键词提取算法—TF/IDF算法
关键词提取算法一般可分为有监督学习和无监督学习两类. 有监督的关键词提取方法可以通过分类的方式进行,通过构建一个较为完善的词表,然后判断每个文档与词表中的每个词的匹配程度,以类似打标签的方式,达到关键 ...
- 随笔_从《芳华》影评到TF/IDF算法
前两天看好多<芳华>的影评说:为什么好人没好报?于是感叹一堆世态炎凉,人性丑陋什么的.我觉得这问题是:为什么中央空调(对谁都温暖)往往不被看好. 先说说TF/IDF算法,这是一种信息处 ...
- 搜索引擎:文本分类——TF/IDF算法
原理 TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类.TFIDF实际上是:TF * IDF,TF ...
- PyTorch-Adam优化算法原理,公式,应用
概念:Adam 是一种可以替代传统随机梯度下降过程的一阶优化算法,它能基于训练数据迭代地更新神经网络权重.Adam 最开始是由 OpenAI 的 Diederik Kingma 和多伦多大学的 Jim ...
- tfidf算法 python_tf–idf算法解释及其python代码实现(下)
tf–idf算法python代码实现 这是我写的一个tf-idf的简单实现的代码,我们知道tfidf=tf*idf,所以可以分别计算tf和idf值在相乘,首先我们创建一个简单的语料库,作为例子,只有四 ...
- 欧几里得最短距离公式_推荐算法原理(二)欧几里得距离计算物品间相似度
在上篇文章中介绍了如何利用余弦定理计算两个物品间的相似度:KiKlaus:推荐算法原理(一)余弦定理计算物品间相似度zhuanlan.zhihu.com 这种计算方法虽然简单,但是在衡量空间两个向量 ...
- 【算法】约瑟夫环原理及其公式
问题描述 将n个人围成一个圈,从1开始依次数数,数到k或者k的倍数时,这个人出局,如此循环直到环中只剩一个人的时候这个人获胜 算法原理 参考文章最浅显易懂的约瑟夫环讲解_秃头哥编程-CSDN博客_约瑟 ...
- 《Hadoop与大数据挖掘》——2.6 TF-IDF算法原理及Hadoop MapReduce实现
本节书摘来自华章计算机<Hadoop与大数据挖掘>一书中的第2章,第2.6节,作者 张良均 樊哲 位文超 刘名军 许国杰 周龙 焦正升,更多章节内容可以访问云栖社区"华章计算机& ...
- TF-IDF与BM25算法原理
1. TF-IDF原理 TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的一份文件的重要程度.字词的重要性随着它在文件中出现的次数成正比,但同时会随着它在语料库中出现的频率成反比 ...
最新文章
- 对于金融的简单理解(一)
- COCO2017数据集api说明
- 近期活动盘点:俞士纶见面会、2018未来医疗100强论坛、清华校友三创论坛、2018年中国数字政府论坛(12.18-12.21)...
- linux下的getopts
- pr如何跳到关键帧_教你如何使用Final cut pro X制作拉伸缩放旋转的效果|键盘|final|pro|cut...
- Rsync:一个很实用的文件同步命令
- Winform 进度条弹窗和任务控制
- android app源码大全_Android秋招秘籍,看我如何搞定BAT,Vivo,爱奇艺
- 程序员如何在百忙中更有效地利用时间,如何不走岔路,不白忙(忙得要有效率,要有收获)...
- nosuchelementexception 是什么异常_老公出轨有哪些日常表现?老公出轨异常表现
- Flutter布局常用widgets
- 详述ArrayList类contains方法
- python学习-- Django根据现有数据库,自动生成models模型文件
- java 二叉树转数组_java二叉树怎么转成数组?java怎么实现二叉树?
- 31、查询 1990 年出生的学生名单
- python培训班大概多少钱
- MacOSX安装OpenCC实现繁体字转简体字
- 神码ai人工智能写作机器人_机器学习和人工智能最佳书籍
- SQL学习笔记(完整)
- 安全帽检测系统工地测试分析