武汉SEO > SEO服务 > 正文

武汉SEO之TF-IDF算法实现文本相似度的seo算法原理

作者:武汉SEO推广 来源:武汉SEO 2019-07-25 11:45

武汉SEO之TF-IDF算法实现文本相似度的seo算法原理,主要应用于相似文本推荐等场景。通过使用TF-IDF算法,来找出文章的关键词,从我们每天发布的文章中提取一行或者多个关键词进行整理,计算出每篇文章中的关键词量是否相似,也就是我们经常检查飘红,一般检

武汉SEO之TF-IDF算法实现文本相似度的seo算法原理,主要应用于相似文本推荐等场景。通过使用TF-IDF算法,来找出文章的关键词,从我们每天发布的文章中提取一行或者多个关键词进行整理,计算出每篇文章中的关键词量是否相似,也就是我们经常检查飘红,一般检测0都是原创文章。检测值越小相似度越,反之越大就表示越相似,一般伪原创文章就是通过这种算法来避开文章的相似度。

TF-IDF算法

TF-IDF是一种在信息检索与自然语言处理领域常用的加权技术,可用于挖掘文章中的关键词,也可用于比较文本的相似度等。

1.基本概念

TF,词频(term frequency),即一个单词在文档中出现的次数。一般来说,在某个文档中反复出现的单词,往往能够表征文档的主题信息,即TF值越大,越能代表文档所反映的内容,那么应该给予这个单词更大的权值。

IDF,逆文档频率(inverse document frequency),是一个词语普遍重要性的度量。词频因子是与文档密切相关的,说一个单词的TF值,指的是这个单词在某个文档中的出现次数,同一个单词在不同文档中TF值很可能不一样。而逆文档频率因子IDF则与此不同,它代表的是文档集合范围的一种全局因子。给定一个文档集合,那么每个单词的IDF值就唯一确定,跟具体的文档无关。所以IDF考虑的不是文档本身的特征,而是特征单词之间的相对重要性。

规定t表示单词term,d表示文档document,n表示文档集合中总共有多少文档,df(t)表示单词t在其中多少个文档出现过。则TF-IDF的计算公式为

TF-IDF

 

其中,tf(t,d)表示单词t在文档d中出现的次数。具体计算TF的时候,基于不同的出发点,采纳的计算公式也不同,最直接的方式就是直接利用词频数,如上面的公式所示。比如文档中某个单词出现了5次,那么就将这个单词的TF值计为5。考虑到文章有长短之分,为了便于不同文章的比较,通常进行词频标准化,即某个单词t在某个文档d中的出现次数除以该文档d的总词数作为TF值。

与TF一样,IDF的计算公式变体也有很多,上面公式展示的是常用的基本公式。公式中加一是为了做数据平滑。考虑极端的情况,若某一个单词在文档集合所有文档中都出现,那么取log后值将为0,为了避免这种情况,在log计算后采用加一的方式进行平滑。而log计算中分子分母之所以加一,是为了避免某个单词没在文档集中任意文档中出现过,分母为零的情况。IDF的计算公式再次印证了我们上面的说法,IDF的计算与具体的某一文档无关。

从IDF计算公式可以看出,文档频率df(t)越高,则其IDF值越小,即越多的文档包含这个单词t。IDF反映了一个单词在整个文档集合中的分布情况,单词出现在其中的文档数目越多,IDF值越低,这个单词区分不同文档的能力也就越差。比如,中文中的"我们"这个词在中文文档中经常出现,相对而言,"机器学习"这个词在中文文档中就不如"我们"常见,那么"机器学习"这个词在文档集中区分不同文档的能力更强,更适合用于分类文档。

TF和IDF的计算公式变体有很多,大家感兴趣可以自行上网查阅资料。

2.实例

下面我们基于具体的例子讲解TF-IDF的计算。假设我们的语料如下(来源:sklearn文档),一共有4个句子作为文档集合,每个句子表示一个文档,则文档集合中一共有4个文档(单引号内为文档内容)。

TF-IDF

 

我们手工计算TF-IDF过程如下:首先构建document-term矩阵(忽略标点符号)。term为语料中出现的所有单词。

TF-IDF

 

然后按照公式分别计算单词t在文档d中的TF以及单词t的IDF,相乘即为TF-IDF值。

3.代码示例

下面我们使用sklearn库来进行TF-IDF的计算。主要有两种方式。

方法一

第一种方法主要用到两个类:CountVectorizer和TfidfTransformer。代码演示如下:


from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer corpus = [     'This is the first document.',     'This document is the second document.',     'And this is the third one.',     'Is this the first document?', ] vectorizer = CountVectorizer() # 根据语料计算词频矩阵 X = vectorizer.fit_transform(corpus) # 打印文档集合中所有单词 print(vectorizer.get_feature_names()) # 打印词频矩阵 print(X.toarray()) transformer = TfidfTransformer() # 根据词频矩阵计算TF-IDF值 tfidf = transformer.fit_transform(X) # 打印TF-IDF计算结果 print(tfidf.toarray())

方法二

第二种方法只用到一个类:TfidfVectorizer。代码演示如下:


from sklearn.feature_extraction.text import TfidfVectorizer corpus = [     'This is the first document.',     'This document is the second document.',     'And this is the third one.',     'Is this the first document?', ] vectorizer = TfidfVectorizer() # 根据原始语料直接计算TF-IDF值 tfidf = vectorizer.fit_transform(corpus) # 打印文档集合中所有单词 print(vectorizer.get_feature_names()) # 打印TF-IDF计算结果 print(tfidf.toarray())

如果只是计算TF-IDF,两种方法所得结果是一样的,第二种方法相对简洁。大家可以根据自己需要选择。

4注意

1、在机器学习任务中,我们经常会划分训练集和测试集。我们在针对测试集语料计算TF-IDF时,往往是根据训练集获取词典和IDF,然后根据测试集语料内容计算其TF-IDF值。代码示例如下:


from sklearn.feature_extraction.text import TfidfVectorizer corpus = [     'This is the first document.',     'This document is the second document.',     'And this is the third one.',     'Is this the first document?', ] test_corpus = ['This is the fourth document.'] vectorizer = TfidfVectorizer() # 从训练语料中获取包含所有单词的词典以及IDF值 vectorizer.fit(corpus) # 根据测试语料计算TF-IDF tfidf = vectorizer.transform(test_corpus) # 打印TF-IDF计算结果 print(tfidf.toarray())

2、sklearn中类的参数设置。比如TfidfVectorizer的其中一个初始化参数默认设置为


token_pattern=’(?u)\b\w\w+\b’

该参数使用正则表达式表明该类选取文档中单词的标准,只有该单词包含两个或者两个以上的字符时才被选入document-term矩阵,比如英文单词"a"只包含一个字母,则其即使出现在语料中也不会被当作term进行TF-IDF的计算。在实际使用中大家要根据自己需要设置正则表达式。

文本总结,说白了TF-IDF算法就是使用正则表达式在文章中进行选词,计算出文章的相似度。为了考虑到我们发布的文章有长短差异之分,百度算法呢,就对关键词进行词频标准化。好了今天关于TF-IDF算法就讲到这里。

本文地址:SEO服务频道 http://seo.hkm168.com/seofuwu/3033.html,武汉易企推SEO公司,提供一站式全网营销服务:武汉SEO服务、网站建设、SEO顾问诊断、SEO培训、SEM竞价托管、百度竞价开户、全网推广(品牌营销推广)、百科词条创建修改、新媒体引流、公司负面公关处理等;另外本站原创文章,转载本文请保留本站地址,谢谢!

上一篇:网站降权主要是有哪些原因引起的?快点诊断网站吧!

下一篇:中英文网站空间如何选择?需要知道这几点!

相关文章相关文章
  • 这么多搜索引擎,为什么武汉SEO/SEM偏偏要用百度呢?

    这么多搜索引擎,为什么武汉SEO/SEM偏偏要用百度呢?

    中国第一大搜索引擎的百度大量搜索结果基本指向百家号等百度自家产品,要么是为了自家产品导流,要么就广告泛滥,不少内容质量低劣,充满营销。SEO小编亲自去试了一下,百度搜索第一页里面充斥着大量的广告和百家号内容,而关于名人、美食、旅游和房价这些热...

    2019-08-12 11:46
  • 武汉SEO如何分析出竞争对手的关键词定位及工作流程

    武汉SEO如何分析出竞争对手的关键词定位及工作流程

    相信大家都比较清楚优化过程最重要的就是初始竞争分析。也可以在此过程应正确识别您的SEO目标,并提供基本输入以建立您的整体策略。根据搜索引擎优化过程的类型,行业和范围,这种分析可能会变得非常复杂,因为有许多因素需要考虑-现在比以往任何时候都要多。...

    2019-08-10 13:35
  • 武汉SEM经验分享,如何用百度行业定投增加20%的线索?

    武汉SEM经验分享,如何用百度行业定投增加20%的线索?

    最近一段时间百度大搜流量不太好,小编我尝试了一下别的办法,发现行业定投的效果还不错。其实此前在医疗的时候有尝试过,但没啥效果。由此可见,行业定投行业不同,效果差异还是很大的。也有朋友做加盟的,效果非常好。所以,如果你最近大搜的情况也不是很好...

    2019-08-09 11:27
  • 武汉SEO非现场优化的内容有哪些?非现场搜索优化的重要性

    武汉SEO非现场优化的内容有哪些?非现场搜索优化的重要

    对于什么是非现场SEO搜索优化?“非现场搜索优化”(也称为“非现实搜索优化”)是指在您自己的网站之外采取的行动,以影响搜索引擎结果页面(SERP)内的排名。...

    2019-08-08 10:47
  • 用户只停留在第一页怎么办,武汉5个SEO基础技巧提升用户体验

    用户只停留在第一页怎么办,武汉5个SEO基础技巧提升用

    我们先来看最近的一些数据:93%的在线体验是从搜索引擎开始 75%的用户永远停留在搜索结果的第一页所以SEO对于任何一家公司来说是必需要做的,就连曾经的淘宝豪言说:禁止百度抓取我们的内容。其实,现在淘宝已经慢慢放开了,一些页面给百度抓取,站内更做...

    2019-08-07 14:00
  • 武汉SEO分享12个wordpress重点优化项目,注意收藏!

    武汉SEO分享12个wordpress重点优化项目,注意收藏!

    Wordpress是全球用户最多的CMS,具备开源免费、可拓展性强、技术维护成本低等优势,越来越多的中小企业官网采用使用Wordpress建官网。网站搭建只是第一步,后续的流量的获取是大家面临的一个棘手的问题。本文将介绍如何针对网站进行搜索引擎优化(谷歌SEO)帮...

    2019-08-07 13:44
  • 武汉SEO告诉你如何优化基于谷歌语音的搜索网站?

    武汉SEO告诉你如何优化基于谷歌语音的搜索网站?

    人们使用搜索引擎进行在线查询的方式正在发生巨大变化。据谷歌称,到2020年,至少50%的谷歌搜索引擎查询将基于语音。随着搜索模式的改变,搜索引擎优化策略也随之改变,如果你拥有一个网站,你最好知道如何优化它进行语音搜索。...

    2019-08-06 11:46
  • 武汉创业公司该如何做好搜索引擎网络布局的SEO策略呢?

    武汉创业公司该如何做好搜索引擎网络布局的SEO策略呢?

    创业公司如何做搜索引擎网络布局SEO?最近,我为一些初创公司或者开发新品的公司合作的时候,SEO是一个热门话题。我给每个公司提供了相同的建议,所以决定写一篇博客来记录我给出的建议。本文中,我将讨论如何在公司的早期阶段进行seo操作,直到有足够的流量...

    2019-08-03 14:20
产品图片2
服务器图片