瞎聊机器学习——从词袋模型到word2vec

简介: 瞎聊机器学习——从词袋模型到word2vec

在进行自然语言处理以及文本分析问题的时候,文本向量化是我们用来表示文本的一种重要方式,其中词袋(Bag of Words,BOW)和词向量(Word Embedding)是两种最常用的类型,本文我们一同来探讨一下这两种类型。


词袋模型

词袋模型是一种简单常用的模型,在该模型中,我们可以把文本看做是一系列词的集合,我们用袋子来把他们装起来就叫做词袋,这么说可能有些抽象,用一个例子来表示一下:


有一段文本:"it is a beautiful day today"


进行分词处理:it/is/a/beautiful/day/today


得到词袋:("it","is","a","beautiful","day","today")


但是我们得到的词袋要交给计算机处理,计算机并不能很好的识别英文,只能识别数字,那么我们给每一个词添加一个索引去解决这个问题:


词袋索:(0,1,2,3,4,5)


对于需要考虑词频的词袋模型我们可以定义成用一个数字来表示索引一个数字来表示词频的形式:[(0,2),(1,2),(2,2)......]


上例是词袋模型的一种表示方法, 下面举另外一个例子来表示一下:


给出两个文本:


    1:Bob likes to play basketball, Jim likes too.

    2:Bob also likes to play football games.


我们可以构造出一个词典:


{1:”Bob”, 2. “like”, 3. “to”, 4. “play”, 5. “basketball”, 6. “also”, 7. “football”, 8. “games”, 9. “Jim”, 10. “too”}。


上面的词典中包含了10个单词,对于每个单词都有一个唯一的索引,那么对于两个文本我们有如下的词袋表示方法:


    1:[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]

    2:[1, 1, 1, 1 ,0, 1, 1, 1, 0, 0]


词袋模型适用的数据类型:离散,高维,稀疏


词袋模型存在的问题:

1、维度灾难,如果一个例子词典中包含10000个单词,那么每个文本需要用10000维的向量表示。

2、无法保留词序信息

3、存在语义鸿沟的问题


one-hot(独热码)

one-hot是表示一项属性的特征向量,向量中只有一个特征是不为0的,其他的特征都为0(简单的来说就是将一个bit的位置填1,其他位置都填0),比如机器学习中对于离散型的分类数据,需要对其进行数字化,此时便可以使用独热码来表示,举例表示一下:


对于一个特征是离散值的情况:


性别:{男,女,其他}


可以看到上面的性别特征有三个不同的分类值,也就意味着我们需要三个bit的值来表示这些类别,此时可以用独热码表示为:


男:{100},女:{010},其他:{001}


对于多个特征时:


性别:{男,女,其他}


年级:{一年级,二年级,三年级,四年级}


那么对于一年级的男生编码既可以为:{1001000}(前面的100表示男生,后面的1000表示一年级)


以上就是独热码的主要编码原理,下面我们用sklearn来实现一下:


sklearn中的preprocessing.OneHotEncoder()提供了直接进行one-hot编码的方法。

from sklearn import preprocessing
ont_hot = preprocessing.OneHotEncoder()
data = [[0, 1, 2], [0, 0, 1], [1, 0, 0], [1, 1, 3]]
ont_hot.fit(data)
print(ont_hot.transform([[1, 0, 3]]).toarray())

word2vec

word2vec技术是一种为了利用神经网络从大量无标注的文本中提取有用信息而产生的向量。


上文中我们提到了one-hot编码,但是独热码中只有一个bit的数值为1其余都为0,对于需要编码很多类别的情况容易产生维度灾难,那么我们能不能把维度变低呢,下面我们就来说一下word2vec。


word2vec本质上是一种简单的神经网络,它分为两种训练模型(CBOW和Skip-gram):


word2vec模型的主要构成如下:


该模型的输入是one-hot编码,Hidden Layer是线性单元(没有激活函数),Output的使用的是softmax回归(输出输入词的邻近词的概率分布),维度和input相同,模型训练后输入层和隐藏层之间权重即为我们要获取的词向量。


CBOW模型是根据中心词W(t)周围的词来预测中心词。

Skip-gram模型是根据中心词W(t)来预测周围的词。

CBOW模型:


Skip-gram模型:

以上是我们对三种词向量模型的初步了解,后续会继续进行深入讨论。

相关文章
|
人工智能 自然语言处理 IDE
模型微调不再被代码难住!PAI和Qwen3-Coder加速AI开发新体验
通义千问 AI 编程大模型 Qwen3-Coder 正式开源,阿里云人工智能平台 PAI 支持云上一键部署 Qwen3-Coder 模型,并可在交互式建模环境中使用 Qwen3-Coder 模型。
1789 109
|
人工智能 自然语言处理 运维
【新模型速递】PAI-Model Gallery云上一键部署Kimi K2模型
月之暗面发布开源模型Kimi K2,采用MoE架构,参数达1T,激活参数32B,具备强代码能力及Agent任务处理优势。在编程、工具调用、数学推理测试中表现优异。阿里云PAI-Model Gallery已支持云端部署,提供企业级方案。
807 0
【新模型速递】PAI-Model Gallery云上一键部署Kimi K2模型
|
人工智能 JSON 算法
【解决方案】DistilQwen2.5-DS3-0324蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践
DistilQwen 系列是阿里云人工智能平台 PAI 推出的蒸馏语言模型系列,包括 DistilQwen2、DistilQwen2.5、DistilQwen2.5-R1 等。本文详细介绍DistilQwen2.5-DS3-0324蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践。
|
人工智能 运维 API
PAI-Model Gallery云上一键部署阶跃星辰新模型Step1X-Edit
4月27日,阶跃星辰正式发布并开源图像编辑大模型 Step1X-Edit,性能达到开源 SOTA。Step1X-Edit模型总参数量为19B,实现 MLLM 与 DiT 的深度融合,在编辑精度与图像保真度上实现大幅提升,具备语义精准解析、身份一致性保持、高精度区域级控制三项关键能力;支持文字替换、风格迁移等11 类高频图像编辑任务类型。在最新发布的图像编辑基准 GEdit-Bench 中,Step1X-Edit 在语义一致性、图像质量与综合得分三项指标上全面领先现有开源模型,比肩 GPT-4o 与 Gemin。PAI-ModelGallery 支持Step1X-Edit一键部署方案。
|
机器学习/深度学习 算法 安全
差分隐私机器学习:通过添加噪声让模型更安全,也更智能
本文探讨在敏感数据上应用差分隐私(DP)进行机器学习的挑战与实践。通过模拟DP-SGD算法,在模型训练中注入噪声以保护个人隐私。实验表明,该方法在保持71%准确率和0.79 AUC的同时,具备良好泛化能力,但也带来少数类预测精度下降的问题。研究强调差分隐私应作为模型设计的核心考量,而非事后补救,并提出在参数调优、扰动策略选择和隐私预算管理等方面的优化路径。
891 3
差分隐私机器学习:通过添加噪声让模型更安全,也更智能
|
机器学习/深度学习 人工智能 算法
Post-Training on PAI (4):模型微调SFT、DPO、GRPO
阿里云人工智能平台 PAI 提供了完整的模型微调产品能力,支持 监督微调(SFT)、偏好对齐(DPO)、强化学习微调(GRPO) 等业界常用模型微调训练方式。根据客户需求及代码能力层级,分别提供了 PAI-Model Gallery 一键微调、PAI-DSW Notebook 编程微调、PAI-DLC 容器化任务微调的全套产品功能。
|
人工智能 自然语言处理 运维
【新模型速递】PAI-Model Gallery云上一键部署gpt-oss系列模型
阿里云 PAI-Model Gallery 已同步接入 gpt-oss 系列模型,提供企业级部署方案。
|
存储 人工智能 运维
企业级MLOps落地:基于PAI-Studio构建自动化模型迭代流水线
本文深入解析MLOps落地的核心挑战与解决方案,涵盖技术断层分析、PAI-Studio平台选型、自动化流水线设计及实战构建,全面提升模型迭代效率与稳定性。
|
存储 机器学习/深度学习 自然语言处理
避坑指南:PAI-DLC分布式训练BERT模型的3大性能优化策略
本文基于电商搜索场景下的BERT-Large模型训练优化实践,针对数据供给、通信效率与计算资源利用率三大瓶颈,提出异步IO流水线、梯度压缩+拓扑感知、算子融合+混合精度等策略。实测在128卡V100集群上训练速度提升3.2倍,GPU利用率提升至89.3%,训练成本降低70%。适用于大规模分布式深度学习任务的性能调优。

热门文章

最新文章