人工智能NLP--特征提取之词嵌入(Word Embedding)

一、前言

在上篇文章中,笔者详细讲解介绍了人工智能自然语言处理特征提取中的TD-IDF型文本处理方法,那么接下来,笔者将为大家揭晓,目前阶段,在特征提取,也就是文本数据转成数字数据领域内最常用也是最好用的方法–词嵌入(Word Embedding)。

二、定义,组成和基本介绍

在自然语言处理(NLP)领域,词嵌入(Word Embedding)是一种将词汇映射到向量空间的技术。通过词嵌入,词汇可以被表示为实数值向量,这些向量捕捉了词汇之间的语义关系。顺带提一嘴的是,词嵌入是NLP的一个核心技术,广泛应用于各种任务,如文本分类、情感分析、机器翻译等。

1. 词嵌入的基本概念

词嵌入的目标是将离散的词汇映射到一个连续的、低维的向量空间中,使得语义相似的词在向量空间中彼此接近。换句话说,词嵌入将词汇表示为实数值向量,这些向量捕捉了词汇之间的语义关系。

2. 词嵌入的动机

传统的词汇表示方法(如独热编码)存在一些问题:

  • 高维稀疏性:词汇表中的每个词都被表示为一个高维向量,其中只有一个维度为1,其余维度为0。
  • 缺乏语义信息:独热编码无法捕捉词汇之间的语义关系,如“cat”和“dog”在独热编码中是完全不同的向量。

词嵌入通过将词汇映射到一个低维的、密集的向量空间中,解决了上述问题,并能够捕捉词汇之间的语义关系。简单来说,词嵌入不仅可以减少数据向量的维度从而方便计算,还可以帮助提取增加词与词之间的语义关系等等。

3. 词嵌入的应用

词嵌入在NLP中有广泛的应用,包括但不限于:

  • 文本分类:将文本表示为词嵌入向量的组合,然后输入到分类模型中。
  • 情感分析:通过词嵌入捕捉文本中的情感信息。
  • 机器翻译:将源语言和目标语言的词汇映射到相同的向量空间中。
  • 信息检索:通过词嵌入计算查询和文档之间的相似度。

4. 词嵌入的局限性

尽管词嵌入在NLP中取得了显著的成功,但它们也有一些局限性:

  • 静态表示:传统的词嵌入(如Word2Vec、GloVe)为每个词生成一个固定的向量,无法捕捉词义的多义性。
  • 上下文独立:传统的词嵌入方法无法根据上下文动态调整词的表示。

5. 上下文嵌入

为了克服传统词嵌入的局限性,近年来提出了一些上下文嵌入方法,如BERT、GPT等。这些方法通过预训练语言模型,能够根据上下文动态生成词的表示,捕捉词义的多义性和上下文依赖性。

5.1 BERT

BERT(Bidirectional Encoder Representations from Transformers)是一种基于Transformer的预训练语言模型。BERT通过双向训练,能够捕捉词汇的上下文信息,并生成上下文相关的词嵌入。

5.2 GPT

GPT(Generative Pre-trained Transformer)也是一种基于Transformer的预训练语言模型,但与BERT不同,GPT是单向训练的,即从左到右生成词嵌入。

6. 词嵌入的方法

6.1 Word2Vec

Word2Vec是一种基于神经网络的词嵌入方法,它通过训练一个两层的神经网络,将每个词汇映射到一个固定长度的向量空间中。Word2Vec包括两种模型:CBOW(Continuous Bag-of-Words)和Skip-gram。CBOW模型是根据上下文预测中心词汇,Skip-gram模型是根据中心词汇预测上下文词汇。

两种主要的训练架构:

  • CBOW(Continuous Bag of Words) :预测上下文中的中心词。
  • Skip-gram:预测中心词的上下文词。

听不懂 ? 没关系,上例子 !

例如,对于句子“the cat sat on the mat”,CBOW模型会尝试根据上下文词“the”, “sat”, “on”, “the”来预测中心词“cat”,而Skip-gram模型会尝试根据中心词“cat”来预测上下文词“the”, “sat”, “on”, “the”。

6.2 GloVe(了解即可)

GloVe(Global Vectors for Word Representation)是一种基于全局词汇统计信息的词嵌入方法,它通过最小化词汇之间的共现矩阵的加权平方误差,学习每个词汇的向量表示。GloVe的优点是能够捕捉到词汇之间的语义关系和语法关系。GloVe的目标是使词汇对之间的向量差异能够反映它们的共现概率。

6.3 FastText(了解即可)

FastText 是由Facebook的研究人员提出的一种词嵌入方法,它扩展了Word2Vec模型,是一种基于子词(subword)的词嵌入方法,它将每个词汇表示为其子词的向量和一个特殊的词汇向量的加权和。FastText的优点是能够处理未登录词汇和词汇拼写错误的情况。这使得FastText能够处理未登录词(OOV)和拼写错误的词汇。

相比较后两种词嵌入方法而言,目前市场上主流的,用的最多的还是Word2Vec方法,因此,笔者下面将着重讲解这一词嵌入的方法。

三、Word2Vec

定义

Word2Vec是一种流行的词嵌入模型,由Tomas Mikolov等人在2013年提出。它是一个浅层神经网络,能够将词语转换为向量形式,这些向量能够捕捉词语之间的语义和语法关系。Word2Vec有两种主要的模型架构:连续词袋(CBOW)和跳跃式(Skip-Gram)模型。

1. 连续词袋(Continuous Bag of Words, CBOW)

CBOW模型的目标是根据上下文的词来预测目标词。给定一个目标词w和它的上下文词c1, c2, …, cn,模型会尝试预测w的概率分布。CBOW模型的输入是上下文词的向量表示,输出是目标词的向量表示。

工作原理:
  • 将上下文词的向量求和,得到一个向量表示。
  • 使用这个向量表示作为输入,通过一个softmax层来预测目标词的概率。

2. 跳跃式(Skip-Gram)模型

与CBOW相反,Skip-Gram模型的目标是根据目标词来预测它的上下文词。对于每个目标词w,模型会尝试预测它周围每个上下文词c的概率分布。

工作原理:
  • 使用目标词的向量表示作为输入。
  • 对于每个上下文词,使用一个softmax层来预测它的概率。

3. 训练过程

无论是CBOW还是Skip-Gram模型,训练过程都包括以下步骤(其实也就是一个基础完整的神经网络的过程):

  1. 初始化:随机初始化词向量和(如果是CBOW模型的话)上下文向量。
  2. 前向传播:根据模型架构,计算目标词或上下文词的概率分布。
  3. 计算损失:使用负采样或层次softmax技术来计算损失函数。
  4. 反向传播:根据损失函数,更新词向量。
  5. 迭代:重复上述步骤,直到模型收敛。

4. 负采样

由于softmax层的计算复杂度很高,Word2Vec使用负采样来加速训练。负采样是一种随机梯度下降变体,它只更新一小部分错误的类别,而不是所有类别。

5. 层次softmax

层次softmax是另一种加速技术,它通过构建一个二叉树来减少计算量。每个词都被放置在树中的某个位置,树的每个内部节点都对应于一个中间向量表示。

6. 应用

  • 语义相似度:使用词向量计算词语之间的相似度。
  • 文本分类:作为特征输入到分类模型中。
  • 机器翻译:帮助理解源语言和目标语言的语义。
  • 命名实体识别(NER):帮助模型识别和分类文本中的实体。

7. 限制和挑战

尽管Word2Vec非常流行且有效,但它也有一些限制:

  • 上下文窗口大小:固定的上下文窗口大小可能无法捕捉长距离依赖关系。
  • 一词多义:模型可能难以区分多义词的不同含义。
  • 训练数据:需要大量的高质量文本数据进行训练。

Word2Vec是NLP领域的一个重要里程碑,它为词语的向量化表示提供了一种有效的方法。尽管存在一些挑战,但它仍然是许多NLP任务中常用的基础技术之一。

OK , 前面抽象和生硬的内容也看得够呛了吧,老规矩,上例子!!

四、Word2Vec文本具体案例演示

让俺们通过一个具体的例子来说明Word2Vec是如何工作的,以及它如何生成词向量的。

假设文本数据

假设我们有以下简单的文本数据作为我们的语料库:

The quick brown fox jumps over the lazy dog.

预处理

首先,我们将文本进行预处理,包括分词(Tokenization)、去除停用词等步骤。在这个例子中,我们将忽略停用词,并简单地将句子分割成单词列表:

['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog']

训练Word2Vec模型

接下来,我们使用Word2Vec模型来训练词向量。我们可以选择CBOW或Skip-Gram模型。为了简单起见,我们这里使用CBOW模型。

定义上下文窗口

我们定义一个大小为2的上下文窗口。这意味着对于每个目标词,我们将使用它左右两侧各一个词作为上下文。

训练过程
  1. 对于每个词,我们创建一个由其上下文词组成的窗口。
  2. 我们将这些词作为输入,目标是预测中心词。

例如,如果我们考虑中心词“fox”,它的上下文窗口将是:

  • 上下文词:[‘quick’, ‘brown’, ‘jumps’, ‘over’]
  1. 我们将这些上下文词的词向量与训练数据中的词向量进行比较,并通过反向传播调整我们的词向量,以最小化预测误差。

词向量的生成

经过训练后,每个词将被表示为一个向量。例如,我们可能得到以下词向量:

  • The → [0.1, 0.3, 0.2, …]
  • quick → [0.8, -0.4, 0.5, …]
  • brown → [0.3, 0.6, -0.1, …]
  • fox → [0.4, 0.2, 0.9, …]
  • jumps → [-0.5, 0.8, 0.3, …]
  • over → [-0.2, 0.1, 0.7, …]
  • lazy → [0.2, -0.3, 0.1, …]
  • dog → [0.7, -0.6, 0.2, …]

例子:语义相似性

如果我们想要找到与“fox”语义上相似的词,我们可以计算“fox”的词向量与其他词向量之间的距离(例如,使用余弦相似度),然后选择距离最近的词。假设我们得到以下结果:

  • dog 的余弦相似度最高,这意味着在训练数据的上下文中,“fox”和“dog”经常一起出现,因此它们在语义上是相似的。

例子:向量运算

Word2Vec的一个有趣特性是它可以执行向量运算来捕捉语义关系。例如,如果我们想要找到“king”和“man”之间的性别转换,我们可以执行以下向量运算:

  • king - man + woman 的结果可能会接近于“queen”的词向量,因为这种运算捕捉了性别的语义差异。

这个例子展示了Word2Vec如何通过上下文学习词的向量表示,并捕捉词与词之间的语义和句法关系。在实际应用中,Word2Vec模型会在更大的语料库上训练,生成更复杂的词向量,以用于各种复杂的NLP任务。

五、Word2Vec示例代码演示

下面是笔者使用Gensim库训练Word2Vec模型的代码:

from gensim.models import Word2Vec# 示例句子
sentences = [["the", "cat", "sat", "on", "the", "mat"],["the", "dog", "barked", "at", "the", "cat"]
]# 训练Word2Vec模型
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)# 获取词汇的向量表示
vector = model.wv['cat']
print(vector)# 查找与“cat”最相似的词汇
similar_words = model.wv.most_similar('cat')
print(similar_words)

六、总结

词嵌入是NLP中一种重要的技术,通过将词汇映射到向量空间中,能够捕捉词汇之间的语义关系。传统的词嵌入方法(如Word2Vec、GloVe、FastText)已经在各种NLP任务中取得了显著的成功,而上下文嵌入方法(如BERT、GPT)进一步提升了词嵌入的表现,能够更好地捕捉词义的多义性和上下文依赖性。理解和掌握词嵌入技术是从事NLP研究和应用的重要基础。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/406211.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在MAVEN中版本依赖有冲突改怎么处理

1.为什么会出现版本依赖的冲突 如果存在版本冲突,通常可能会引发的报错是ClassNotFoundException、NoSuchMethodError等错误。Maven依赖版本冲突通常是由于间接依赖导致同一个jar包存在多个不同版本。例如,如果B依赖了A的1.0版本,而C依赖了A…

网络安全之xss靶场练习

目录 一、xss靶场练习 1、Ma Spaghet! 2、Jefff 第一个方法 第二个方法 3、Ugandan Knuckles 4、Ricardo Milos 5、Ah Thats Hawt 6、Ligma 7、Mafia​编辑 8、Ok, Boomer 一、xss靶场练习 靶场地址 https://xss.pwnfunction.com/ 页面显示如下 1、Ma Spaghet! 分析…

Python之字符串练习题(下)

21.nameStr“Albert Einstein",如何使用字符串运算符“:”来提取 nameStr 中的名和姓? mingnameStr[:6] xingnameStr[7:]23.下面哪些语句在运行时不会出错? (a)var xyz ’ * 10.5 (b)var ‘xyz’ * ‘5 ©var‘’xyz’*5 (d)var‘xyz’*5.0 重复运算符…

Flutter Web 正式官宣弃用 HTML renderer , Canvas 路线成为唯一

Flutter Web 团队计划在 2025 年的第一个 Flutter stable 版本中弃用 HTML renderer,当然在 master 和 beta 中会更早合并这一更改。 关于这个话题,其实在年初的我就曾发布过 《Flutter 即将放弃 Html renderer 》, Html renderer 从 2018 年…

Redis远程字典服务器(7)—— set类型详解

目录 一,基本情况 二,常用命令 2.1 sadd 2.2 smembers,sismember 2.3 spop,srandmember 2.3 smove,srem 2.4 sinter,sinterstore求交集 2.5 sunion,sunionstore求并集 2.6 sdiff&#…

MySQ分库分表与MyCat安装配置

目录 介绍 拆分策略 垂直拆分 1. 垂直分库 2. 垂直分表 水平拆分 1. 水平分库‘ 2. 水平分表 实现技术 MyCat概述 安装 概念介绍 MyCat入门 需求 环境准备 分片配置 启动服务 连接测试 执行SQL语句测试 MyCat配置 1. schema.xml 1. schema标签 2. dat…

python | 图片转换为 pdf 实现方法

目录 一、PIL 库简介及安装使用方法 (一)python 不同版本下 PIL 的使用方法 二、图片转换为 pdf 的两种实现方法 (一)简易版——pdf 页面尺寸跟随图片大小 (二)常用版——pdf 每页尺寸统一为 A4 一、P…

C++,std::bind 详解

文章目录 1. 概述2. 基本用法2.1 使用占位符2.2 示例 3. 总结 1. 概述 std::bind 是 C11 引入的一个功能,它允许你将函数(或成员函数、函数对象)与其参数绑定,生成一个新的可调用对象。这个功能在需要将函数及其参数一起传递给其…

闲鱼IP属地地址:去外地会自动变化吗?解析实时更新机制

在数字化时代,网络交易平台如闲鱼已成为我们日常生活中不可或缺的一部分。在进行二手交易时,了解对方的地理位置信息成为许多买家和卖家的关切点。那么,去外地闲鱼IP会变吗?闲鱼IP属地地址是实时更新吗?本文将深入探讨…

基于百度智能云爆破验证码识别

目录 基于百度智能云爆破验证码识别 一、基于php提供验证码校验接口 二、基于百度云API识别验证码 1、领取资源,创建应用 2、利用应用的API Key和Secret Key获取Access Token 3、文字识别 4、编写爆破程序 基于百度智能云爆破验证码识别 一、基于php提供验证…

华为手机换ip地址怎么换?手机换ip地址有什么影响

在数字化时代,网络已成为我们生活中不可或缺的一部分。无论是日常沟通、工作学习还是娱乐休闲,我们都离不开互联网。然而,随着网络安全问题的日益突出,如何保护个人隐私和信息安全成为了用户关注的焦点。更换手机IP地址作为提升网…

2024年下半年,单独划定的地区报名软考的温馨提示

软考分数线分为全国分数线、省分数线(陕西省下半年已取消,仅剩青海省)、以及单独划线地区分数线。目前各地2024年下半年软考正在接受报名,请单独划线地区的考生注意——有些地区可能要求考生在考试后进行单独划线申请,…

删除或丢失的移动硬盘数据如何恢复?三种办法助你找回宝贵资料

在数字化时代,移动硬盘已成为我们存储重要数据不可或缺的工具。然而,数据丢失或误删除的情况时有发生,让人倍感焦虑。别担心,本文将为你详细介绍如何恢复删除或丢失的移动硬盘数据,帮助你找回那些宝贵的资料。 一、检…

『 C++ 』IO流

文章目录 IO流概述iostream 的标准对象C流和C标准库I/O函数的同步 sync_with_stdiofstream 文件流文件流的打开标志二进制读写二进制读写的浅拷贝问题文本读写 字符串流注意 IO流概述 流是指数据的有序传输序列,路表示数据从一个地方流向另一个地方的过程,流可以是输入流也可以…

用Python在Ashare获取金融数据官方文档解读

Ashare,也被写作AKShare,是一个基于Python的开源完全免费的财经数据接口库。它的主要目的是为用户提供股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据的采集、清洗和落地的一整套工具。AKSha…

算法的学习笔记—把二叉树打印成多行(牛客JZ78)

😀前言 在算法面试中,二叉树的层序遍历是一个经典的题目。而这道题的要求是进一步将二叉树的每一层结点值打印成多行,即同一层结点从左至右输出,最终结果存放到一个二维数组中返回。接下来,我们将通过代码实例详细解析…

什么是光伏气象站—光伏气象站的简述

随着全球对可再生能源需求的日益增长,光伏发电作为清洁、可再生的能源形式,正逐步成为能源结构转型的重要力量。然而,光伏电站的发电效率受到多种气象因素的影响,如太阳辐射强度、温度、风速、湿度等。为了最大化光伏系统的发电潜…

C/C++ 多线程[1]---线程创建+线程释放+实例

文章目录 前言1. 多线程创建2. 多线程释放3. 实例总结 前言 说来惭愧,写了很久的代码,一个单线程通全部。可能是接触的项目少吧,很多多线程的概念其实都知道,但是实战并没有用上。前段时间给公司软件做一个进度条,涉及…

Java 2.4 - JVM

一、Java 内存区域详解(重点) 本篇讨论的是 HotSpot 虚拟机 相比于 C 而言,程序员不需要对每个 new 操作都写对应的 delete / free 操作,这些操作我们会交给虚拟机去做。因此,如果不了解虚拟机的原理,一旦…

【Vue3】集成 Ant Design Vue

【Vue3】集成 Ant Design Vue 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗…