机器学习-词向量转换1
前言在电商、社交媒体等场景中每天都会产生海量的用户评论文本。如何让计算机理解一段中文文本如何将非结构化的文字转化为算法可以处理的数值这是所有文本分类任务的第一步也是最关键的一步。本文是系列的上篇聚焦于如何将原始中文文本转化为有效的数值特征涵盖 TF-IDF 关键词提取、文本预处理、词向量转换三大核心模块。一、TF-IDF用数学量化词语的重要性在文本分类任务中我们需要将非结构化文本转化为数值特征。而关键词是捕捉文本主题的最直接线索。TF-IDF衡量的正是一个词对一篇文章的代表性或区分度。1.1 词频 TFTerm Frequency定义某一个给定的词语在该文件中出现的次数通常需要归一化以消除文档长度差异。TF 词在文档中出现的次数 / 文档的总词数案例理解在中国的蜜蜂养殖这篇文章中中国、蜜蜂、养殖三个词各出现了 20 次文章总词数为 1000则它们的 TF 都是 0.02。局限仅靠 TF 无法区分关键词。高频词如的、是在所有文档中都很高因此需要引入 IDF 来过滤通用词。1.2 逆文档频率 IDFInverse Document Frequency定义衡量一个词在整个语料库中的稀有程度。包含该词的文档越少IDF 值越大说明该词具有很好的类别区分能力。IDF log(语料库中文档总数 / (包含词的文档数 1))分母加 1 是为了避免除零当词在语料库中从未出现时。这揭示了一个重要的底层逻辑IDF 通过稀有度放大词的区分能力。案例理解假设语料库有 1000 篇文档蜜蜂只出现在 3 篇中则 IDF ≈ log(1000/3) ≈ 5.8中国出现在 500 篇中则 IDF ≈ log(1000/500) ≈ 0.7。可见蜜蜂的 IDF 远大于中国说明蜜蜂更能作为区分文档主题的关键词。IDF 的单调性包含词的文档数量越少IDF 越大反之越小。如果某个词在所有文档中都出现))))如停用词的则 IDF 接近 0。1.3 TF-IDF 计算公式TF-IDF TF × IDF一个词在文档中出现的频率越高TF 大且在整个语料库中越稀有IDF 大则 TF-IDF 值越大越可能是该文档的关键词。案例计算同上例TF 均为 0.02。假设 IDF 计算后中国 ≈ 0.3蜜蜂 ≈ 2.4养殖 ≈ 1.0。则 TF-IDF(中国) 0.006TF-IDF(蜜蜂) 0.048TF-IDF(养殖) 0.02。蜜蜂的 TF-IDF 值最高成为最核心的关键词。1.4 TF-IDF 的局限性TF-IDF 并不是完美的特征提取方法局限性说明无法捕捉语义相似性汽车和车辆会被视为独立特征忽略词序和上下文只考虑词袋模型无法处理语序颠倒的情况对长文档 有偏虽然 TF 做了归一化但长文档可能包含更多不同词汇尽管有这些局限TF-IDF 因其简单高效仍是传统文本分类中最常见的特征提取方法之一。核心辨析TF-IDF vs. 词频TF 仅表示单词在单))))篇文档中的频率而 TF-IDF 结合了全局稀有度因此能更好地消除常见词干扰。IDF 中的1分母加 1 是平滑项不仅防止除零还能在词从未出现时使 IDF ≈ log(N/1) ≈ 较大值。对数底数通常使用自然对数或常用对数不同底数只改变数值大小不影响词之间的相对排序。二、数据预处理将原始文本标准化在掌握了 TF-IDF 如何量化词语重要性之后我们发现 TF-IDF 的演示示例依赖于一个特定格式的语料库每行一篇文章词与词之间用空格分隔。然而现实中的原始文本如书籍、新闻、评论通常包含换行、标点、语气词等大量噪声无法直接喂给特征提取工具。预处理的核心任务就是将任意原始文本清洗、分词并整理成标准语料库格式。2.1 中文分词——为什么需要分词中文文本没有天然的空格分隔单词需要专门算法将句子切割成有语义的词语单元。核心概念分词Word Segmentation原始句子如垃圾苏宁赶紧倒闭是连续字符序列无法直接作为特征。分词后得到列表[垃圾, 苏宁, 赶紧, 倒闭]每个词才有独立含义。工具jieba结巴中文分词库支持三种模式模式特点适用场景精确模式最常用精准切分文本分析、特征提取全模式所有可能的词搜索引擎索引构建搜索引擎模式全模式长词再切搜索引擎查询分析Python# 精确模式默认 words jieba.lcut(我来到北京清华大学) # 输出[我, 来到, 北京, 清华大学]易混淆jieba.cut返回生成器jieba.lcut直接返回列表。在后续需要多次访问分词结果时建议使用lcut一次性获取列表。2.2 停用词过滤——剔除噪声词分词后的结果中包含大量高频但无实际意义的词如的、了、是、在等。这些))))词对文本分类没有贡献反而会增加噪声和维度。核心概念停用词Stop Words指那些在文本中频繁出现但对情感分析无帮助的词如语气词啊、呀、吧、助词的、))))了、标点符号等。Python# 过滤停用词 filtered_words [w for w in words if w not in stopwords]对比示例过滤前[垃圾, 苏宁, 赶紧, , 倒闭]过滤后[垃圾, 苏宁, 赶紧, 倒闭]关键提示停用词表需要根据任务场景调整。例如在情感分析中好、坏等词不应被过滤。将停用词表转换为集合set可以大幅提升查找速度。约 30% 的文本是停用词过滤后可降低约 50% 的特征维度。2.3 统一格式输出——标准语料库格式经过分词和停用词过滤后每篇文章得到一个词语列表。最后一步是将这些列表转换为一行一篇文章、词与词之间用空格分隔的标准格式即语料库格式。Python# 将过滤后的词列表合并为一行文本 corpus_line .join(filtered_words) # 输出来到 北京 清华大学⚠️常见错误直接使用str(words)将列表转为字符串结果会包含方括号和引号如[来到, 北京, 清华大学]。必须使用 .join(words)。三、词向量转换将文本转化为数值矩阵在完成了关键词提取和文本预处理后我们面临一个根本问题原始文本句子如今天下雨我不去打球无法直接输入任何机器学习模型。所有模型本质上是数学算式只能处理数值。本章的任务是将变长的、无序的文本转化为固定维度的数值矩阵。3.1 CountVectorizer——词库构建与词频统计CountVectorizer是 scikit-learn 中的文本特征提取工具其核心方法fit_transform承担了两步工作步骤操作说明① 拟合fit扫描语料库统计不重复词构建全局词汇表② 转换transform统计每篇文章中每个词的出现次数输出固定维度的数值矩阵Pythonfrom sklearn.feature_extraction.text import CountVectorizer vectorizer CountVectorizer() X vectorizer.fit_transform(corpus) # corpus 是预处理后的文章列表 print(vectorizer.get_feature_names_out()) # 获取词汇表 print(X.toarray()) # 转换为可读的稠密矩阵为什么需要 fit 步骤词汇表必须基于整个语料库建立。例如有两篇文章dog cat dog和cat cat cat。如果只看第一篇文章词汇是 {dog, cat}但加上第二篇后词汇表仍然是 {dog, cat}。如果还有一篇文章bird那么词汇表就变成 {dog, cat, bird}。fit保证了词汇表覆盖全局。3.2 稀疏矩阵——为什么要用 toarrayfit_transform返回的是稀疏矩阵scipy.sparse.csr_matrix只存储非零元素的位置和值极大节省内存。存储方式特点适用场景稀疏矩阵只存储非零元素的位置和值大规模文本数据内存高效稠密矩阵toarray存储所有元素包括零调试和理解小规模数据 例如一个 10000 篇文章、20000 个词的矩阵每篇文章平均只有 20 个非零词稀疏矩阵的存储效率极高。sklearn 模型可以直接使用稀疏矩阵训练。3.3 核心参数解析max_features控制保留的最大特征数量。设置过大容易过拟合设置过小可能丢失重要信息。Pythonvectorizer CountVectorizer(max_features4000)ngram_range决定提取词的连续组合范围。参数值特征示例语义捕捉能力(1,1)[手机, 不错]仅单个词(1,2)[手机, 不错, 手机 不错]单个词相邻词组⚠️ngram_range的值越大特征数量会指数级增长。通常设置为(1,2)即可。3.4 词汇表与矩阵的对应关系get_feature_names_out()返回词汇表列表其顺序与矩阵的列索引一一对应。示例词汇表[bert, cat, dog, it]矩阵列索引第 0 列 → bert第 1 列 → cat第 2 列 → dog第 3 列 → it第一篇文章dog dog cat it的行向量[1, 1, 1, 1]第二篇文章cat cat的行向量[0, 2, 0, 0]核心理解无论原文长短每一篇文章都被映射为相同长度))))的向量从而可以统一输入给分类模型。本节小结知识点核心理解TF-IDFTF × IDF综合反映词对文档的代表性IDF通过稀有度放大词的区分能力中文分词使用jieba的精确模式将连续文本切分为词语列表停用词过滤去除高频但无意义的词如“的”、“了”降低约50%的特征维度CountVectorizer先fit构建全局词汇表再transform输出固定维度的词频矩阵稀疏矩阵只存储非零元素极大节省内存max_features控制词汇表大小防止维度爆炸ngram_range控制是否考虑连续词组捕捉上下文语义

相关新闻

机器学习-词向量转换实战

机器学习-词向量转换实战

从零构建中文情感分析系统:文本预处理、词向量与分类实战本文将完整演示一个中文情感分析系统的构建流程,涵盖数据预处理、中文分词、停用词过滤、词向量转换、模型训练与评估等核心环节。二、数据预处理:让计算机“看懂”中文2.1 原始数据读…

2026/10/17 6:02:25 阅读更多 →
差分法深度解析:从原理到实战,掌握区间修改的O(1)优化技巧

差分法深度解析:从原理到实战,掌握区间修改的O(1)优化技巧

1. 差分法:从概念到实战的深度解析在数据处理、数值计算乃至算法优化的世界里,我们常常会遇到这样的场景:面对一个庞大的序列,需要快速回答“某个区间内所有元素增加了多少”或者“经过一系列区间修改后,每个位置最终的…

2026/10/18 6:36:36 阅读更多 →
3分钟免安装微信解决方案:企业员工必备的浏览器插件终极指南

3分钟免安装微信解决方案:企业员工必备的浏览器插件终极指南

3分钟免安装微信解决方案:企业员工必备的浏览器插件终极指南 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 还在为无法在公司电脑上安装微…

2026/10/18 6:33:21 阅读更多 →

最新新闻

自助KTV系统开发:智能门禁与线上预约的完整闭环方案

自助KTV系统开发:智能门禁与线上预约的完整闭环方案

近年来,线下娱乐行业对"无人化、自助化"的诉求越来越强烈,传统KTV面临的人力成本高、闲时资源浪费、用户体验割裂等痛点,催生了一整条自助娱乐系统开发的赛道。这个"自助KTV系统开发:智能门禁与线上预约"项目…

2026/10/19 5:56:35 阅读更多 →
ArtCraft:创意生产的系统化方法论与工程化实践

ArtCraft:创意生产的系统化方法论与工程化实践

1. 项目概述:ArtCraft 不是“艺术手作”的简单拼贴,而是一套可落地的创意生产方法论ArtCraft 这个词乍看像英文单词 art(艺术)和 craft(工艺/手作)的合成词,很容易被理解成“艺术手作”“创意DI…

2026/10/19 5:56:35 阅读更多 →
artcraft:连接算法与手工的参数化创作方法论

artcraft:连接算法与手工的参数化创作方法论

1. 项目概述:从“artcraft”这个词开始,我们到底在做什么?“artcraft”这个词乍一看像拼写错误,但其实它是个合成词——art(艺术) craft(工艺),合起来直译就是“艺术工艺…

2026/10/19 5:56:35 阅读更多 →
电梯电瓶车AI报警系统:毕设可落地的YOLO端到端方案

电梯电瓶车AI报警系统:毕设可落地的YOLO端到端方案

简介:本资源是一套基于YOLOv8的电梯场景电瓶车闯入智能检测与报警系统,面向计算机、人工智能、自动化等专业在校学生及初学者,解决公共场所安全监管中的典型目标识别与实时告警问题,特别适合作为毕业设计、课程设计或项目原型快速…

2026/10/19 5:56:35 阅读更多 →
激光打标机中振镜与场镜的区别:从原理到故障排查

激光打标机中振镜与场镜的区别:从原理到故障排查

前两天去客户现场调一台紫外打标机,对方工程师指着打标头问我:“这个场镜的焦距是多少?”我顺着他指的方向看过去,他指的其实是振镜的X轴镜片。这个场景我遇到过太多次了,振镜和场镜,一个管“激光往哪打”&…

2026/10/19 5:56:35 阅读更多 →
STM32通过IIC驱动MPU6050六轴传感器:从时序到姿态解算实战指南

STM32通过IIC驱动MPU6050六轴传感器:从时序到姿态解算实战指南

做嵌入式这几年,被问到最多的传感器大概就是 MPU6050。这颗六轴芯片配合 STM32 的 IIC 接口,几乎是所有姿态相关项目的标准开局:两轮自平衡、云台增稳、手势遥控、跌倒检测……不管你是刚入门的新手,还是在做毕业设计的同学&#…

2026/10/19 5:55:34 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →