当前位置: 首页 > article >正文

TF-IDF BM25 原理及应用

1. 什么是TF-IDFTF-IDF(Term Frequency-Inverse Document Frequency,词频-逆文档频率)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加但同时会随着它在语料库中出现的频率成反比下降词频 (term frequency, TF)指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被归一化(一般是词频除以文章总词数), 以防止它偏向长的文件。同一个词语在长文件里可能会比短文件有更高的词频而不管该词语重要与否。逆文档频率Inverse Document FrequencyIDF指的是文件总数和某个词语出现文件数之比。TF-IDF就是TF和IDF的乘积。TF是一个词语在一篇文章中的出现次数IDF是一个词语在所有文档中出现次数的倒数一个词语在一篇文档中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章所以二者相乘的TF-IDF就可以用来衡量一个词在一篇文档中的重要性。对于语料库D中给定的文档d里的词项t有tf(t,d)(t在d中出现的次数)/(d的长度)tf(t, d) (t在d中出现的次数)/(d的长度)tf(t,d)(t在d中出现的次数)/(d的长度)idf(t,D)log(文档数)/(包含t的文档数)idf(t, D) log(文档数)/(包含t的文档数)idf(t,D)log(文档数)/(包含t的文档数)tfidf(t,d,D)tf(t,d)×idf(t,D)tfidf(t, d, D) tf(t, d)\times idf(t, D)tfidf(t,d,D)tf(t,d)×idf(t,D)2. 用TF-IDF找到文档的主题认为在一篇文档中某个词的TF-IDF值越大这个词就越能代表这篇文档。1fromsklearn.feature_extraction.textimportTfidfVectorizer23if__name____main__:6docs[The faster Harry got to the store, the faster and faster Harry would get home.]7docs.append(Harry is hairy and faster than Jill.)8docs.append(Jill is not as hairy as Harry.)9corpusdocs10vectorizerTfidfVectorizer(min_df1)11modelvectorizer.fit_transform(corpus)12print(vectorizer.get_feature_names())13print(model.todense().round(2))~这是一段使用sklearn来计算文档TF-IDF的代码结果如下根据TF-IDF的数值可以看到这种方法认为第一、二个句子中the这个词的最重要而第三个句子认为as这个词最重要但是在常识上我们知道这两个词是不能够代表这三个句子的。这种常见的但对短语而言承载实际意义很少的词被称为“停用词”在实际用的时候回去掉的或者当语料足够多的情况下因为它们在每一个文档中都大量存在所以TF-IDF分数会变小。3. 用TF-IDF的向量计算两个文档的相关度我们已经得到了每篇文档使用TF-IDF表示的向量之后只要对两个向量做点乘就可以得到对应的两篇文档的相关性了。4. BM25BM25 是信息检索IR里最经典、工程上仍然大量使用的 稀疏检索打分函数本质是在 TF-IDF 基础上的一个概率化 饱和 长度归一化改进版本。4.1 BM25 在干什么直观理解给定 queryqqq和文档dddBM25 做的是计算这个 query 和文档的相关性分数用于排序ranking核心思想词出现越多 → 越相关TF词越稀有 → 越重要IDF文档太长 → 要惩罚length normalization同一个词出现很多次 → 收益递减饱和4.2 BM25 公式核心BM25(q,d)∑t∈qIDF(t)⋅f(t,d)⋅(k11)f(t,d)k1⋅(1−bb⋅∣d∣avgdl)BM25(q,d)\sum_{t\in q} IDF(t)\cdot \frac{f(t,d)\cdot(k_11)}{f(t,d)k_1\cdot(1-bb\cdot\frac{|d|}{avgdl})}BM25(q,d)t∈q∑​IDF(t)⋅f(t,d)k1​⋅(1−bb⋅avgdl∣d∣​)f(t,d)⋅(k1​1)​f(t,d)f(t,d)f(t,d)词频query 中的词ttt在文档ddd中出现的次数IDF(t)IDF(t)IDF(t)逆文档频率常见形式IDF(t)log⁡N−nt0.5nt0.5IDF(t)\log \frac{N-n_t0.5}{n_t0.5}IDF(t)lognt​0.5N−nt​0.5​NNN表示总文档数ntn_tnt​表示包含词ttt的文档数分母长度归一化 饱和控制关键在这一项f(t,d)k1⋅(1−bb⋅∣d∣avgdl)f(t,d)k_1\cdot(1-bb\cdot\frac{|d|}{avgdl})f(t,d)k1​⋅(1−bb⋅avgdl∣d∣​)包含两个机制长度归一化b其中∣d∣|d|∣d∣表示文档长度avgdlavgdlavgdl表示平均文档长度b∈[0,1]b\in[0,1]b∈[0,1]是可调节参数文档越长 → 分母越大 → 得分降低TF 饱和k1可调节参数k1∈[1.2,2.0]k_1\in[1.2,2.0]k1​∈[1.2,2.0]词出现 1 次 vs 10 次 → 不会差 10 倍防止关键词堆砌spam

相关文章:

TF-IDF BM25 原理及应用

1. 什么是TF-IDFTF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文档频率),是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在…...

树莓派4B学习笔记——IO通信篇(UART)

文章目录UART简介树莓派使用UART与串口屏通信串口屏简介硬件连接配置串口接口树莓派打开UART接口树莓派安装串口调试助手编程实现wiringSerial.h Serial简介C语言实现树莓派UART与串口屏通信总结树莓派4B入门学习笔记汇总UART简介 UART是一种通用串行数据总线,用于…...

树莓派4B学习笔记——IO通信篇(1-Wire)

文章目录单总线协议简介树莓派4BDHT11(1-Wire协议)DHT11简介接口定义数据格式通信流程硬件连接开启树莓派1-Wire接口编程实现利用单总线与DS18B20通信获取温度总结树莓派4B入门学习笔记汇总单总线协议简介 1-wire 单总线是Maxim 全资子公司Dallas 的一项…...

树莓派4B学习笔记——IO通信篇(SPI)

文章目录SPI协议简介树莓派4B1.3寸OLED(SPI协议)1.3寸OLED简介接线图开启树莓派SPI接口wiringPiSPI库简介C语言实现(汉字、字符、数字、图片显示)Python实现总结树莓派4B入门学习笔记汇总SPI协议简介 SPI(Serial Peripheral inte…...

FastAPI单元测试实战:别等上线被喷才后悔,TestClient用对了真香!找

正文 异步/等待解决了什么问题? 在传统同步I/O操作中(如文件读取或Web API调用),调用线程会被阻塞直到操作完成。这在UI应用中会导致界面冻结,在服务器应用中则造成线程资源的浪费。async/await通过非阻塞的异步操作解…...

gopher-os社区贡献指南:从代码提交到功能开发的完整参与流程

gopher-os社区贡献指南:从代码提交到功能开发的完整参与流程 【免费下载链接】gopher-os A proof of concept OS kernel written in Go 项目地址: https://gitcode.com/gh_mirrors/go/gopher-os gopher-os是一个用Go语言编写的操作系统内核概念验证项目&…...

JavaScript中骨架屏Skeleton在异步数据加载中应用

骨架屏的核心作用是提升用户感知性能——用模拟真实内容布局的视觉占位符替代空白等待,降低加载焦虑;它比loading图标更能建立界面认知,需通过请求前插入、请求后替换实现,并注重结构准确、动画克制与切换干净。骨架屏&#xff08…...

如何快速安装Hollow Knight模组:Scarab模组管理器的完整指南

如何快速安装Hollow Knight模组:Scarab模组管理器的完整指南 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 厌倦了手动下载和安装Hollow Knight模组的繁琐过程&am…...

MapAnything损失函数深度剖析:如何设计多任务学习框架

MapAnything损失函数深度剖析:如何设计多任务学习框架 【免费下载链接】map-anything MapAnything: Universal Feed-Forward Metric 3D Reconstruction 项目地址: https://gitcode.com/gh_mirrors/map/map-anything MapAnything作为一款先进的通用前馈度量3D…...

YOLOv12部署实战:ONNX、TensorRT、OpenVINO三大引擎对比

YOLOv12部署实战:ONNX、TensorRT、OpenVINO三大引擎对比 【免费下载链接】yolov12 [NeurIPS 2025] YOLOv12: Attention-Centric Real-Time Object Detectors 项目地址: https://gitcode.com/gh_mirrors/yo/yolov12 YOLOv12作为NeurIPS 2025最新推出的注意力中…...

英伟达 Blackwell Ultra 正式量产:20 PFLOPS 单机柜算力

前言4月7日,英伟达正式宣布 Blackwell Ultra(GB300)量产出货。这条消息在技术圈炸开的速度,比很多人预期的快。简单说数字:单机柜 FP8 算力 20 PFLOPS,比 H100 提升约 8 倍,能效比提升 5 倍。这…...

Amber与Kemal框架深度对比:为什么选择Amber开发企业级应用

Amber与Kemal框架深度对比:为什么选择Amber开发企业级应用 【免费下载链接】amber A Crystal web framework that makes building applications fast, simple, and enjoyable. Get started with quick prototyping, less bugs, and blazing fast performance. 项目…...

5分钟完成开源工具FanControl本地化界面设置:效率提升指南

5分钟完成开源工具FanControl本地化界面设置:效率提升指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…...

如何使用R语言制作词云

词云是一种常见的文本数据可视化的方法,词云分析的工作有多种,其中使用R语言中的wordcloud包中的wordcloud2函数可以很方便地制作词云。 关于wordcold2函数的用法不再赘述,查以使用help(wordcloud2)查看有关帮助,其中的参数是不难…...

Tsung动态变量高级用法:从数据提取到循环测试的完整教程

Tsung动态变量高级用法:从数据提取到循环测试的完整教程 【免费下载链接】tsung Tsung is a high-performance benchmark framework for various protocols including HTTP, XMPP, LDAP, etc. 项目地址: https://gitcode.com/gh_mirrors/ts/tsung Tsung是一款…...

Papa Parse CSV解析完全指南:从问题诊断到性能优化的4个实战方案

Papa Parse CSV解析完全指南:从问题诊断到性能优化的4个实战方案 【免费下载链接】PapaParse Fast and powerful CSV (delimited text) parser that gracefully handles large files and malformed input 项目地址: https://gitcode.com/gh_mirrors/pa/PapaParse …...

CV算法工程师成长指南:10个必备技能助你快速入门计算机视觉

CV算法工程师成长指南:10个必备技能助你快速入门计算机视觉 【免费下载链接】cv_note 记录cv算法工程师的成长之路,分享计算机视觉和模型压缩部署技术栈笔记。https://harleyszhang.github.io/cv_note/ 项目地址: https://gitcode.com/gh_mirrors/cv/c…...

Outlook一直卡在“正在加载配置文件”怎么办?一篇文章教你快速修复

🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...

如何快速掌握gh_mirrors/sc/screencasts中的D3.js数据可视化

如何快速掌握gh_mirrors/sc/screencasts中的D3.js数据可视化 【免费下载链接】screencasts Code that goes along with my screencasts. 项目地址: https://gitcode.com/gh_mirrors/sc/screencasts gh_mirrors/sc/screencasts是一个包含丰富D3.js教程和实例代码的项目&a…...

Windows本地开发环境连接云端RWKV7-1.5B-G1A模型服务指南

Windows本地开发环境连接云端RWKV7-1.5B-G1A模型服务指南 1. 前言:为什么需要本地连接云端模型 对于Windows开发者来说,直接在本地运行大模型往往面临硬件资源不足的问题。RWKV7-1.5B-G1A作为一款性能优异的中等规模语言模型,在云端GPU服务…...

终极指南:如何用虎符台轻松管理全面战争MOD,告别游戏崩溃烦恼

终极指南:如何用虎符台轻松管理全面战争MOD,告别游戏崩溃烦恼 【免费下载链接】legion-seal 虎符台/Legion Seal,全面战争游戏MOD管理器,技术栈:Tauri 2 Vue TailwindCSS 项目地址: https://gitcode.com/zeyl/legi…...

Inspektor Gadget开发者指南:从零构建你的第一个eBPF监控工具

Inspektor Gadget开发者指南:从零构建你的第一个eBPF监控工具 【免费下载链接】inspektor-gadget Inspektor Gadget is a set of tools and framework for data collection and system inspection on Kubernetes clusters and Linux hosts using eBPF 项目地址: h…...

YOLOE官版镜像快速部署指南:5分钟搞定开放词汇目标检测环境

YOLOE官版镜像快速部署指南:5分钟搞定开放词汇目标检测环境 1. 引言:为什么选择YOLOE官版镜像 在计算机视觉领域,目标检测技术已经发展得相当成熟。然而,传统模型如YOLOv5/v8存在一个明显局限——它们只能识别训练时见过的固定类…...

集成AI 的 Redis 客户端 Rudist发布新版了诒

Qt是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本笔记将重点介绍QSpinBox数值微调组件的常用方法及灵活应用。…...

模型和算法篇(二)监督学习分类问题

分类问题算法...

08_Doris 全文搜索进阶:BM25 算法与 SEARCH 函数详解

08_Doris 全文搜索进阶:BM25 算法与 SEARCH 函数详解 关键字: Apache Doris、BM25算法、全文检索、SEARCH函数、倒排索引、自定义分词器、拼音检索、中文分词、相关性评分、score()函数 标签: Apache Doris 全文搜索 BM25 倒排索引 中文分词…...

无线水位远程监测系统简介

无线水位远程监测系统是一种利用无线通信技术实现水位数据实时采集、传输和监控的解决方案,广泛应用于河流、水库、水塔、地下水等场景。一、国科WD300无线水位远程监测系统概述WD300系列无线水位远程监测系统,是用来测量水电站大坝、水库、前池、调压井…...

在科技革新与政策红利的双重驱动下,低空经济正成为全球城市发展的新引擎。随着城市空中交通(UAM)场景的快速落地,气象预测技术作为核心支撑,其重要性日益凸显。

一、低空经济的气象挑战与技术突破低空经济依托 1000 米以下空域构建立体交通网络,涵盖物流配送、应急救援、城市通勤等多元场景。然而,该空域受边界层湍流、强对流、风切变等复杂气象条件影响显著,对气象服务的时空分辨率和响应速度提出严苛…...

如何3步快速检测微信单向好友:免费开源工具完整教程

如何3步快速检测微信单向好友:免费开源工具完整教程 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends …...

游戏音频解密全流程:acbDecrypter高效处理指南

游戏音频解密全流程:acbDecrypter高效处理指南 【免费下载链接】acbDecrypter 项目地址: https://gitcode.com/gh_mirrors/ac/acbDecrypter 在游戏开发与音频 mod 创作中,如何突破加密音频格式的限制,将 ACB、HCA、ADX 等专用格式转换…...