瞎聊机器学习——从词袋模型到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模型:

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

相关文章
|
1月前
|
机器学习/深度学习 存储 设计模式
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
本文探讨了数据基础设施设计中常见的一个问题:数据仓库或数据湖仓中的表格缺乏构建高性能机器学习模型所需的历史记录,导致模型性能受限。为解决这一问题,文章介绍了缓慢变化维度(SCD)技术,特别是Type II类型的应用。通过SCD,可以有效追踪维度表的历史变更,确保模型训练数据包含完整的时序信息,从而提升预测准确性。文章还从数据工程师、数据科学家和产品经理的不同视角提供了实施建议,强调历史数据追踪对提升模型性能和业务洞察的重要性,并建议采用渐进式策略逐步引入SCD设计模式。
96 8
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
PAI Model Gallery 支持云上一键部署 DeepSeek-V3、DeepSeek-R1 系列模型
DeepSeek 系列模型以其卓越性能在全球范围内备受瞩目,多次评测中表现优异,性能接近甚至超越国际顶尖闭源模型(如OpenAI的GPT-4、Claude-3.5-Sonnet等)。企业用户和开发者可使用 PAI 平台一键部署 DeepSeek 系列模型,实现 DeepSeek 系列模型与现有业务的高效融合。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
云上一键部署 DeepSeek-V3 模型,阿里云 PAI-Model Gallery 最佳实践
本文介绍了如何在阿里云 PAI 平台上一键部署 DeepSeek-V3 模型,通过这一过程,用户能够轻松地利用 DeepSeek-V3 模型进行实时交互和 API 推理,从而加速 AI 应用的开发和部署。
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
268 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
1月前
|
机器学习/深度学习 安全 PyTorch
FastAPI + ONNX 部署机器学习模型最佳实践
本文介绍了如何结合FastAPI和ONNX实现机器学习模型的高效部署。面对模型兼容性、性能瓶颈、服务稳定性和安全性等挑战,FastAPI与ONNX提供了高性能、易于开发维护、跨框架支持和活跃社区的优势。通过将模型转换为ONNX格式、构建FastAPI应用、进行性能优化及考虑安全性,可以简化部署流程,提升推理性能,确保服务的可靠性与安全性。最后,以手写数字识别模型为例,展示了完整的部署过程,帮助读者更好地理解和应用这些技术。
94 20
|
1月前
如何看PAI产品下训练(train)模型任务的费用细节
PAI产品下训练(train)模型任务的费用细节
83 6
|
3月前
|
人工智能 JSON 算法
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
阿里云的人工智能平台 PAI,作为一站式、 AI Native 的大模型与 AIGC 工程平台,为开发者和企业客户提供了 Qwen2.5-Coder 系列模型的全链路最佳实践。本文以Qwen2.5-Coder-32B为例,详细介绍在 PAI-QuickStart 完成 Qwen2.5-Coder 的训练、评测和快速部署。
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
|
2月前
|
编解码 机器人 测试技术
技术实践 | 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型快速搭建专业领域知识问答机器人
Qwen2-VL是一款具备高级图像和视频理解能力的多模态模型,支持多种语言,适用于多模态应用开发。通过PAI和LLaMA Factory框架,用户可以轻松微调Qwen2-VL模型,快速构建文旅领域的知识问答机器人。本教程详细介绍了从模型部署、微调到对话测试的全过程,帮助开发者高效实现定制化多模态应用。
|
3月前
|
机器学习/深度学习 PyTorch API
优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
Transformer架构自2017年被Vaswani等人提出以来,凭借其核心的注意力机制,已成为AI领域的重大突破。该机制允许模型根据任务需求灵活聚焦于输入的不同部分,极大地增强了对复杂语言和结构的理解能力。起初主要应用于自然语言处理,Transformer迅速扩展至语音识别、计算机视觉等多领域,展现出强大的跨学科应用潜力。然而,随着模型规模的增长,注意力层的高计算复杂度成为发展瓶颈。为此,本文探讨了在PyTorch生态系统中优化注意力层的各种技术,
147 6
优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
|
2月前
|
机器学习/深度学习 人工智能 算法
人工智能浪潮下的编程实践:构建你的第一个机器学习模型
在人工智能的巨浪中,每个人都有机会成为弄潮儿。本文将带你一探究竟,从零基础开始,用最易懂的语言和步骤,教你如何构建属于自己的第一个机器学习模型。不需要复杂的数学公式,也不必担心编程难题,只需跟随我们的步伐,一起探索这个充满魔力的AI世界。
72 12