TF-IDF

TF-IDF :term frequency-inverse document frequency

  • 一种用于咨询检索与资讯勘测的常用加权技术
  • 是一种统计方法,用以评估一个字词对于一个文件集或者一个语料库中的其中一份文件的重要程度
    • 字词的重要性随着它在文件中出现的次数成正比增加
    • 但同时会随着它在语料库中出现的频率成反比下降
  • 加权的各种形式常备搜索引擎应用
    • 作为文件与用户查询之间相关程度的度量或评级
    • 出了TF-IDF以外,因特网上的搜寻引擎还会使用基于链路分析的评级方法,以确定文件在搜寻结果中出现的顺序:PR

用户通过调整字词来缩小范围:

  • 每个字词都有对应出现的页面
  • 通过字词数量缩小范围
  • 通过字词对于页面的权重来进行排序
王者
王者荣耀
王者荣耀 露娜
王者荣耀 露娜 连招

词频(term frequency ,TF)

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

逆向文件频率(inverse document frequency ,IDF)

  • 是一个词语 普遍重要性的度量
  • 某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到
  • |D|:语料库中的文件总数
  • |{j: ti ∈ di}| 包含ti文件的数目
  • 一般我们会给|{j: ti ∈ di}| 包含ti文件的数目加1 ,主要是避免这个单词在语料库文章中没有出现,避免分母为0。
  • 在这里插入图片描述
TF-IDF:
  • tfidfi,j = tfi,j x idfi
  • 某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。
  • TF-IDF的重要思想是:如果某个词或者短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的累别区分能力,适用于与来分类。
  • 字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

基础数据:
前面是id号,后面是信息

3823890939805691	约约约,今天我约了,我每天都有约的,
3823890944321377	春天来了,找一个属于自己的地方去放松心情,不在这里就在那里。
3823890948200544	约吃、约喝、约玩,约了以前合租屋的镁铝小姨们来家里坐客,约的太爽、太开心了。今天还要把
3823890948517723	周末,除了大扫除,乐妈跟小情人约好了,约着一起做面包,再做一个草莓蛋糕,周末就跟孩子约,跟美食约,小阳乐妈也想跟你约


对上面数据进行处理:

  • 先对上面的信息进行分词
  • 面向文本计算词频:wc
  • 面向全量文件计算包含集合:wc
  • 套用上面TF-IDF公式

mapReduce处理方式:

mapper 1:

提出id
分词
填充A出现的次数x
按行读取lines
line.split
统计总行数m
文本
id
分词A,B,C..
分词后的词的总个数n
新的key-id_A
产生键值对id_A:x
x/总个数n
产生键值对id_A:x/n

结果:

3823890944321377_春天 1/20
3823890948517723_周末 1/15
3823890948517723_大扫除 1/15
...

mapper 2:
对上面的进行排序,按照词组进行排序

每一行都进行词组提出然后生成键值对值词组:1
对上面的结果读取处理
line.split
id
词组
词组A:1

reducer 2:
对mapper2 求和就行

mapper3

log
统计总行数m/mapper2的输出
词组IDF
mapper1的输出:TF
关联操作
生成TFIDF

生成的格式化入下:

3823890944321377 春天:tf-idf值
3823890948517723 周末:tf-idf值

reducer3:
对上面的值进行整合成,相同的id放在一行就行

在这里插入图片描述

在这里插入图片描述

参考:
https://blog.csdn.net/wuxintdrh/article/details/58587676
https://blog.csdn.net/u012369535/article/details/88018178

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值