安防网

安防站长网首页-为安防创业者服务
> 优化技术 > SEO优化网站算法:TF-IDF原理及使用!

SEO优化网站算法:TF-IDF原理及使用!

87 2019-09-21

一. 什么是TF-IDF

TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率).

是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

上述引用总结就是, 一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章.

这也就是TF-IDF的含义.

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

但是, 需要注意, 一些通用的词语对于主题并没有太大的作用, 反倒是一些出现频率较少的词才能够表达文章的主题, 所以单纯使用是TF不合适的。权重的设计必须满足:一个词预测主题的能力越强,权重越大,反之,权重越小。所有统计的文章中,一些词只是在其中很少几篇文章中出现,那么这样的词对文章的主题的作用很大,这些词的权重应该设计的较大。IDF就是在完成这样的工作.
公式:

逆向文件频率 (inverse document frequency, IDF) IDF的主要思想是:如果包含词条t的文档越少, IDF越大,则说明词条具有很好的类别区分能力。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。

公式:

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

TF−IDF=TF∗IDF

二. 一个实例

三. Spark 中 TF-IDF 的实现

1. 基于spark1.4.1 ml算法包的TF-IDF算法

// 参考自spark官网教程 http://spark.apache.org/docs/latest/ml-features.html#tf-idf
// In the following code segment, we start with a set of sentences.
// We split each sentence into words using Tokenizer. For each sentence (bag of words),
// we use HashingTF to hash the sentence into a feature vector. We use IDF to rescale
// the feature vectors; this generally improves performance when using text as features. // Our feature vectors could then be passed to a learning algorithm.

import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.ml.feature.{Tokenizer,HashingTF, IDF}
import org.apache.spark.mllib.linalg.{Vectors, Vector}
// 创建实例数据
val sentenceData = sqlContext.createDataFrame(Seq(
(0, “Hi I heard about Spark”),
(0, “I wish Java could use case classes”),
(1, “Logistic regression models are neat”)
)).toDF(“label”, “sentence”)

// scala> sentenceData.show
// +—–+——————–+
// |label| sentence|
// +—–+——————–+
// | 0|Hi I heard about …|
// | 0|I wish Java could…|
// | 1|Logistic regressi…|
// +—–+——————–+

//句子转化成单词数组
val tokenizer = new Tokenizer().setInputCol(“sentence”).setOutputCol(“words”)
val wordsData = tokenizer.transform(sentenceData)

// scala> wordsData.show
// +—–+——————–+——————–+
// |label| sentence| words|
// +—–+——————–+——————–+
// | 0|Hi I heard about …|ArrayBuffer(hi, i…|
// | 0|I wish Java could…|ArrayBuffer(i, wi…|
// | 1|Logistic regressi…|ArrayBuffer(logis…|
// +—–+——————–+——————–+

// hashing计算TF值,同时还把停用词(stop words)过滤掉了. setNumFeatures(20)表最多20个词
val hashingTF = new HashingTF().setInputCol(“words”).setOutputCol(“rawFeatures”).setNumFeatures(20)
val featurizedData = hashingTF.transform(wordsData)

// scala> featurizedData.show
// +—–+——————–+——————–+——————–+
// |label| sentence| words| rawFeatures|
// +—–+——————–+——————–+——————–+
// | 0|Hi I heard about …|ArrayBuffer(hi, i…|(20,[5,6,9],[2.0,…|
// | 0|I wish Java could…|ArrayBuffer(i, wi…|(20,[3,5,12,14,18…|
// | 1|Logistic regressi…|ArrayBuffer(logis…|(20,[5,12,14,18],…|
// +—–+——————–+——————–+——————–+

val idf = new IDF().setInputCol(“rawFeatures”).setOutputCol(“features”)
val idfModel = idf.fit(featurizedData)
val rescaledData = idfModel.transform(featurizedData)
// 提取该数据中稀疏向量的数据,稀疏向量:SparseVector(size,indices,values)
// rescaledData.select(“features”).rdd.map(row => row.getAs[linalg.Vector](0)).map(x => x.toSparse.indices).collect
rescaledData.select(“features”, “label”).take(3).foreach(println)

// [(20,[5,6,9],[0.0,0.6931471805599453,1.3862943611198906]),0]
// [(20,[3,5,12,14,18],[1.3862943611198906,0.0,0.28768207245178085,0.28768207245178085,0.28768207245178085]),0]
// [(20,[5,12,14,18],[0.0,0.5753641449035617,0.28768207245178085,0.28768207245178085]),1]
// 其中,20是标签总数,下一项是单词对应的hashing ID.最后是TF-IDF结果
————————————————

2.基于RDD的MLlib包中的TF_IDF算法

//参考: http://spark.apache.org/docs/1.4.1/mllib-feature-extraction.html#tf-idfark.mllib.feature.HashingTF
//进阶参考
//http://blog.csdn.net/jiangpeng59/article/details/52786344

import org.apache.spark.mllib.linalg.Vector
val sc: SparkContext = …

// Load documents (one per line).
val documents: RDD[Seq[String]] = sc.textFile(“…”).map(_.split(” “).toSeq)

val hashingTF = new HashingTF()
val tf: RDD[Vector] = hashingTF.transform(documents)
tf.cache()
val idf = new IDF().fit(tf)
val tfidf: RDD[Vector] = idf.transform(tf)
————————————————

四. 参考

http://blog.csdn.net/google19890102/article/details/29369793
http://blog.csdn.net/jiangpeng59/article/details/52786344
————————————————
版权声明:本文为CSDN博主「zrc199021」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zrc199021/article/details/53728499

返回:优化技术

相关阅读

  • 为了维护健康的搜索生态,保障搜索用户体验,百度算法,百度搜索将在近期对飓风算法进行升级,上线飓风算法3.0。本次算法升级主要针对跨领域采集以及站群问题,将覆盖百度搜索下的PC站点、H5站点、小程序等内容。对于算法覆盖的站点/小程序,将会根据违规问题的恶劣程度,酌情限制搜索结果的展现。以下详细说明飓风算法3.0的相关规则。一. 跨领域采集:指站点/小程序为了获取更多流量,发布不属于站点/小程序领域范围的内容,通常这些内容采集自互联网,内容质量及相关性低、对搜索用户价值低。对于这样的行为搜索会判定该站点/小程

    2019-08-0853阅读全文
置顶推荐
猜您喜欢
热门阅读
  • 监控安装500万摄像机全天录制Smart265编码一天需26G!

    监控安装套装如何选配:王杨安防根据实际需求,选择合适的摄像机数量和硬盘大小。500万摄像机数量、硬盘大小对应录像存储天数见下表(仅供参考);硬盘大小对应录制天数(供参考)(500万摄像机全天录制,Smart265编码一天需26G)*以上Smart265编码测试时间仅供参考因环境不同、编码选择不同保存时间有所差异;

  • 监控安装摄像头的角度与距离「图文」介绍收藏!

    监控安装说明:①支持墙面或吊顶安装(需要单独立杆的场景,不在服务范围);②摄像机的安装高度不超过3.5米(登高工具用户提供);③每路摄像机含30米内的穿管布线,布线为标准RVV2*1.O电源线标准超五类网线,穿管为PVC管/PVC槽;*镜头数字越大,角度越小,看得越远;镜头数字越小,角度越大,看的越近。*注:监控距离为建议距离,实际距离以现场使用环境为准半球焦距只有2.8mm,4mm, 6mm

  • 监控摄像头镜头选择:2.8mm,4mm,6mm,8mm,12mm【图文】!

    安装监控摄像头效果,具体要多少毫米的镜头,就要根据你实际地点来确定毫米数,一般有3.6MM、4MM、6MM、8MM、12MM、16MM这几个是最常用的。角度和距离成反比,角度越大距离越近。3.6毫米镜头是67.4度,距离15米。6毫米镜头是42.3度,距离是20米。8毫米镜头是32.6度,距离是25米。12毫米镜头是22.1度,距离是40米。16毫米镜头是17.1度,距离是60米。

  • 安防建站:宝塔面板同步服务器时间图文教程!

    登录服务器的宝塔控制面板:如图看见左边的Linux工具箱,左边栏时区设置。选择Asia/Shanghai在控制面板:导航栏--计划任务--选择--同步时间--执行周期--随便选择,如图:以上操作完成,添加完任务,在任务列表,添加的同步时间的任务。点击执行,操作完毕,简单的教程。

  • 海康威视渠道经销商、海康代理商、海康总代!

    海康威视是安防产品及行业解决方案提供商,致力于不断提升视频处理技术和视频分析技术,面向全球提供的安防产品、专业的行业解决方案与优质的服务,为客户持续创造更大价值。海康威视拥有业内的自主核心技术和可持续研发能力,提供摄像机/智能球机、光端机、DVR/DVS/板卡、BSV液晶拼接屏、网络存储、视频综合平台、中心管理软件等安防产品,并针对金融、公安、电讯、交通、司法、教育、电力、水利、军队等众多行业提供合适的细分产品与专业的行业解决方案。这些产品和方案面向全球100多个国家和地区,在北京奥运会、大运会、亚运会、

  • 监控安装1台500万星光摄像机录像1天需要多大硬盘!

    监控安装1台500万星光摄像机录像1天需要多大硬盘!常规场景下,4个500W摄像机存储2个星期,只需1.5TB硬盘智能编码存储更长!采用Smart265编码,比H.265编码更强大,存储更省,带宽更低,大约只需4MBps码流,大大缩短每小时存储空间,低宽带也能流畅播放。

  • 安防网站:WordPress移动端/手机端底部悬浮(拨打电话)菜单!

    打开WordPress后台,进入安装插件页面,然后搜索了一番,找到了Call Now Button 这款WordPress手机端底部悬浮菜单插件,于是立马安装启用,下面是我们公司网站底部现在使用的悬浮菜单,大家先看一下吧。WP插件:Call Now Button 帮你快速为WordPress设置底部悬浮菜单Call Now Button插件设置教程:第一步:进入WordPress后台,在插件功能中查找并安装启用Call Now Button插件,如下图;第二步:我们在WordPress后台左侧导航栏找到设

  • 公安备(安全评估报告)地址,写法,图文,范本!

    全国互联网安全管理服务平台登录这个网址 http://www.beian.gov.cn/安全评估报告(图文教程)如下:这里我已经复制出来:请填写主要内容1、安全管理负责人、信息审核人员及安全管理机构设立情况。公司设有编辑审核部门、运营管理部门、运维管理部门;编辑审核部门将对每日的新闻内容进行审核;运营部门对用户的帖子内容进行审核;运维管理部门负责日志留存记录、内容拦截等工作。2、用户真实身份核验及注册信息留存措施。在用户注册时需要使用手机号注册,我们可以根据手机号对其身份信息进行核验,同时通过日志留存设备

  • 安防网站:不用软件打造伪原创文章攻略!

    今天简单阐述一下,不依靠伪原创软件,轻松打造伪原创文章,这里我们要注意你去哪里找文章源,懂的人都知道,去复制,不再过多讲解。正题篇我这里先去复制一篇文章,这里我随便找的一篇文章如下:1、复制原始文章如图:2、违禁词查询如果是企业备案的网站,坚持先查询一下广告法违禁词:3、原始文章、原创度查询这里仅供参考,做为演示,不代表准确性,需要原创文章可以自己写![wechat key=02695 reply=验证码]4、打开翻译软件这里的翻译软件,什么在线翻译软件都可以。这里没有明确的要求,只要在线可以翻译即可。我

  • 安防监控公司网站文章带更新服务!

    为安防监控安装公司的网站,提供安防网站文章带更新服务,只提供网站系统是WordPress、Z-Blog等开源的CMS系统。

标签云