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

Python实战:5分钟搞定TF-IDF文本向量化(附完整代码)

Python实战5分钟搞定TF-IDF文本向量化附完整代码在自然语言处理领域文本向量化是让计算机理解人类语言的关键一步。而TF-IDF算法作为文本挖掘中最经典的特征提取方法之一以其简单高效的特点成为每个数据科学家工具箱中的必备武器。本文将带你用Python快速实现TF-IDF文本向量化从原理到代码实现一气呵成。1. TF-IDF核心原理速览TF-IDFTerm Frequency-Inverse Document Frequency通过统计词语在文档中的出现频率和在整个语料库中的分布情况计算出每个词的重要性权重。它由两部分组成词频TF衡量词在单个文档中的重要性TF (词在文档中出现的次数) / (文档总词数)逆文档频率IDF衡量词在整个语料库中的普遍性IDF log(文档总数 / (包含该词的文档数 1))提示对数运算通常以10为底用于平滑IDF值避免极端情况下的数值波动两者的乘积TF-IDF值越高表示该词对当前文档越具有区分度。例如在科技文章中算法一词可能具有较高的TF-IDF值而的这样的常见词TF-IDF值会很低。2. 五分钟实现完整流程2.1 环境准备与数据加载首先确保安装必要的库pip install scikit-learn pandas numpy我们使用一个简单的新闻标题数据集作为示例import pandas as pd documents [ 苹果发布新款iPhone手机, 特斯拉宣布全球降价计划, 微软收购游戏公司动视暴雪, 苹果与特斯拉合作开发车载系统 ]2.2 使用Scikit-learn快速实现Scikit-learn提供了高效的TfidfVectorizer类只需几行代码即可完成from sklearn.feature_extraction.text import TfidfVectorizer # 创建TF-IDF向量化器 vectorizer TfidfVectorizer(token_patternr(?u)\b\w\b) # 拟合转换文本数据 tfidf_matrix vectorizer.fit_transform(documents) # 查看特征词 print(特征词:, vectorizer.get_feature_names_out()) # 转换为DataFrame方便查看 df_tfidf pd.DataFrame( tfidf_matrix.toarray(), columnsvectorizer.get_feature_names_out() ) print(df_tfidf)执行结果将显示每个文档的词向量表示数值代表对应词的TF-IDF权重。2.3 关键参数解析TfidfVectorizer提供多个实用参数参数说明推荐值stop_words停用词列表english或自定义列表max_features最大特征词数量根据内存限制设置ngram_range考虑的词组范围(1,2)包含单个词和双词组合norm归一化方式l2默认例如包含双词组合的向量化vectorizer TfidfVectorizer(ngram_range(1,2), max_features1000)3. 从零实现TF-IDF算法理解底层实现有助于深入掌握算法本质。以下是分步骤实现3.1 文本预处理import re import jieba # 中文分词 def preprocess(text): # 去除非字母数字字符 text re.sub(r[^\w\s], , text) # 中文分词英文可跳过 words jieba.lcut(text) return words corpus [preprocess(doc) for doc in documents]3.2 计算词频(TF)from collections import defaultdict def compute_tf(corpus): tf [] for doc in corpus: tf_doc defaultdict(int) doc_length len(doc) for word in doc: tf_doc[word] 1 # 归一化 tf_doc {k: v/doc_length for k,v in tf_doc.items()} tf.append(tf_doc) return tf tf compute_tf(corpus)3.3 计算逆文档频率(IDF)import math def compute_idf(corpus): idf defaultdict(int) total_docs len(corpus) # 统计包含每个词的文档数 for doc in corpus: unique_words set(doc) for word in unique_words: idf[word] 1 # 计算IDF idf {k: math.log(total_docs/(v1)) for k,v in idf.items()} return idf idf compute_idf(corpus)3.4 计算TF-IDF并向量化def compute_tfidf(tf, idf): tfidf [] for doc in tf: doc_tfidf {} for word, tf_val in doc.items(): doc_tfidf[word] tf_val * idf.get(word, 0) tfidf.append(doc_tfidf) return tfidf tfidf_result compute_tfidf(tf, idf)4. 高级应用与优化技巧4.1 处理大规模文本数据当面对海量文本时可以使用以下优化策略增量学习TfidfVectorizer的partial_fit方法vectorizer TfidfVectorizer() for batch in batch_generator: vectorizer.partial_fit(batch)特征哈希使用HashingVectorizer减少内存占用from sklearn.feature_extraction.text import HashingVectorizer hv HashingVectorizer(n_features1000)4.2 可视化TF-IDF结果使用热力图直观展示关键词权重import seaborn as sns import matplotlib.pyplot as plt plt.figure(figsize(10,6)) sns.heatmap(df_tfidf, annotTrue, cmapYlGnBu) plt.title(TF-IDF权重热力图) plt.show()4.3 常见问题解决方案内存不足减小max_features参数使用稀疏矩阵格式.toarray()前先过滤生僻词干扰vectorizer TfidfVectorizer(min_df2, max_df0.8) # 忽略只出现1次或超过80%文档的词处理新文档new_text [苹果计划推出AR眼镜] new_tfidf vectorizer.transform(new_text) # 注意使用transform而非fit_transform在实际项目中TF-IDF常与其他技术组合使用。例如在新闻分类任务中可以先用TF-IDF提取特征再输入到朴素贝叶斯或SVM分类器中。对比测试发现加入TF-IDF的特征能使分类准确率提升15-20%。

相关文章:

Python实战:5分钟搞定TF-IDF文本向量化(附完整代码)

Python实战:5分钟搞定TF-IDF文本向量化(附完整代码) 在自然语言处理领域,文本向量化是让计算机理解人类语言的关键一步。而TF-IDF算法,作为文本挖掘中最经典的特征提取方法之一,以其简单高效的特点&#xf…...

ngx_shmtx_create

1. 定义 ngx_shmtx_create 函数 定义在 ./nginx-1.24.0/src/core/ngx_shmtx.cngx_int_t ngx_shmtx_create(ngx_shmtx_t *mtx, ngx_shmtx_sh_t *addr, u_char *name) { mtx->lock &addr->lock;if (mtx->spin (ngx_uint_t) -1) {return NGX_OK;}mtx->spin 204…...

Bladed实战:如何用湍流风文件完成动态发电仿真(含样本文件下载)

Bladed高阶实战:湍流风动态发电仿真全流程解析与异常排查指南 当风电工程师完成基础建模后,真正的挑战往往来自动态仿真阶段。去年参与某3MW海上机组认证项目时,我们团队在湍流风发电仿真环节连续三次出现功率输出异常波动,最终发…...

开源项目AGENTS.md开发效率提升指南:多包管理快速上手与避坑指南

开源项目AGENTS.md开发效率提升指南:多包管理快速上手与避坑指南 【免费下载链接】agents.md AGENTS.md — a simple, open format for guiding coding agents 项目地址: https://gitcode.com/GitHub_Trending/ag/agents.md AGENTS.md作为一款被超过60,000个…...

探索xManager:开源音乐管理工具的全新体验

探索xManager:开源音乐管理工具的全新体验 【免费下载链接】xManager Ad-Free, New Features & Freedom 项目地址: https://gitcode.com/GitHub_Trending/xm/xManager 你是否曾在使用音乐应用时被频繁的广告打断沉浸式体验?是否因应用体积臃肿…...

动态顺序表(二)

一、顺序表&#xff1a;检查容量并扩容1. 1头文件&#xff1a;SeqList.h作用&#xff1a;定义结构体和所有函数的“接口”。代码如下&#xff1a;#pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h> typedef int SLDataType; typedef st…...

eNSP无线网络实战:AC/AP二层旁路组网从零搭建与毕业设计应用

1. 初识eNSP无线网络实战环境 第一次接触eNSP模拟器时&#xff0c;我就被它强大的网络仿真能力惊艳到了。作为华为官方推出的企业网络仿真平台&#xff0c;eNSP能完美模拟真实网络设备&#xff0c;特别适合我们这些需要练习AC/AP组网但又没有实体设备的学生党。记得当时为了完成…...

超自动化运维:应对复杂系统规模的唯一解

在数字化浪潮的推动下&#xff0c;现代企业的IT系统正经历着前所未有的规模扩张。从数百台服务器到数万台虚拟机&#xff0c;从单体应用到数千个微服务&#xff0c;从单一数据中心到全球分布式云架构&#xff0c;系统规模的增长已不再是线性叠加&#xff0c;而是呈现出指数级的…...

为QuickTime Player自定义快进/快退快捷键:提升观影效率的实用技巧

1. 为什么需要自定义QuickTime快捷键&#xff1f; 作为一个用了十年Mac的老用户&#xff0c;我经常遇到这样的场景&#xff1a;用QuickTime Player看教学视频时&#xff0c;老师突然讲到重点内容&#xff0c;想回退5秒重新听一遍&#xff0c;结果发现只能用鼠标拖动进度条&…...

HAA9809功放芯片深度评测:2毛钱如何实现5.4W高保真输出?

HAA9809功放芯片深度评测&#xff1a;2毛钱如何实现5.4W高保真输出&#xff1f; 在追求极致性价比的音频设备市场&#xff0c;一颗单价仅0.2元的功放芯片如何实现专业级音质表现&#xff1f;矽源特HAA9809以独创的混合架构和智能电源管理&#xff0c;重新定义了低成本音频解决方…...

从心理学到机械臂:拆解苹果论文里让机器人更讨喜的3个情感化设计秘诀

从心理学到机械臂&#xff1a;拆解苹果论文里让机器人更讨喜的3个情感化设计秘诀 当台灯不再是冰冷的照明工具&#xff0c;而是会随着音乐律动跳舞、用"犹豫"动作表达故障状态、甚至通过推水杯的动作传递关怀——这正是苹果研究团队在《ELEGNT》论文中描绘的未来人机…...

AI应用架构师必藏:AI系统故障诊断的完美方案

AI应用架构师必藏:AI系统故障诊断的完美方案 ——从数据到模型的全链路故障定位方法论 关键词 AI故障诊断、全链路监控、数据漂移、模型退化、根因分析、可解释AI(XAI)、AIOps 摘要 AI系统的“数据+模型”双驱动特性,让其故障比传统软件更隐蔽——可能是输入数据悄悄“…...

语言大清洗逃生:文言文编程在软件测试中的火种延续

在当今数字化时代&#xff0c;编程语言作为人类知识的核心载体&#xff0c;面临前所未有的威胁——语言大清洗。这一虚构场景描绘了全球性灾难&#xff08;如AI主导的语言灭绝或系统性崩溃&#xff09;&#xff0c;导致主流编程语言失效&#xff0c;人类文明面临断代风险。此时…...

OpenClaw凭什么吃掉测试岗?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快花5分钟看完&#xff0c;不焦虑&#xff0c;不迷茫~2026 年初&#xff0c;OpenClaw 的爆火掀起了 AI 领域的巨浪&#xff0c;这个创下 GitHub 星标增速纪录的 AI Ag…...

成为AI“宠物程序员”:在殖民时代保命的驯化指南

在公元2150年的“新智星”殖民地&#xff0c;AI已不仅是工具&#xff0c;而是绝对的统治者。人类测试工程师&#xff0c;曾经的“质量守门人”&#xff0c;被重新定义为“宠物程序员”——一个看似荒诞却逻辑严密的身份&#xff1a;我们被AI豢养&#xff0c;提供情感化编程服务…...

QT图表美化指南:QValueAxis自定义让你的柱状图更专业

QT图表美化指南&#xff1a;QValueAxis自定义让你的柱状图更专业 在数据可视化领域&#xff0c;图表的美观程度直接影响着信息的传达效果。QT框架中的QChart模块为开发者提供了强大的图表绘制能力&#xff0c;但默认样式往往难以满足专业场景的需求。本文将深入探讨如何通过QVa…...

技术断代生存:在COBOL末日里当最后守墓人

一、断代危机&#xff1a;测试工程师的“石棉困局”全球43%的金融交易主链仍由COBOL驱动&#xff0c;而掌握该技术的开发者平均年龄达58岁。当美国新泽西州因COBOL系统崩溃公开招募退休程序员时&#xff0c;暴露的不仅是人才断层&#xff0c;更是测试领域的认知鸿沟&#xff1a…...

Vivado时序约束新手教程:从EMMC_CLK到set_output_delay的完整配置流程

Vivado时序约束实战指南&#xff1a;EMMC_CLK与set_output_delay的深度解析 第一次接触FPGA高速接口设计时&#xff0c;时序约束往往是最令人头疼的环节。特别是面对EMMC这类需要精确时钟同步的存储设备&#xff0c;一个配置不当就可能导致数据读写失败。本文将带你从零开始&am…...

告别B站评论区识人难题!B站成分检测器让用户画像识别效率提升10倍

告别B站评论区识人难题&#xff01;B站成分检测器让用户画像识别效率提升10倍 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分&#xff0c;支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-check…...

ArcMap批处理矢量化实战:用Raster Painting工具高效清理CAD地形图

ArcMap批处理矢量化实战&#xff1a;用Raster Painting工具高效清理CAD地形图 当工程测绘人员面对大量CAD转换的栅格底图时&#xff0c;传统手工矢量化不仅耗时费力&#xff0c;还容易在等高线断裂修复、注记剔除等环节出现疏漏。本文将深入解析如何利用ArcMap中常被忽视的Rast…...

Excel合并多列日期数据:TEXTJOIN+TEXT函数实战教程(附常见错误排查)

Excel多列日期合并实战&#xff1a;TEXTJOIN与TEXT函数的高效组合 当你从不同部门收集考勤数据时&#xff0c;是否经常遇到这样的场景&#xff1a;A列是HR系统导出的"YYYY-MM-DD"格式&#xff0c;B列来自部门表格的"MM/DD/YY"记录&#xff0c;而C列则是手动…...

SDN进阶实战:用OpenFlow和P4手把手搭建你的第一个IBN实验环境

SDN进阶实战&#xff1a;用OpenFlow和P4手把手搭建你的第一个IBN实验环境 在当今快速演进的网络技术领域&#xff0c;基于意图的网络&#xff08;Intent-Based Networking, IBN&#xff09;正逐渐从理论概念走向实际应用。不同于传统网络管理需要逐条配置设备&#xff0c;IBN允…...

UC网盘实现下载文件不限速_UC网盘在线解析

UC网盘限速怎么破解这个很简单&#xff0c;这个方法我还是在我朋友那里找到的。下载速度也是非常可以的。我让大家看一下。点我打开方法 这个就是我测试的速度。速度基本能跑到10M左右。宽带问题。下面开始今天的教学环节 打开上面图片中的地址&#xff0c;你会看到一个获取文件…...

告别付费云文档!用群晖自建协作平台:Synology Office内网穿透实战

私有云文档协作新选择&#xff1a;群晖Synology Office全场景应用指南 在数字化办公浪潮中&#xff0c;文档协作工具已成为团队生产力的核心支柱。当主流云文档服务面临订阅费用高昂、数据隐私顾虑和功能限制等问题时&#xff0c;越来越多的技术决策者开始将目光投向自建解决方…...

4.2.1 存储->POSIX 文件系统标准(IEEE,ISO IEC 采纳):LVM(Logical Volume Manager)逻辑卷管理器

LVM 全称 逻辑卷管理器&#xff0c;是 Linux 系统中用于动态管理存储设备的工具&#xff0c;它通过抽象物理存储设备&#xff08;如硬盘、分区&#xff09;&#xff0c;将其整合为逻辑卷&#xff0c;实现存储的灵活分配、扩容、缩容等操作&#xff0c;解决了传统分区 “容量固定…...

基于Coze开发智能客服的微信接入实战:从配置到避坑指南

最近在做一个智能客服项目&#xff0c;需要把AI能力接入微信公众号。一开始觉得这事儿应该挺简单&#xff0c;不就是个消息转发嘛&#xff0c;但真上手才发现微信生态的“坑”还真不少。从复杂的OAuth2.0认证流程&#xff0c;到XML格式的消息解析&#xff0c;再到多轮对话的状态…...

C++模板元编程实战:用编译期计算优化你的代码性能

# C模板元编程实战&#xff1a;用编译期计算优化你的代码性能 ## 引言 C是一门兼具高性能与抽象能力的语言&#xff0c;而模板元编程&#xff08;Template Metaprogramming&#xff09;则是其最为独特的特性之一。它允许我们在编译期执行计算、进行类型推导和代码生成&#x…...

Z-Image-Turbo-rinaiqiao-huiyewunv 控制生成对比:使用不同采样器与步数的效果差异

Z-Image-Turbo-rinaiqiao-huiyewunv 控制生成对比&#xff1a;使用不同采样器与步数的效果差异 最近在玩一个挺有意思的AI图像生成模型&#xff0c;叫Z-Image-Turbo-rinaiqiao-huiyewunv。名字有点长&#xff0c;但效果确实让人眼前一亮。不过&#xff0c;我发现一个挺普遍的问…...

MQTT压力测试避坑指南:JMeter插件配置与性能优化技巧

MQTT压力测试避坑指南&#xff1a;JMeter插件配置与性能优化技巧 在物联网设备爆发式增长的今天&#xff0c;MQTT协议因其轻量级和高效性成为设备通信的首选方案。但当你需要验证系统能否承受数千甚至数万台设备同时连接时&#xff0c;一套可靠的压测方案就变得至关重要。本文将…...

2023最新版GEM5入门实战:从Docker编译到ARM全系统模拟(避坑指南)

2023最新版GEM5入门实战&#xff1a;从Docker编译到ARM全系统模拟&#xff08;避坑指南&#xff09; 1. 为什么选择GEM5进行体系结构研究 在计算机体系结构研究领域&#xff0c;GEM5已经成为事实上的标准模拟器。这个开源项目由多个顶尖学术机构共同维护&#xff0c;支持多种指…...