TF-IDF算法网站如何写标题适合优化

TF-IDF算法的概念

TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜寻引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,因特网上的搜寻引擎还会使用基于连结分析的评级方法,以确定文件在搜寻结果中出现的顺序。
TF-IDF算法网站如何写标题适合优化


TF-IDF算法的原理

在一份给定的文件里,词频 (term frequency, TF) 指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被归一化(分子一般小于分母 区别于IDF),以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词频,而不管该词语重要与否。)


逆向文件频率 (inverse document frequency, IDF) 是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。


某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。


TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TFIDF实际上是:TF * IDF,TF词频(Term Frequency),IDF反文档频率(Inverse Document Frequency)。TF表示词条在文档d中出现的频率(另一说:TF词频(Term Frequency)指的是某一个给定的词语在该文件中出现的次数)。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。如果某一类文档C中包含词条t的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当m大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。(另一说:IDF反文档频率(Inverse Document Frequency)是指果包含词条的文档越少,IDF越大,则说明词条具有很好的类别区分能力。)但是实际上,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。这就是IDF的不足之处。

TF-IDF算法的计算计算:

TF-IDF反映了在文档集合中一个单词对一个文档的重要性,经常在文本数据挖据与信息提取中用来作为权重因子。在一份给定的文件里,词频(termfrequency-TF)指的是某一个给定的词语在该文件中出现的频率。逆向文件频率(inversedocument frequency,IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。

TF-IDF算法向量空间模型Vector Space Model计算

写一个testscikit.py文件,内容如下:




<p># coding:utf-8



from sklearn.feature_extraction.text import CountVectorizer



from sklearn.feature_extraction.text import TfidfTransformer




corpus=["阿芬  SEO  TF-IDF",


        "算法  网站",





vectorizer=CountVectorizer()




print type(vectorizer.fit_transform(corpus))



print vectorizer.fit_transform(corpus)



print vectorizer.fit_transform(corpus).todense()




这里面CountVectorizer是一个向量计数器




第一个print type(vectorizer.fit_transform(corpus))输出结果如下:



<class 'scipy.sparse.csr.csr_matrix'>



这说明fit_transform把corpus二维数组转成了一个csr_matrix类型(稀疏矩阵)




第二个print vectorizer.fit_transform(corpus)输出结果如下:



  (0, 0)    1


  (0, 4)    1


  (0, 7)    1


  (1, 7)    1


  (1, 1)    1


  (2, 0)    1


  (2, 2)    1


  (2, 3)    1


  (2, 6)    1


  (2, 5)    1



这就是稀疏矩阵的表示形式,即把二维数组里的所有词语组成的稀疏矩阵的第几行第几列有值




第三个print vectorizer.fit_transform(corpus).todense()输出如下:



[[1 0 0 0 1 0 0 1]


[0 1 0 0 0 0 0 1]


[1 0 1 1 0 1 1 0]]



这就是把稀疏矩阵输出成真实矩阵




下面我们把代码改成:



# coding:utf-8



from sklearn.feature_extraction.text import CountVectorizer



from sklearn.feature_extraction.text import TfidfTransformer






corpus=["阿芬  SEO  TF-IDF",


        "算法  网站",







vectorizer=CountVectorizer()



csr_mat = vectorizer.fit_transform(corpus)



transformer=TfidfTransformer()



tfidf=transformer.fit_transform(csr_mat)



print type(tfidf)



print tfidf



print tfidf.todense()




TF-IDF算法输出如下:




<class 'scipy.sparse.csr.csr_matrix'>


  (0, 7)    0.517856116168


  (0, 4)    0.680918560399


  (0, 0)    0.517856116168


  (1, 1)    0.795960541568


  (1, 7)    0.605348508106


  (2, 5)    0.467350981811


  (2, 6)    0.467350981811


  (2, 3)    0.467350981811


  (2, 2)    0.467350981811


  (2, 0)    0.35543246785



[[ 0.51785612  0.                 0.                 0.                 0.68091856   0.                 0.              0.51785612]


[ 0.                0.79596054  0.                 0.                 0.                 0.                 0.               0.60534851]


[ 0.35543247  0.                0.46735098  0.46735098  0.                 0.46735098     0.46735098  0.        ]]
本文原创,作者:梦子,其版权均为梦子博客所有。如需转载,请注明出处:https://www.mongziit.com/867.html

发表评论