TF-IDF在现代搜索引擎优化策略中的作用

TF-IDF(Term Frequency-Inverse Document Frequency)是一种用于文本挖掘和信息检索的统计方法,用来评估一个词语对于一个文档或一个语料库的重要程度。TF-IDF算法结合了词频(TF)和逆文档频率(IDF)两个指标,既考虑了词语在单个文档中的出现频率,也考虑了词语在整个语料库中的普遍性。

1. 术语解释

1.1 词频(TF)

词频(Term Frequency)是指一个词在文档中出现的频率。如果一个词经常出现,它就一定很重要,对吗?并非总是如此!像 “and”、"the "和 "is "这样的词在英语中经常出现,但它们并不能说明文档的内容。这就是 IDF 的作用所在。

tf(t,d) = count of t in d / number of words in d

1.2 逆文档频率(IDF)

逆文档频率(Inverse Document Frequency)用来衡量词语在整个语料库中的普遍性。词语出现得越频繁,其信息量越小,反之,出现得越少,其信息量越大。

在这里插入图片描述

2. TF-IDF计算

TF-IDF值是TF和IDF的乘积,用来衡量词语的重要性。公式如下:

TF-IDF(t,d,D)=TF(t,d)×IDF(t,D)

3. 示例

假设我们有如下三个文档:

  • 文档1:我喜欢看电影
  • 文档2:我不喜欢看电影
  • 文档3:我喜欢看书

首先,我们计算每个文档中词语的词频(TF):

词语文档1 TF文档2 TF文档3 TF
1/41/41/4
喜欢1/41/41/4
1/41/41/4
电影1/41/40
01/40
001/4

接着,我们计算每个词语的逆文档频率(IDF):

词语出现文档数IDF
3log⁡(3/3)=0\log(3/3) = 0log(3/3)=0
喜欢3log⁡(3/3)=0\log(3/3) = 0log(3/3)=0
3log⁡(3/3)=0\log(3/3) = 0log(3/3)=0
电影2log⁡(3/2)≈0.176\log(3/2) \approx 0.176log(3/2)0.176
1log⁡(3/1)≈1.098\log(3/1) \approx 1.098log(3/1)1.098
1log⁡(3/1)≈1.098\log(3/1) \approx 1.098log(3/1)1.098

最后,我们计算TF-IDF值:

词语文档1 TF-IDF文档2 TF-IDF文档3 TF-IDF
000
喜欢000
000
电影1/4×0.176≈0.0441/4 \times 0.176 \approx 0.0441/4×0.1760.0441/4×0.176≈0.0441/4 \times 0.176 \approx 0.0441/4×0.1760.0440
01/4×1.098≈0.2751/4 \times 1.098 \approx 0.2751/4×1.0980.2750
001/4×1.098≈0.2751/4 \times 1.098 \approx 0.2751/4×1.0980.275

4. 代码

>>> from sklearn.feature_extraction.text import TfidfTransformer
>>> from sklearn.feature_extraction.text import CountVectorizer
>>> from sklearn.pipeline import Pipeline
>>> corpus = ['this is the first document',
...          'this document is the second document',
...          'and this is the third one',
...          'is this the first document']
>>> vocabulary = ['this', 'document', 'first', 'is', 'second', 'the',
...              'and', 'one']
>>> pipe = Pipeline([('count', CountVectorizer(vocabulary=vocabulary)),
...                 ('tfid', TfidfTransformer())]).fit(corpus)
>>> pipe['count'].transform(corpus).toarray()
array([[1, 1, 1, 1, 0, 1, 0, 0],
   [1, 2, 0, 1, 1, 1, 0, 0],
   [1, 0, 0, 1, 0, 1, 1, 1],
   [1, 1, 1, 1, 0, 1, 0, 0]])
>>> pipe['tfid'].idf_
array([1.        , 1.22314355, 1.51082562, 1.        , 1.91629073,
   1.        , 1.91629073, 1.91629073])
>>> pipe.transform(corpus).shape
(4, 8)

参考 https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfTransformer.html

5. 应用场景

  • 信息检索:通过TF-IDF算法可以提升搜索引擎的搜索结果质量,使得相关性高的文档排在前面。
  • 文本分类:作为文本特征提取的方法,TF-IDF在文本分类中有广泛应用。
  • 推荐系统:结合用户的历史记录和文档的TF-IDF值,推荐系统可以向用户推荐更符合其兴趣的内容。

6. 优缺点

优点

  • 简单易实现: TF-IDF算法计算简单,易于实现。
  • 有效性: 在许多文本挖掘和信息检索任务中,TF-IDF算法表现良好。

缺点

  • 忽略词序和语义: TF-IDF只考虑词频和逆文档频率,忽略了词语的顺序和上下文语义。
  • 高维稀疏性: 在大型语料库中,TF-IDF矩阵会非常稀疏,计算和存储成本较高。

7. 总结

TF-IDF算法是一种经典且广泛使用的文本特征提取方法,尽管有一些局限性,但在许多实际应用中依然表现良好。理解和掌握TF-IDF算法对于从事自然语言处理和信息检索领域的研究人员和工程师来说,是非常重要的。

我会定期在CSDN分享我的学习心得,项目经验和行业动态。如果你对某个领域感兴趣,或者想要了解更多技术干货,请关注我的账号,一起成长!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TOPGP-TIPTOP调用外部Webservice

功能要求:ERP作业调用外部系统的webserice更新数据。 演示环境:ERP作业cooi002(员工档案)录入后更新到外部系统员工档案表。 1、外部系统的WebSerice使用.net搭建 2、在Service.cs中写一个调用方法erp_other erp_other中两个参数…

32.基于分隔符解决黏包和半包

LineBasedFrameDecoder 基于换行/n (linux)或回车换行/r/n(windows)进行分割。 使用LIneBasedFrameDecoder构造方法,需要设定一个最大长度。 如果超过了最大长度,还是没有找到换行符,就这位这个数据段太长了,抛出ToolLongFrameException DelimiterBasedFrameDecoder …

个体核定征收双免个体户0税率大额核定税率全行业筹划

工商银行的会计政策和程序规定 工商银行会计政策和程序规定 工商银行的会计政策和程序规定 https://www.9733.cn/shop/ssch 一、个体工商户核定征收 核定征收是一种简化税收管理方式,适用于簿记不健全、难以准确核算收入和成本的个体。以下是主要特点&#xff1a…

使用Naive UI的级联选择器 Cascader进行省市区选择

序言: 在进行PC版的功能开发时,进行客户管理时老板要让客户便捷的选择自己的省市区等信息,而不是让他们一个个去填写,这时就需要使用级联选择器来进行省市区的选择。 注:element ui/plus的级联选择器也是可以的。 步骤…

美国众议院通过ENFORCE ACT草案:AI领域的潜在冷战?

近日,美国众议院通过了“增强关键出口海外限制国家框架法案”(ENFORCE ACT),该法案旨在限制AI/ML技术和人才向中国的流动。这一举动引发了广泛讨论和担忧,许多人认为这将对在美从事AI相关工作的中国人造成重大影响。本…

基于STM32的智能病房监控和人脸识别系统设计(毕业设计)

摘 要 随着技术的不断进步和医疗需求的不断增长,智能病房控制系统有望在医疗领域发挥更大的作用。基于此,本文研究设计了一款低成本、操作简单、适用性强的基于STM32的智能病房监控和人脸识别系统。该系统通过STM32作为控制器和OpenMV对人脸分辨进行门…

微信小程序开发---自定义底部tabBar

自定义tabBar注意事项: 在自定义 tabBar 模式下 ,为了保证低版本兼容以及区分哪些页面是 tab 页,app.json文件中 tabBar 的相关配置项需完整声明,但这些字段不会作用于自定义 tabBar 的渲染。所有 tabBar 的样式都由该自定义组件…

实现一个渐进优化的 Linux cp 命令

1&#xff0c;第1版 copy 先写个轮廓 selfcp.c &#xff1a; #include <stdio.h>int main() {FILE *source, *destination;char ch;source fopen("H222.txt", "r");if (source NULL) {printf("Error opening source file!\n");retur…

ISO14001认证:引领企业迈向绿色未来

在当今全球环境日益恶化的背景下&#xff0c;绿色发展已成为企业和社会共同追求的目标。ISO14001环境管理体系作为由国际标准化组织&#xff08;ISO&#xff09;制定的环境管理国际标准&#xff0c;为企业提供了系统和全面的环境管理框架&#xff0c;适用于各种类型和规模的组织…

ubuntu 20.04 访问csdn报错 Secure connection failed

打扰了&#xff0c;csdn服务器的问题&#xff0c;和源没关系&#xff0c;后面又重新测试了一下。刚好那一刻网站连上了。 暂时没有好办法&#xff0c;等待一段时间就连上了&#xff0c;改host似乎也不太行。 问题原因&#xff1a; 我一边更新源 sudo apt update & apt up…

计算机组成原理 —— 存储系统(主存储器基本组成)

计算机组成原理 —— 存储系统&#xff08;主存储器基本组成&#xff09; 0和1的硬件表示整合结构寻址按字寻址和按字节寻址按字寻址按字节寻址区别总结 字寻址到字节寻址转化 我们今天来看一下主存储器的基本组成&#xff1a; 0和1的硬件表示 我们知道一个主存储器是由存储体…

Webstorm vue项目@路径不能跳转到对应资源,提示Cannot find declaration to go to

Webstorm vue项目路径不能跳转到对应资源,提示Cannot find declaration to go to 我们 ctrl加鼠标左键点击方法会失效&#xff0c;看了网上很多教程在说需要在此处配置一下webpack.config.js的文件路径&#xff0c;而且指向了node_modules\vue\cli-service\webpack.config.js 我…

MURF3040CTR-ASEMI智能AI应用MURF3040CTR

编辑&#xff1a;ll MURF3040CTR-ASEMI智能AI应用MURF3040CTR 型号&#xff1a;MURF3040CTR 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220F 恢复时间&#xff1a;35ns 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;30A 最大循环峰值反向电压&#xff08;VR…

优选免单模式:电商销售的新篇章

随着电商市场的日益繁荣&#xff0c;各种创新销售模式层出不穷。其中&#xff0c;优选免单模式以其独特的运作方式和激励机制&#xff0c;吸引了大量消费者的目光。该模式的核心在于通过降低商品售价、引入社交元素以及设计阶梯式奖励&#xff0c;激发消费者的购买热情&#xf…

ES全文检索支持繁简和IK分词检索

ES全文检索支持繁简和IK分词检索 1. 前言2. 引入繁简转换插件analysis-stconvert2.1 下载已有作者编译后的包文件2.2 下载源码进行编译2.3 复制解压插件到es安装目录的plugins文件夹下 3. 引入ik分词器插件3.1 已有作者编译后的包文件3.2 只有源代码的版本3.3 安装ik分词插件 4…

Python-日志模块

目录 一、日志级别 二、日志配置 1、日志基本配置 2、日志配置字典&#xff08;知道咋么改就可以&#xff09; 3、日志的使用 一、日志级别 import logginglogging.debug(调试日志) logging.info(消息日志) logging.warning(警告日志) logging.error(错误日志) logging.cr…

1931java Web披萨店订餐系统idea开发mysql数据库web结构java编程计算机网页源码servlet项目

一、源码特点 java Web 披萨店订餐系统是一套完善的信息管理系统&#xff0c;结合java 开发技术和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用 B/S模式开发。 视频地址&#xff1a;…

sixLabors.ImageSharp图片截取

一、nuget <PackageReference Include"SixLabors.ImageSharp" Version"3.1.4" /> 二、代码 using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Diagnostics; u…

吉时利 2420(KEITHLEY) 高电流源表

Keithley 2420高电流源表&#xff0c;60V&#xff0c;3A&#xff0c;60W Keithley 2420 高压源表是一款 60W 仪器&#xff0c;设计用于输出和测量 5V&#xff08;输出&#xff09;和 1V&#xff08;测量&#xff09;至 60V 的电压以及 100pA 至 3A 的电流。2420 型的生产测试应…

【文献及模型、制图分享】1985-2015年美国坦帕湾流域土地开发利用强度时空变化分析

公众号新功能 目前公众号新增以下等功能 1、处理GIS出图、Python制图、区位图、土地利用现状图、土地利用动态度和重心迁移图等等 2、核密度分析、网络od分析、地形分析、空间分析等等 3、地理加权回归、地理探测器、生态环境质量指数、地理加权回归模型影响因素分析、计算…