TF-IDF到底是个啥玩意儿?十年老站长给你掰扯清楚
那天跟一帮搞SEO的哥们撸串,有人突然问:“TF-IDF到底是个啥玩意儿?为啥老有人提,但真用起来又觉得没啥卵用?”我灌了口啤酒,说:“其实吧,它就是个高级点的计数器。真的,别被名字唬住了。”说实话,我刚入行那会儿也一头雾水。什么词频、逆文档频率,听着跟大学高数似的。后来硬着头皮啃了几篇论文,又拿真实网站折腾了几个月,才发现——这东西的原理简单到令人发指。但它的想法,啧啧,确实挺妙。你想想,一篇文章,如果某个词翻来覆去地出现,那它多半跟主题有关,对吧?这就是TF(词频)干的事。但是,光看出现次数也不行。比如“的”、“是”、“在”这些词,几乎每篇都有,你数再多次也没意义。所以得给它们降降权——这就是IDF(逆文档频率)的活儿。把这两者一乘,嘿,TF-IDF值就出来了,简单粗暴。
这东西到底怎么算?一次给你掰扯明白
别怕数学,其实就两步走。第一步,TF:一个词在文档里出现的次数,除以文档的总词数。比如这篇文章5000字,“SEO”出现了50次,那TF就是0.01。第二步,IDF:用整个语料库的文档总数,除以包含那个词的文档数,再取个对数。比方说,你有100万篇文档,其中10万篇有“SEO”,那IDF就是log(100万/10万)=1。懂了吧?最后,TF乘IDF,0.01*1=0.01,这就是“SEO”在这篇文章里的权重。
乍一看,平平无奇。但关键是,它能自动去掉那些高频废话,把真正有区分度的词挖出来。打个比方,就像在一堆沙子里面筛金子——当然,有时候筛出来的也可能是石头,这个后面再说。
https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/db82b1ba-f7d2-4d84-ae1f-40e4224cf373.jpg
TF-IDF计算过程公式示例图
我刚学会那会儿,兴奋得不行,连夜写了个脚本,把我网站的所有文章跑了一遍。结果,看着那些关键词权重,有些地方简直想扇自己耳光——原来我辛辛苦苦写的“核心词”,在搜索引擎眼里可能还没一个不起眼的动词重要。
在SEO这块儿,TF-IDF到底咋用?
老鸟都知道,TF-IDF不是直接给谷歌看的排名因子。别犯傻,现在搜索引擎早就不用这么原始的算法了。但是!但是!它在内容优化,尤其是理解页面主题相关性的时候,能给你当个指南针。
我通常用它干两件事:一是扒竞争对手的页面,看看他们高频用了哪些词,然后跟我自己的对比。这招真的绝。你拿10个排名靠前的页面,把它们的正文扒下来,跑一次TF-IDF,立马能看出这群对手在“无意中”强调什么词。有时候会发现,诶,他们没人提某个长尾词,我要是补上,说不定就差异化出来了。另一次,发现大家都猛堆某个词,那这个词可能就是谷歌判断相关性的隐性指标,我赶紧也加上。
第二件事,自查内容是否跑题。写完一篇文章,丢进TF-IDF工具,看看数出来的高权重词,是不是你真正想瞄准的那些。如果不是,那完了,你可能在自嗨,搜索引擎一个字儿没get到。我有次写关于“网站迁移”的指南,结果算出来最高的是“服务器”和“配置”,而不是“迁移”和“301重定向”。果断大改,后来排名就上去了。你说神不神奇?
不过话说回来,也别魔怔了。TF-IDF就是个工具,不是真理。你要是完全按照它的权重去堆词,那文章就没法读了,跟机器人写的似的。记住:优先给人读,其次才是给算法。
https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/bb0641e8-7d46-419d-9921-efdf7f5fbd9b.jpg
TF-IDF在SEO内容审计中的应用流程图
别踩坑!TF-IDF的那些“坑”
https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/f539b4f8-77d8-4f2b-9095-8f0d6029018a.jpg
别踩坑!TF-IDF的那些“坑”
干了这么多年,我踩过的坑比你喝过的咖啡还多。第一个坑:语料库的选择能要命。你用维基百科算的IDF,跟用你行业垂直网站算的,完全是两码事。“苹果”这个词,在科技语料里,IDF低;在水果种植语料里,IDF高。你能拿水果领域的IDF去优化一篇测评iPhone的文章吗?显然不行,会偏到姥姥家。所以,语料库要尽量跟你的领域匹配。我一般扒竞品网站的内容自己建个小语料库,虽然麻烦,但准。
第二个坑:太短的文章不适用。如果一篇文章就200字,词频差异根本体现不出来,样本太少,噪声太大,算出来的值没啥置信度。建议起码800字以上再碰这个。
第三个坑:忽略词的语义关系。TF-IDF是个老古董,基于词袋模型,压根不知道“高兴”和“快乐”是近义词。它可以认为它们是两个独立的东西。所以,你可能会发现,一篇讲“二手车”的文章,TF-IDF死活给不了“旧车”的权重,但谷歌可是知道的。所以,TF-IDF只能做参考,不能当圣旨,还得用你的大脑加上语义分析。
还有,那些所谓的“TF-IDF密度”插件,很多是忽悠人的。你装一个在WordPress上,它提示你关键词密度过低,你就拼命加,最后文章读起来像复读机,被企鹅算法干死都不知道怎么死的。千万别信那些简单的红绿灯提示,自己手动算下,或者用Python跑个脚本,清楚得多。
还想往下挖?给你点儿硬核的
https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/bb43a5e1-e8ac-440f-a016-4b2bc7f44e3a.jpg
还想往下挖?给你点儿硬核的
要是你吃完上面这些还不满足,想玩点儿更精的,那试试TF-IDF的变种。比如BM25,现在主流搜索引擎都在用,它改进了TF的饱和问题,就是词频多了会衰减,不像TF-IDF那样线性增长。再比如,结合词向量,把TF-IDF权重作为词向量的加权,能搞出更准确的文档表示。不过这些就偏工程了,大部分站长用不到,除非你想自己搞内容分析工具。
我最近在实验一个事儿:用TF-IDF自动寻找内容差距。流程是:爬取排名前20页面的正文,生成每个页面的TF-IDF向量,然后把这些向量聚类。如果我的页面距离这些簇中心太远,就说明内容可能不达标或者跑偏了。目前效果还行,但需要人工审核,机器有时候真不靠谱。
最后唠叨一句:TF-IDF是尺子,不是画师。它能帮你测量,但不能替你创作。别再问“我的文章要多少TF-IDF值才够”这种蠢问题了,没有标准答案。关键是理解它的逻辑,然后用于启发你的策略。说完了,继续喝酒去。 已经推荐给朋友来看了,好东西就应该一起分享一起学习。 看完感觉打开了新思路,以后遇到类似情况知道该怎么处理了。 很多细节都考虑到了,看得出来是真正懂行的人在认真分享。 楼主分析得很到位,很多地方都很实用,已经默默收藏起来慢慢看。 看完很有启发,也引发了我不少思考,有空也想分享下自己的看法。 之前一直半知半解,看了你的解释一下子就明白了,讲得通俗易懂。 没想到还有这么多细节,之前一直没注意到,感谢楼主提醒和科普。 观点很成熟,分析也很理性,值得大家静下心来认真看一看。 看了这么多帖子,还是觉得你这篇最实在,条理清晰又容易理解。
页:
[1]