Python文本处理(3)——文本表示之 one-hot 词向量(1)——纯小白都能懂!

【机器学习】One-hot向量是什么?如何使用?请详细解释 One-Hot 向量是一种表示离散类别的向量表示方法,在许多机器学习和深度学习任务中被广泛使用,特别是在分类任务中。它的基本思想是将每个类别表示为一个向量,向量的长度等于类别总数,其中只有一个元素为 1,其余元素为 0。这个 1 所在的位置对应于该类别的索引,表示该类别的“热”状态,而其他位置则为 0,表示“冷”状态。One-Hot 向量是一种表示离散类别的编码方式,将每个类别表示为一个向量,其中只有一个元素为 1,其他元素为 0。在分类任务。 阅读详情


python 文本处理小结-供自己复习使用(对应“1127_文本处理之 one-hot 编码”)

1. 问题及概念

1.1 文本表示

文本表示最基础的怕是最基础的 one-hot 编码,基础的东西有利于我们从源头和本质上进行思考。比如,现在给一堆文本数据给你,你会如何思考将文本信息传递出去并让计算机识别?

text = ['Today is Friday, it is Sunny.',
       'And yesterday is Thursday, it was cloudy.',
       'Tomorrow is Saturday, it will be Sunny too.']

——单词作为文本的最小单位,我们自然而然的会想到从单词入手。

的确,自然语言就是一套用来表达含义的系统,在这套系统中,词,就是表义的基本单元。
词向量 被用来表示词的向量或表征,也可被认为是词的特征向量。

在大的方向上,有两种思路:One-hot 词向量的表示方法 和 word2vec 词向量的表示方法,这先总结前者。顺带提一下,这种把词映射为实数域向量的技术叫做词嵌入(word embedding)。

1.2 one-hot 表达

所谓 one-hot 词向量,就是用一个很长的向量来表示一个词,向量的长度为词典的大小N,向量的分量只有一个1,其他全为0,1的位置对应该词在词典中的索引。直观理解如下:

1.2.1 直观理解:

# 直观理解:
['Toeday', 'is', 'Friday'] # 就可以这样表示:

today = [1, 0, 0]
is_ = [0, 1, 0]
Friday = [0, 0 ,1] 

## 需注意一点,平时我们句子中的单词很可能是可能重复的!

1.2.2 本质理解:

这里可以将有信息价值的单词当做这个文本的“特征”,
那么如果文本中有k个不重复的单词,我们可以初略地认为该文本有 k 个”特征“;
特征组成了文本的“语料库”;
所以我们编码的目的:就是为这些不重复的单词进行编码。

2. 代码

接下来,以一个具体的、从头到尾的完整例子来仔细看看 如何使用one-hot 编码对文本进行编码。(纯属个人的思路)

记住上面所说的一点,既然词向量是特征,那么它必定不能重复。

2.1 代码思路

  • 文本
text = ['Today is Friday it is Sunny',
       'And yesterday is Thursday it was cloudy']
  • 语料库

先找出所有文档本中不重复的单词(总数记为N),放在一起, 并以出现的先后顺序(也可以按照首字母排序)作为语料库,如下图所示

# 语料库长这样:
corpus = ['Today', 'is', 'Friday', 'it', 'Sunny', 'And', 'Yesterday', 'Thursday', 'was', 'cloudy']
N = len(corpus)
print('语料库的大小为 {}'.format(N))
  • one-hot 向量编码

每单词词和从0到N-1的连续整数一一对应(每个词度都会有一个索引 i );
除了第i位置设置为1,其他为均设置为0(用1表示一个词出现在文本中,用0表示一个词没有出现)

即,我们要达到的效果如下:


# 应该长成这样,共 10 个 one-hot 向量:

Today = [1, 0, 0, 0, 0, 0, 0, 0, 0]
is_ = [0, 1, 0, 0, 1, 0, 0, 0, 0]
Friday = [0, 0, 1, 0, 0, 0, 0, 0, 0]
#... ...

2. 2 代码实现

  • 代码实现:
    这里使用 Pandas 里的 get_dummies()函数
import numpy as np
import pandas as pd 

text = ['Today is Friday it is Sunny',
       'Yesterday is Thursday it was cloudy']
# 先分词处理
text = [s.split() for s in text]
text = pd.Series(text)
print(text)
0                 [Today, is, Friday, it
深度学习---one-hot向量 one-hot向量 为了将词表示为向量输入到神经网络,一个简单的办法是使用one-hot向量。假设词典中不同字符的数量为N,每个字符已经同一个从0到N-1的连续整数值索引一一对应。如果一个字符的索引是整数i,那么就创建一个全0的长为N的向量,并将其位置为i的元素设成1.该向量就是对原字符的one-hot向量。 label = torch.tensor([2,3,4,1]).view(-1,1) o... 阅读详情

相关推荐

(连载)词向量的理解——one-hot向量

文章均从个人微信公众号“AI牛逼顿”转载,文末扫码,欢迎关注! 自然语言处理目前最火的大杀器要属Google给出的BERT模型了。在慢慢琢磨了原理并使用之后,体会到各种模型的发展都是围绕着解决一个基本问题:词语或者句子的表达。只有把这个基本问题的下限不断提高,才能提升各种自然语言处理任务的上限。 我发现捋顺词向量的演变,能帮助我更好的理解一些模型的细节。这里只是记录一些自己的通俗理解,涉及到...

weixin_43917778的博客 1756

常见的文本特征(句向量)提取方法有哪些?什么是One-Hot、TF-IDF?word2vec如何训练?【Python】

文本特征提取的方法目前已经有很多种,传统的提取方法有平权统计、TF-IDF等,神经网络的方法有word2vec,接下来我会具体对这三种方法进行介绍,以及如何用代码实现。 平权统计 平权统计非常容易理解,参见下述代码。 # 特征向量化——稀疏表示 from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer() corpus = ['This is the first document.',

w0714的博客 3万+

词向量:从 One-Hot 到 BERT Embedding,NLP 文本表示的核心技术

当通用词向量(如 Google 预训练的 Word2Vec)无法适配特定领域(如医疗、法律)时,需要基于领域语料库训练自定义词向量。以下是使用 Python 的gensim从 One-Hot 编码的 “离散稀疏” 到 Word2Vec/GloVe 的 “静态稠密”,再到 BERT 的 “动态上下文感知”,词向量技术的演进本质是 “让机器更精准地理解人类语言语义” 的过程。语义表示的基础:词向量是所有 NLP 任务的 “输入基石”,无论是文本分类、机器翻译还是情感分析,高质量的词向量都能显著提升模型效果;

fykam的博客 1411

(深度学习记录)第N1周:one-hot编码案例

one-hot编码的基本思想是将每个类别映射到一个向量,其中只有一个元素的值为1,其余元素的值为0。这种编码方式不仅能够避免不必要的关系假设,还能够提供清晰的输入表示,有助于模型的学习和泛化。在文本表征表示上有些缺点非常突出,首先one-hot 编码是一个词袋模型,是不考虑词和词之间的顺序问题,它是假设词和词之间是相互独立的,但是在大部分情况下词和词之间是相互影响的。one-hot编码得到的特征是离散稀疏的,每个单词的one-hot编码维度是整个词汇表的大小,维度非常巨大,编码稀疏,会使得计算代价变大。

weixin_55952636的博客 901

【pytorch实战1】用skip-gram训练词向量

原理:首先将文本中的词汇用One-Hot Encoding表示,根据需要设置Word Vector维度,输入层变量个数及one-hot vector的维度(代码中为30000),隐藏层单元个数即为Word Vector维度,输出与输入维度相同,也是One-Hot Encoding Skip-gram原理如图 我们最终想要的是词库中单词的词向量表示,所以使用一层神经网络来实现Skip-gram算法,最后得到Word Embedding矩阵即可 USE_CUDA = torch.cuda.is_availa

mapsnirc的博客 1441

NLP文本向量化:从One-Hot到Embedding的实战指南

文本向量化是自然语言处理(NLP)的基础技术,它将文字转换为计算机可处理的数值向量。核心原理是通过数学表示捕捉词语间的语义关系,常用的方法包括One-Hot编码、Word2Vec和Embedding层。Word2Vec通过上下文预测生成低维稠密向量,能有效表达语义关联;而Embedding层作为深度学习标准组件,支持端到端训练。这些技术在搜索引擎、推荐系统和智能客服等场景广泛应用,其中FastText通过子词分解解决了未登录词问题。实际工程中需要权衡向量维度、训练效率和应用场景,预训练词向量能显著提升小数据

weixin_30644369的博客 366

2026年了,你还分不清One-Hot、TF-IDF、Word2Vec和Embedding?一文搞懂AI“读心术”的底层逻辑

在深度学习与NLP的领域中,计算机无法直接理解文字,它只看懂数字。如何将文本转化为向量,是AI理解语言的第一步。本文将带你深入剖析四种主流的文本向量化技术:One-Hot编码(基础中的基础)、TF-IDF(统计学的经典)、Word2Vec(语义相似度的先驱)以及Word Embedding(深度学习的标配)。我们将结合 TensorFlow/Keras 与 PyTorch 的实战代码,手把手教你如何实现这些算法,并理解它们背后的数学逻辑。无论你是NLP新手还是想巩固基础,这篇文章都将为你提供巨大的价值。

专注AI与大模型技术,深耕NLP、RAG、Agent开发,分享Python机器学习与深度学习实战经验,助力技术成长。 930

1.1 文本表示——离散形式表示

欢迎感兴趣的伙伴点个赞,关注不迷路!你的支持是我前进的动力! 感谢你的阅读,专栏文章持续更新! 🥝🥝文本表示 🥝🥝(一)one-hot 🥝🥝(二)词袋法(Bag of word,简称BOW) 🥝🥝(三)词频–逆文档频率(TF-IDF): 🥝🥝(四)n-gram 🥝🥝(五)神经概率语言模型

炫云云 1489

BERTopic安装指南:hdbscan依赖问题全解析(附解决方案)

本文详细解析了安装BERTopic时常见的hdbscan依赖报错问题,深入剖析了C++编译环境缺失、Python版本兼容性以及包管理渠道混用三大核心原因。针对Windows、macOS和Linux不同系统,提供了创建虚拟环境、使用conda安装预编译包、安装C++编译工具等具体解决方案,帮助用户顺利安装BERTopic并开始文本主题建模实践。

weixin_29061041的博客 213

zabbix 监控EMC存储

经过搜索,找到了脚本地址,该项目应该是模板原作者创建的,该项目也有zabbix模板,和上面的应该是相同的,我用的是上面的模板。./unity_get_state.py --api_ip='X.X.X.X' --api_port='443' --api_user='zabbix' --api_password='PASSWORD' --storage_name="zabbix web前端配置的主机名" --discovery。修改权限,给zabbix用户执行权限,模板调用时以zabbix用户执行。

wangyfde的专栏 3755

从Power到HO:一文搞懂主流脑图谱在DPABI里怎么选,让你的rs-fMRI分析更精准

本文深入解析了rs-fMRI分析中主流脑图谱(如Power、HO、AAL等)在DPABI中的科学选择策略,帮助研究者根据不同的神经科学研究目标优化分析流程。从解剖学图谱到功能连接图谱的特性对比,到DPABI实操中的多图谱分析工作流,提供了全面的方法论指导,助力提升静息态功能磁共振成像(rs-fMRI)研究的精准度和可重复性。

weixin_30654583的博客 403

VBA学习笔记6:将多个工作表中满足条件的数据汇总到同一个工作表

VBA学习笔记6:将多个工作表中满足条件的数据汇总到同一个工作表

weixin_45355881的博客 4708

第01章 Hermes Agent 是什么

如果读者所在的开发团队已经引入了 Cursor、Claude Code 这类 AI IDE,可能会有一个困惑:写代码已经有 AI 帮忙了,还需要 Hermes Agent 做什么?这一章将给出答案。Hermes Agent 不是另一个写代码的 AI,而是一个常驻在团队里的"AI 协作成员",专门负责写代码之外的协作环节——讨论需求、审查代码、查日志、监控告警、生成报告。学完本章,读者将清楚 Hermes 的定位以及它在团队里的角色。

亢少军的博客 75

【回眸】Tessy集成测试软件使用指南(一)新手使用篇

这个专栏的文章前4篇都在记录如何使用Tessy进行单元测试,集成测试需要有一定单元测试基础,且做集成测试之前,需要做好单元测试,否则将会大幅增加软件单元代码纠错的代价。集成测试所花费的时间通常远远超过单元测试。如果直接从单元测试到系统测试,结果往往是不理想的。集成测试可以检测由于单元相互交互而导致的错误,通常由一组专业的测试人员执行。

啤酒鸭的物联网开发记录博客 5280

(10)三相三绕组变压器的建模仿真

建立了三相三绕组变压器组的Simulink仿真模型,通过实例进行了仿真计算。

weixin_45670943的博客 1143

软件产品国际化:前后端及App多语言版本解决方案(超详细实现过程)

多语言版本解决方案是应对全球化趋势的关键策略,它通过构建灵活且可扩展的架构,支持软件产品在不同语言和文化环境下的顺畅运行与展示。此方案涵盖了前端多语言界面实现、后端多语言数据处理及大数据环境下的多语言支持等多个层面,确保公司能够高效地推出适应全球用户多样化需求的软件产品。在前端多语言界面实现方面,解决方案采用了国际化与本地化的结合方法。国际化过程确保软件的功能和代码设计能够处理多种语言和文化习惯,而本地化则针对特定地区进行界面和内容的调整。

大模型大数据攻城狮的专栏 2753

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: 初识 gensim 之 word2vec
下一篇: Python数据分析之Pandas(3)——Pandas小结
Robin_Pi
博客等级 码龄9年 2万+粉丝 632原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值