小周SEO顾问:百度的内部搜索算法非常复杂。只有极少数人能够完全理解整个搜索算法。谷歌也应该有相同的情况。普通员工一般只知道自己责任的一小部分网站优化而且他们都有很高的职位。
小周SEO顾问:百度的内部搜索算法非常复杂。只有极少数人能够完全理解整个搜索算法。谷歌也应该有相同的情况。普通员工一般只知道自己责任的一小部分但同时全面了解两家公司算法的人需要长时间在两家公司的搜索部门工作而且他们都有很高的职位。对于这两家公司来说即使有这样的人也没有人听说过这些人。该算法是众所周知的。你认为这个核心问题他会在公开场合说吗?让我们仔细看看TF-IDF算法和原理。
TF-IDF及其算法
TF-IDF概念
TF-IDF(术语频率–逆文档频率)是用于信息检索和信息探索的常用加权技术。 TF-IDF是一种统计方法用于评估单词对文件集或语料库中某个文件的重要性。单词的重要性与它在文件中出现的次数成比例增加但它也会随着它在语料库中出现的频率成反比地减少。搜索引擎经常应用各种形式的TF-IDF加权作为文件和用户查询之间的相关程度的度量或评级。除TF-IDF外Internet上的搜索引擎使用基于链接的基于分析的评级方法来确定文件在搜索结果中的显示顺序。
TF-IDF计算:
TF-IDF反映了文档集合中的单词对文档的重要性通常用作文本数据挖掘和信息提取中的加权因子。在给定文档中单词频率(TF)指的是给定单词出现在文件中的频率。逆文档频率(IDF)是对单词的普遍重要性的度量。特定单词的IDF可以通过将文件总数除以包含该单词的文件数然后取得所获得的业务对数来获得。
TF-IDF原则
在给定文档中术语频率(TF)是指给定单词出现在文件中的次数。这个数字通常是标准化的(分子通常小于分母与IDF的区别)以防止它偏向长文件。 (相同的单词在长文件中可能比短文件具有更高的单词频率无论该单词是否重要。)
逆文档频率(IDF)是对单词的普遍重要性的度量。特定单词的IDF可以通过将文件总数除以包含该单词的文件数然后取得所获得的业务对数来获得。
特定文件中的高字频率以及整个文件集中字的低文件频率可以产生高权重TF-IDF。因此TF-IDF倾向于过滤掉常用词并保留重要词。
TFIDF的主要思想是seo优化TF-IDF倾向于过滤掉常用词并保留重要词。
TFIDF的主要思想是如果单词或短语出现在具有高频率TF的文章中并且很少出现在其他文章中则该单词或短语被认为具有良好的类别区分能力并且适合于分类。 TFIDF实际上是:TF * IDFTF字频率(Term Frequency)IDF反文档频率(Inverse Document Frequency)。 TF表示条目在文档d中出现的频率(另一个是:TF字频率是指给定单词出现在文件中的次数)。 IDF的主要思想是:如果包含术语t的文档较少也就是说n越小IDF越大表明术语t具有良好的类别区分能力。如果在某种类型的文档C中包含条目t的文档的数量是m并且包含其他t的文档的总数是k则显然包含所有t的文档的数量是n=m + k。当m很大时n也很大。根据IDF公式获得的IDF的值将很小表明术语t类别区分能力不强。 (另一个:IDF逆文档频率意味着文档包含的条目越少IDF越大类识别能力越强。)但事实上如果一个条目频繁出现在类的文档中则表明该术语是一个很好的表示形式。班级文本的特点。这些条目应该给予较高的权重并选择作为文本的特征词来区分和其他类文档。这是以色列国防军的缺点。
TF-IDF向量空间模型向量空间模型计算
使用以下内容编写testcikit.py文件:
< p> #coding: utf-8
从sklearn.feature_extraction.text导入CountVectorizer
从sklearn.feature_extraction.text导入TfidfTransformer
Corpus=[" Hangzhou SEO TF-IDF“
“算法 网站”
“标题 如何写入 适合 优化 ”]
矢量器=CountVectorizer()
打印类型(vectorizer.fit_transform(corpus))
打印vectorizer.fit_transform(语料库)
打印vectorizer.fit_transform(语料库).todense()
这里CountVectorizer是一个矢量计数器
第一种打印类型(vectorizer.fit_transform(语料库))的输出如下:
< class'spipy.sparse.csr.csr_matrix'>
这表明fit_transform将语料库二维数组转换为csr_matrix类型(稀疏矩阵)
第二个打印vectorizer.fit_transform(语料库)输出如下:
(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
这是稀疏矩阵的表示也就是说由二维数组中的所有单词组成的稀疏矩阵的前几列具有值
第三个打印vectorizer.fit_transform(语料库).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
从sklearn.feature_extraction.text导入CountVectorizer
从sklearn.feature_extraction.text导入TfidfTransformer
Corpus=[" Hangzhou SEO TF-IDF“
“算法 网站”
“标题 如何 写入 适合 优化 ”]
Vectorizer=CountVectorizer()
Csr_mat=vectorizer.fit_transform(语料库)
Transformer=TfidfTransformer()
Tfidf=transformer.fit_transform(csr_mat)
打印类型(tfidf)
打印tfidf
打印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