讲师中心 微信公众号
AI工具推荐 视频效率加速

TF-IDF 详解:使用 TfidfVectorizer 计算词频-逆文档频率

陌晨君_8732

陌晨君_8732

发布时间:2025-07-22 16:48:01

|

1115人浏览过

|

来源于php中文网

原创

tf-idf 详解:使用 tfidfvectorizer 计算词频-逆文档频率

本文深入解析了 TfidfVectorizer 在计算 TF-IDF 值时的细节,重点解释了 IDF 的计算公式,包括 smooth_idf 参数的影响。同时,澄清了 TF 值的计算方式,强调了归一化步骤在 IDF 计算之后。通过本文,读者可以更准确地理解和使用 TfidfVectorizer 进行文本特征提取。

TF-IDF (Term Frequency-Inverse Document Frequency) 是一种常用的文本特征提取方法,用于评估一个词语对于一个文件集或一个语料库中的其中一份文件的重要程度。scikit-learn 库中的 TfidfVectorizer 提供了便捷的 TF-IDF 计算功能。理解 TfidfVectorizer 的计算细节对于正确使用它至关重要。本文将深入探讨 TfidfVectorizer 如何计算 TF-IDF 值,并解释一些常见的疑惑。

IDF 的计算

TfidfVectorizer 计算 IDF (Inverse Document Frequency) 的公式略有不同于简单的 log(总文档数 / 包含该词的文档数)。默认情况下,TfidfVectorizer 启用了 smooth_idf 参数,这会对 IDF 的计算产生影响。

当 smooth_idf=True 时,IDF 的计算公式如下:

IDF(t) = ln((1 + n) / (1 + df(t))) + 1

其中:

  • n 是文档总数。
  • df(t) 是包含词语 t 的文档数。

smooth_idf 的作用是平滑 IDF 值,防止出现 IDF 为零的情况,从而避免某些词语被完全忽略。 如果 smooth_idf=False,则计算公式为:

IDF(t) = ln(n / df(t)) + 1

以下是一个示例,说明 smooth_idf 的影响:

假设我们有 3 个文档,词语 "art" 只出现在 1 个文档中。

  • 当 smooth_idf=True 时:IDF("art") = ln((3 + 1) / (1 + 1)) + 1 = ln(2) + 1 ≈ 1.6931
  • 当 smooth_idf=False 时:IDF("art") = ln(3 / 1) + 1 = ln(3) + 1 ≈ 2.0986

可以通过设置 TfidfVectorizer 的 smooth_idf 参数来控制是否启用平滑。

from sklearn.feature_extraction.text import TfidfVectorizer
import numpy as np

data = ['Souvenir shop|Architecture and art|Culture and history',
        'Souvenir shop|Resort|Diverse cuisine|Fishing|Shop games|Beautiful scenery',
        'Diverse cuisine|Resort|Beautiful scenery']

# smooth_idf=True
vectorizer = TfidfVectorizer(smooth_idf=True)
tfidf_matrix = vectorizer.fit_transform(data)
print(f"smooth_idf=True 的 IDF 值:{vectorizer.idf_}")

# smooth_idf=False
vectorizer = TfidfVectorizer(smooth_idf=False)
tfidf_matrix = vectorizer.fit_transform(data)
print(f"smooth_idf=False 的 IDF 值:{vectorizer.idf_}")

输出结果类似:

smooth_idf=True 的 IDF 值:[1.69314718 1.         1.         1.69314718 1.         2.09861229
 1.69314718 2.09861229 2.09861229 1.69314718 2.09861229 2.09861229
 1.69314718]
smooth_idf=False 的 IDF 值:[2.09861229 1.         1.         2.09861229 1.
 2.40546511 2.09861229 2.40546511 2.40546511 2.09861229 2.40546511
 2.40546511 2.09861229]

TF 的计算

TF (Term Frequency) 指的是词语在文档中出现的次数。TfidfVectorizer 默认情况下直接使用词频作为 TF 值,并不进行文档长度的归一化。归一化是在 TF-IDF 计算的后续步骤中进行的。

例如,如果文档 "art" 在文档 1 中出现 1 次,文档 1 总共有 8 个词,那么 "art" 的 TF 值就是 1,而不是 1/8。

TfidfVectorizer 中有一个 norm 参数,可以控制是否进行归一化。如果 norm='l2',则会对每个文档的 TF-IDF 向量进行 L2 归一化,使得每个向量的模长为 1。

from sklearn.feature_extraction.text import TfidfVectorizer

data = ['Souvenir shop|Architecture and art|Culture and history',
        'Souvenir shop|Resort|Diverse cuisine|Fishing|Shop games|Beautiful scenery',
        'Diverse cuisine|Resort|Beautiful scenery']

vectorizer = TfidfVectorizer(norm='l2')
tfidf_matrix = vectorizer.fit_transform(data)

print(tfidf_matrix.toarray())

注意事项和总结

  • smooth_idf 参数会影响 IDF 的计算,默认值为 True。
  • TfidfVectorizer 直接使用词频作为 TF 值,不进行文档长度的归一化。
  • norm 参数控制是否对 TF-IDF 向量进行归一化。

理解 TfidfVectorizer 的计算细节对于正确使用 TF-IDF 进行文本特征提取至关重要。通过调整 smooth_idf 和 norm 参数,可以根据具体任务的需求来优化 TF-IDF 的计算方式。 掌握这些细节可以帮助开发者更好地理解文本数据,并构建更有效的文本分析模型。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

相关专题

更多
FrankenPHP集成Laravel详细教程
FrankenPHP集成Laravel详细教程

本专题提供FrankenPHP集成Laravel的详细配置指南,全面解析运行原理、开发环境搭建、Caddyfile配置、Octane工作模式、数据库连接、队列任务、定时任务和生产环境优化,解决部署过程中常见的报错与兼容性问题。

0

2026.10.08

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

120

2026.09.30

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

100

2026.09.30

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

80

2026.09.30

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

80

2026.09.30

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

100

2026.09.29

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

300

2026.09.23

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

180

2026.09.23

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

140

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn