阅读笔记:TF - IDF 原理

2023-05-16

今天查阅 TF-IDF 资料,发现百度百科里面提供了一个例子,解释的很清楚,记下来备用。

原文链接:https://baike.baidu.com/item/tf-idf/8816134?fr=aladdin

例子:在某个一共有一千词的网页中 “原子能”、“” 和 “应用” 分别出现了 2 次、35 次 和 5 次,那么它们的词频就分别是 0.002、0.035 和 0.005。 我们将这三个数相加,其和 0.042 就是相应网页和查询“原子能的应用” 相关性的一个简单的度量。

概括地讲,如果一个查询包含关键词 w 1 , w 2 , . . . , w N w_1,w_2,...,w_N w1,w2,...,wN, 它们在一篇特定网页中的词频分别是: T F 1 , T F 2 , . . . , T F N TF_1, TF_2, ..., TF_N TF1,TF2,...,TFN。 (TF: term frequency)。 那么,这个查询和该网页的相关性就是:

T F 1 + T F 2 + . . . + T F N TF_1 + TF_2 + ... + TF_N TF1+TF2+...+TFN

读者可能已经发现了又一个漏洞。在上面的例子中,词 “”占了总词频的 80% 以上,而它对确定网页的主题几乎没有用。我们称这种词叫“应删除词”(Stopwords),也就是说在度量相关性是不应考虑它们的频率。在汉语中,应删除词还有“”、“”、“”、“”、“”等等几十个。忽略这些应删除词后,上述网页的相似度就变成了0.007,其中“原子能”贡献了 0.002,“应用”贡献了 0.005。细心的读者可能还会发现另一个小的漏洞。在汉语中,“应用”是个很通用的词,而“原子能”是个很专业的词,后者在相关性排名中比前者重要。因此我们需要给汉语中的每一个词给一个权重,这个权重的设定必须满足下面两个条件:

  1. 一个词预测主题能力越强,权重就越大,反之,权重就越小。我们在网页中看到“原子能”这个词,或多或少地能了解网页的主题。我们看到“应用”一次,对主题基本上还是一无所知。因此,“原子能“的权重就应该比应用大。
  2. 应删除词的权重应该是零。

我们很容易发现,如果一个关键词只在很少的网页中出现,我们通过它就容易锁定搜索目标,它的权重也就应该大。反之如果一个词在大量网页中出现,我们看到它仍然不是很清楚要找什么内容,因此它应该小。概括地讲,假定一个关键词 w w w D w D_w Dw 个网页中出现过,那么 D w D_w Dw 越大, w w w 的权重越小,反之亦然。在信息检索中,使用最多的权重是“逆文本频率指数” (Inverse document frequency 缩写为IDF),它的公式为 l o g ( D / D w ) log(D/D_w) logD/Dw其中 D D D 是全部网页数。比如,我们假定中文网页数是 D = 10 D=10 D=10亿 ,应删除词“”在所有的网页中都出现,即 D w = 10 D_w=10 Dw=10亿,那么它的 I D F = l o g ( 10 亿 / 10 亿) = l o g ( 1 ) = 0 IDF=log(10亿/10亿)= log (1) = 0 IDF=log(10亿/10亿)=log(1)=0。假如专用词“原子能”在两百万个网页中出现,即 D w = 200 D_w=200 Dw=200万,则它的权重 I D F = l o g ( 500 ) = 2.7 IDF=log(500) =2.7% IDF=log(500)=2.7。又假定通用词“应用”,出现在五亿个网页中,它的权重 I D F = l o g ( 2 ) IDF = log(2) IDF=log(2) 则只有 0.3。也就是说,在网页中找到一个“原子能”的匹配相当于找到九个“应用”的匹配。利用 IDF,上述相关性计算的公式就由词频的简单求和变成了加权求和,即

T F 1 ∗ I D F 1 +   T F 2 ∗ I D F 2 + . . . + T F N ∗ I D F N TF_1*IDF_1 + TF_2*IDF_2 +... + TF_N*IDF_N TF1IDF1+ TF2IDF2+...+TFNIDFN

在上面的例子中,该网页和“原子能的应用”的相关性为 0.0069,其中“原子能”贡献了 0.0054,而“应用”只贡献了0.0015。这个比例和我们的直觉比较一致了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

阅读笔记:TF - IDF 原理 的相关文章

随机推荐

  • CMake学习-01 综述

    文章目录 1 CMake1 1 CMake生成makefile并编译的流程 2 CMakeLists txt2 1 Demo讲解2 2 常用命令2 2 1 指定CMAKE的最低版本2 2 2 设置项目名称2 2 3 设置变量2 2 4 设置
  • Rust:官方迭代器大全

    一 for 和迭代器 先看一段代码 xff1a span class token keyword fn span span class token function definition function main span span cl
  • Rust: 函数的重载——我做的的一组小实验

    编程的时候 xff0c 我发现有不少函数能够根据左值类型自动调用重载函数 但是 xff0c 我知道 Rust 的函数是不支持重载的 所以我打算尝试一下这一 重载 现象是如何实现的 一 Rust 不支持函数重载 写一段代码 xff1a spa
  • php产生大量session文件导致报错无法创建修改文件:no space left on device

    阿里云SLB健康检测后端服务器组产生百万级别的php的0k大小session文件 今天早上在登录公司一台阿里云的服务器上vim修改配置文件以及touch文件时报错 xff1a no space left on device df h 查看了
  • Rust: Native Windows GUI下载、安装、演示入门

    上 github 下载 xff0c 网址为 https github com gabdube native windows gui 上面有安装说明 按说明方法 xff0c 老是提示权限不够 配置了 ssh 公钥证书 xff0c 仍然不行 请
  • Rust: Native Windows GUI 入门第一课,程序结构剖析

    基于派生宏的代码实例 Cargo toml 文件 span class token punctuation span package span class token punctuation span name span class tok
  • 通过两个神经元的极简模型,清晰透视 Pytorch 工作原理

    解剖麻雀 xff0c 是分析了解复杂问题的好办法 本文通过搭建只有两个神经元的网络 xff0c 从根本上剖析 Pytorch 工作原理 先附上全部源代码 xff0c 然后听我慢慢唠 xff01 span class token keywor
  • Cifar-10 数据格式分析

    Cifar 10 的介绍可去官网阅读 xff0c 也可参照我之前整理的 笔记 xff1a CIFAR 01 和 CIFAR 100 数据集内容和格式详解 1 下载 Cifar 10 数据 本文下载了 Cifar 10 的 Python 语言
  • 准确率(Accuracy)、精度(Precision)、召回率(Recall)和 mAP 的图解

    机器学习的评价指标让人眼花缭乱 以前我写过一篇笔记总结了这个话题 xff0c 有兴趣的可以参考一下 xff1a 一分钟看懂深度学习中的准确率 xff08 Accuracy xff09 精度 xff08 Precision xff09 召回率
  • conda 基本用法

    好久不用超算服务器了 xff0c 今天远程登陆一下 xff0c 发现以前写的代码都不能运行了 鼓捣半天 xff0c 忽然想起来 xff0c 需要设置 conda 环境才行 写此小结 xff0c 汇总一下 conda 的基本用法 很久以前安装
  • jupyter 基本用法

    前一段时间 xff0c 同事帮我在超算服务器安装了一套 jupyter notebook 软件 xff0c 甚是好用 但用了几天后 xff0c 忽然就不能用了 今天研究了一下 xff0c 发现是服务器程序关闭了 xff0c 所以我在浏览器端
  • pytorch模型的保存与加载

    torch save 与 torch load 模型保存有两种形式 xff0c 一种是保存模型的 state dict xff0c 只是保存模型的参数 那么加载时需要先创建一个模型的实例 model xff0c 之后通过 torch loa
  • 用 SDK Mamager 安装 Nano

    用 SDK Mamager 安装 Nano 一 安装 sdk manager 在 PC 机上 Ubuntu 环境下 xff0c 下载 sdk manager 安装包 xff0c 用鼠标点击后自动运行 界面上有 Install 字样 xff0
  • TensorRTx 开源代码内容说明

    TensorRTx 提供了把常见网络模型转化为 TensorRT 格式的功能 TensorRTx旨在使用tensorrt网络定义API实现流行的深度学习网络 tensorrt有内置的解析器 xff0c 包括caffeparser uffpa
  • 关于在ubuntu下用docker部署Django卡在 Watching for file changes with StatReloader 不动了 以及 run后无法访问web 的问题

    1 问题描述 xff1a 用docker部署Django时遇到问题如下 xff1a 卡在这里不动了 xff0c 等了半小时服务也没起来 我的dockerfile如下 xff1a 直接启动没有问题 xff1a 用exec命令在容器内直接起也没
  • 漫话线性代数:线性变换的几何解释

    网购了一本书 xff0c 说的是线性代数的几何解释 一口气读完 xff0c 感觉这部书有些贪多了 xff0c 什么细节都要弄个几何解释 xff0c 不免让琐碎的细节把关键性的主题给遮掩了 所以萌生一个念头 xff0c 把线性代数的核心概念和
  • ChatGPT 逆天测试,结局出乎预料

    目录 一 数学解题能力二 编程能力三 日常生活咨询四 问一些离谱的问题 xff0c 它有啥反应 xff1f 五 逆天大测试 一 数学解题能力 据说 ChatGPT 会做数学题 xff0c 给他几个条件不充分的问题 xff0c 看看他是否真的
  • 我发现 chatGPT 在智能客服方面一个逆天的应用呀

    chatGPT 有助于快速构建知识库 xff0c 想了一个有趣的例子 xff0c 感觉 chatGPT真是强大呀 xff01 废话不多讲 xff0c 直接看效果吧 xff1a
  • 在 WIndows 下安装 Apache Tinkerpop (Gremlin)

    一 安装 JDK 首先安装 Java JDK xff0c 这个去官网下载即可 xff0c 我下载安装的 JDK19 xff08 jdk 19 windows x64 bin msi xff09 xff0c 细节不赘述 二 去 Tinkerp
  • 阅读笔记:TF - IDF 原理

    今天查阅 TF IDF 资料 xff0c 发现百度百科里面提供了一个例子 xff0c 解释的很清楚 xff0c 记下来备用 原文链接 xff1a https baike baidu com item tf idf 8816134 fr 61