什么是 TF-IDF 算法?

简单来说,向量空间模型就是希望把查询关键字和文档都表达成向量,然后利用向量之间的运算来进一步表达向量间的关系。比如,一个比较常用的运算就是计算查询关键字所对应的向量和文档所对应的向量之间的 “相关度”。

简单解释TF-IDF

简单解释TF-IDF

TF (Term Frequency)—— “单词频率”

意思就是说,我们计算一个查询关键字中某一个单词在目标文档中出现的次数。举例说来,如果我们要查询 “Car Insurance”,那么对于每一个文档,我们都计算“Car” 这个单词在其中出现了多少次,“Insurance”这个单词在其中出现了多少次。这个就是 TF 的计算方法。

TF 背后的隐含的假设是,查询关键字中的单词应该相对于其他单词更加重要,而文档的重要程度,也就是相关度,与单词在文档中出现的次数成正比。比如,“Car” 这个单词在文档 A 里出现了 5 次,而在文档 B 里出现了 20 次,那么 TF 计算就认为文档 B 可能更相关。

然而,信息检索工作者很快就发现,仅有 TF 不能比较完整地描述文档的相关度。因为语言的因素,有一些单词可能会比较自然地在很多文档中反复出现,比如英语中的 “The”、“An”、“But” 等等。这些词大多起到了链接语句的作用,是保持语言连贯不可或缺的部分。然而,如果我们要搜索 “How to Build A Car” 这个关键词,其中的 “How”、“To” 以及 “A” 都极可能在绝大多数的文档中出现,这个时候 TF 就无法帮助我们区分文档的相关度了。

IDF(Inverse Document Frequency)—— “逆文档频率”

就在这样的情况下应运而生。这里面的思路其实很简单,那就是我们需要去 “惩罚”(Penalize)那些出现在太多文档中的单词。

也就是说,真正携带 “相关” 信息的单词仅仅出现在相对比较少,有时候可能是极少数的文档里。这个信息,很容易用 “文档频率” 来计算,也就是,有多少文档涵盖了这个单词。很明显,如果有太多文档都涵盖了某个单词,这个单词也就越不重要,或者说是这个单词就越没有信息量。因此,我们需要对 TF 的值进行修正,而 IDF 的想法是用 DF 的倒数来进行修正。倒数的应用正好表达了这样的思想,DF 值越大越不重要。

TF-IDF 算法主要适用于英文,中文首先要分词,分词后要解决多词一义,以及一词多义问题,这两个问题通过简单的tf-idf方法不能很好的解决。于是就有了后来的词嵌入方法,用向量来表征一个词。

TF-IDF 的4个变种

TF-IDF常见的4个变种

TF-IDF常见的4个变种

变种1:通过对数函数避免 TF 线性增长

很多人注意到 TF 的值在原始的定义中没有任何上限。虽然我们一般认为一个文档包含查询关键词多次相对来说表达了某种相关度,但这样的关系很难说是线性的。拿我们刚才举过的关于 “Car Insurance” 的例子来说,文档 A 可能包含 “Car” 这个词 100 次,而文档 B 可能包含 200 次,是不是说文档 B 的相关度就是文档 A 的 2 倍呢?其实,很多人意识到,超过了某个阈值之后,这个 TF 也就没那么有区分度了。

用 Log,也就是对数函数,对 TF 进行变换,就是一个不让 TF 线性增长的技巧。具体来说,人们常常用 1+Log(TF) 这个值来代替原来的 TF 取值。在这样新的计算下,假设 “Car” 出现一次,新的值是 1,出现 100 次,新的值是 5.6,而出现 200 次,新的值是 6.3。很明显,这样的计算保持了一个平衡,既有区分度,但也不至于完全线性增长。

变种2:标准化解决长文档、短文档问题

经典的计算并没有考虑 “长文档” 和“短文档”的区别。一个文档 A 有 3,000 个单词,一个文档 B 有 250 个单词,很明显,即便 “Car” 在这两个文档中都同样出现过 20 次,也不能说这两个文档都同等相关。对 TF 进行 “标准化”(Normalization),特别是根据文档的最大 TF 值进行的标准化,成了另外一个比较常用的技巧

变种3:对数函数处理 IDF

第三个常用的技巧,也是利用了对数函数进行变换的,是对 IDF 进行处理。相对于直接使用 IDF 来作为 “惩罚因素”,我们可以使用 N+1 然后除以 DF 作为一个新的 DF 的倒数,并且再在这个基础上通过一个对数变化。这里的 N 是所有文档的总数。这样做的好处就是,第一,使用了文档总数来做标准化,很类似上面提到的标准化的思路;第二,利用对数来达到非线性增长的目的。

变种4:查询词及文档向量标准化

还有一个重要的 TF-IDF 变种,则是对查询关键字向量,以及文档向量进行标准化,使得这些向量能够不受向量里有效元素多少的影响,也就是不同的文档可能有不同的长度。在线性代数里,可以把向量都标准化为一个单位向量的长度。这个时候再进行点积运算,就相当于在原来的向量上进行余弦相似度的运算。所以,另外一个角度利用这个规则就是直接在多数时候进行余弦相似度运算,以代替点积运算。

TF-IDF

是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。

除了TF-IDF以外,因特网上的搜索引擎还会使用基于链接分析的评级方法,以确定文件在搜寻结果中出现的顺序。

在信息检索中,tf-idf或TFIDF(术语频率 – 逆文档频率的缩写)是一种数字统计,旨在反映单词对集合或语料库中的文档的重要程度。它经常被用作搜索信息检索,文本挖掘和用户建模的加权因子。tf-idf值按比例增加一个单词出现在文档中的次数,并被包含该单词的语料库中的文档数量所抵消,这有助于调整某些单词在一般情况下更频繁出现的事实。Tf-idf是当今最受欢迎的术语加权方案之一; 数字图书馆中83%的基于文本的推荐系统使用tf-idf。

搜索引擎经常使用tf-idf加权方案的变体作为在给定用户查询的情况下对文档的相关性进行评分和排序的中心工具。tf-idf可以成功地用于各种主题领域的停用词过滤,包括文本摘要和分类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1617894.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

PYNQ-z2 联网

PYNQ-z2 联网 这个教程会教你如何使PYNQ-z2联网。 首先ping一下外网,看看PYNQ板是否能联网 ping www.baidu.com如果没有响应,右击屏幕右下方的网络,选择“打开网络和Internet设置” 点击更改适配器选项 选择你正在使用的网络 点击属性&am…

PYNQ-Z2学习——启动PYNQ,安装需要的软件和系统

Day1 需要的硬件和软件 硬件 PYNQ-Z2开发板Micro-SD卡读卡器安卓线网线 软件 Vivado虚拟机Ubuntu 启动PYNQ 下载PYNQ-Z2-v2.3镜像文件压缩包,并解压缩 下载安装win32diskimager 通过win32diskimager将光盘映像文件写入SD卡中,在写入完之后会弹出是…

安装并使用Pynq-Z2官方镜像

一、首先一张 microSD卡,一个 microSD卡读卡器,一根网线,一个 路由器。 镜像网址链接 Releases Xilinx/PYNQ GitHub 选择PYNQ-Z2 v2.7.0 SDCard image 安装 Win32DiskImager 安装 DiskGenius 通过DiskGenius对新的sd卡进行格式化 通过W…

PYNQ-z2的学习过程

1. PYNQ-Z2 如图:先学习10分钟轻松上手PYNQ (http://www.digilent.com.cn/studyinfo/67.html)这个是z1的不过都能学习,大致差不多。 视频内容如下: v PYNQ-Z2 映像文件img 写入SDcard,http://www.pynq.io/…

Vivado中添加Pynq-Z2板卡文件

2023.5.31 今天在Vivado中导入pynq_z2板卡文件废了好些功夫,正好在这里里分享一下,希望对遇到相同困难的人有所帮助。 在xilinx官网的pynq-z2板卡文件已经失效,所以我自己去找了一个文件 主要的的步骤也比较简单:首先复制板卡…

【pynq-z2】初始配置

1. 官方手册写的挺全,了解一下 PYNQ-Z2 设置指南 PYNQ-Z2 Reference Manual v1.0 pynq(Python On Zynq)z1和z2区别不大,芯片一样 生产商,z1是Digilent、z2是Tulz2有树莓派接口z2芯片上有散热片(看起来像…

PYNQ-Z2启动/网络配置

下载PYNQ-Z2_v2.7.0镜像 链接:https://pan.baidu.com/s/1n5EghzOs7En6yQruLGTKbQ?pwd2f00 提取码:2f00 解压PYNQ-Z2_v2.7.0镜像使用烧录镜像至SD卡 完成后关闭软件,如果有下图弹出,一定要点“否”,即烧录成功&…

PYNQ-Z2开发板

PYNQ-Z2开发板第一次使用(废弃) 我这也是第一次用我也边写边弄,有不好的地方也不要怪我,因为我都不一定会写完,见谅。 准备 PYNQ-Z2开发板 一根百兆/千兆网线 一根Micro USB线 至少8GB大小的Micro SD卡和读卡器 下载安…

Vivido添加pynq-Z2开发板

一、下载pynq-z2开发板文件,下载地址:https://www.tulembedded.com/FPGA/ProductsPYNQ-Z2.html 二、将下载的文件解压到vivado安装的位置 如果boards目录下面没有boards_files的文件,那就自己创建一个,然后把pynq-z2解压文件夹放在…

极空间Z2s搭建思源笔记

docker下载zsource/siyuan 镜像 使用自定义拉取镜像。目前极空间docker镜像不能选版本下载,所以需要通过自定义拉取对应zsource/siyuan镜像版本。由于z2s芯片是arm架构,我们选用最新arm架构版本v2.4.9-arm64。zsource/siyuan:v2.4.9-arm64 挂载路径至zso…

PYNQ-Z2点亮led灯

PYNQ-Z2点亮led灯 调用overlays 找到base.py,复制到自己需要的目录 调用 from pynq.overlays.base import BaseOverlay base BaseOverlay("base.bit")找到pynq自带器件库 将led.py复制到自己需要的地方。 pynq-z2含有4个led灯 可以采用3种方式&…

PYNQ Z2一:板子连接与测试

PYNQ Z2一:板子连接与测试 PYNQ Z2初体验开发板的外观连接板子制作镜像,写入SD卡连接电脑使用预处理文件快速设置IP PYNQ Z2初体验 今天刚到手了一块PYNQ-Z2,确认过眼神,是块好板子,话不多说,先来测试一下…

PYNQ-Z2初识

基本框架: Zynq是基于双核ARM Cortex-A9处理器(称为处理系统或PS-Processing System)的SOC,集成了FPGA结构(称为可编程逻辑或PL-)。PS子系统包括许多专用的外设(内存控制器、USB、Uart、IIC、SPI等),并且可以在PL覆盖中通过附加的硬件IP进行扩…

【雪天鱼】(2) PYNQ_Z2从Vivado到SDK开发流程

文章目录 一、Vivado中手动添加Pynq-Z2板卡文件二、Block Design2.1 新建工程2.2 Block design 三、SDK开发3.1 Create Platform Project3.2 Create application project 四、下载验证 Date: 2023/3/23 Author: 雪天鱼 一、Vivado中手动添加Pynq-Z2板卡文件 在xilinx官网下载…

PYNQ-Z2零基础学习详解

本人在学习PYNQ,想用自己的理解来解释零基础学习过程中的一些坑,同时采用非官方语言来介绍如何使用PYNQ。大家有什么问题可以给我留言。也可以关注微信公众号 三丰杂货铺 一起讨论。 简介:PYNQ是“python productivity for zynq”的缩写…

sony z2 android 5.0,索尼Xperia Z2 5.0 root教程_索尼Z2获取5.0系统的root

来说一下咱们的索尼Xperia Z2手机的5.0系统的root,因为现在很多机友的系统是5.0的,可是对于5.0的系统很多机友还不知道如何进行root操作,之前的针对4.4的系统的root方法肯定是用不到5.0的系统上的,因此需要专门的针对5.0的root软件…

超详细pynq-z2入门

pynq-z2入门 文章目录 0.pynq架构介绍1.下载pynq-z2镜像2.镜像烧录3.将pc端的IP地址改为192.168.2.1004.开发板跳线帽连接5.开发板上电6. 安装好jupyter环境7.通过IP地址192.168.2.99或者pynq:9090连接开发板8.访问板子的文件系统8. 通过samba传输文件 pynq-z2的一些基本信息参…

机械革命z2黑苹果双系统改造计划

机械革命z2黑苹果改造计划 原来的系统硬盘才256G实在太小了,趁固态便宜搞了一块大华C900Plus-b 1T固态,加上之前电脑里后加的一块海康威视c2000pro 1T准备搞一个winmac双系统生产力工具 黑苹果效果展示 黑苹果的详细教程b站上有很多,也可以…

PYNQ-Z2 镜像烧录设备启动网络设置

文章用于学习记录 文章目录 前言一、PYNQ-Z2 开发板板卡介绍二、环境配置与板卡启动1. 软硬件准备2. 烧写镜像3. 连接 PC,上电启动 三、给电脑配置一个静态的 IP四、连接到 Jupyter五、Samba 文件共享六、例程测试总结 前言 PYNQ 即 pythonZYNQ ,ZYNQ 分…

零基础编程桌球小游戏

对于零基础的同学来说自己编程一个小游戏之类的会有很大的成就感吧。那么我就来分享一些编程小游戏的技巧。就拿一个台球在台球桌上动来说吧。对于零基础的人来说要不急不躁慢慢的来。我分享的代码可能有些简化,不见得是最好的但是是最上手的。 在编程过程中我们会用…