当前位置: 首页 > news >正文

AI大模型开发原理篇-3:词向量和词嵌入

简介

词向量是用于表示单词意义的向量, 并且还可以被认为是单词的特征向量或表示。 将单词映射到实向量的技术称为词嵌入在实际应用中,词向量和词嵌入这两个重要的NLP术语通常可以互换使用。它们都表示将词汇表中的单词映射到固定大小的连续向量空间中的过程。这些向量可以捕捉词汇的语义信息。

词向量

词向量(Word Vector)是一种将词语表示为向量的方式,其核心思想是把词语映射到一个连续的向量空间中,每个词都对应空间中的一个点(向量),通过向量之间的运算(如距离计算、相似度计算等)来反映词语之间的语义关系。常见的方式包括:

  • One-Hot编码(独热)
    为词汇表中的每个词分配一个唯一的整数索引,然后将每个词表示为一个长度等于词汇表大小的向量,向量中只有对应索引位置的值为 1,其余位置为 0。例如,词汇表为 ["苹果", "香蕉", "橙子"],“苹果” 的独热编码向量为 [1, 0, 0]。这种表示方法简单直接,但存在维度高、无法表示词之间语义关系等缺点。
  • 词袋模型(Bag-of-Words, BoW)
  • TF-IDF
  • 词嵌入(Word Embedding)

作用

  • 语义表示:能够捕捉词语的语义信息,使得语义相近的词在向量空间中距离较近。例如,“苹果” 和 “香蕉” 在语义上都属于水果类别,它们的词向量在空间中会相对靠近。
  • 作为模型输入:方便计算机对文本进行处理,可用于各种自然语言处理任务,如文本分类、情感分析、机器翻译等。

词嵌入(Word Embedding)

词嵌入是一种低维、密集的词向量表示方法,它能够捕捉单词之间的语义关系上下文信息。词嵌入通常是从大规模文本语料库中通过机器学习训练得到的。这个术语通常用于描述将词映射到向量空间的过程或表示方法。它通常包括训练算法和生成的词向量空间。例如,我们可以说“我们使用Word2Vec算法来生成词嵌入”。

主要方法

  1. Word2Vec(Google, 2013)

    • CBOW(Continuous Bag of Words):根据上下文预测中心词。
    • Skip-gram:根据中心词预测上下文词。
    • 词向量能学习到“王子-男人+女人≈公主”这样的关系。
  2. GloVe(Global Vectors for Word Representation)(Stanford, 2014)

    • 结合全局统计信息,计算词的共现矩阵,然后通过矩阵分解得到词向量。
    • 适用于捕捉更广泛的语义信息。
  3. FastText(Facebook, 2016)

    • 将单词拆分成多个子词(如"apple"→["ap", "pp", "pl", "le"])。
    • 能够更好地处理未见过的新词(OOV, Out-of-Vocabulary)。
  4. BERT(Google, 2018)ELMo

    • 采用深度神经网络(Transformer / LSTM),结合上下文语境生成动态词向量。
    • BERT能捕捉单词在不同句子中的不同含义(例如“银行”在“去银行存钱”和“河岸边的风景”中的区别)。

词嵌入的应用

  • 自然语言处理(NLP):机器翻译、情感分析、文本分类等。
  • 搜索引擎:提升查询理解能力。
  • 推荐系统:基于文本的个性化推荐(如新闻推荐)。
  • 聊天机器人:让AI更好地理解用户输入。

Word2Vec:基于上下文学习单词的词向量模型

1、概念

Word2Vec 是一种基于神经网络的词向量训练方法,由 Google2013年 提出,能够将单词映射到一个低维稠密向量(Dense Vector),并且可以捕捉单词之间的语义关系。

Word2Vec 训练出的词向量可以进行数学运算,例如:

“国王” - “男人” + “女人” ≈ “王后”

它比传统的 One-Hot 编码、TF-IDF 更紧凑,并且能学习到单词的语义信息

2、原理

Word2Vec 基于分布式假设,即上下文相似的词,其语义也相似。它的核心思想是通过在大规模文本语料上进行训练,学习词语的上下文信息,从而将每个词语表示为一个固定长度的向量。在这个向量空间中,语义相近的词语对应的向量在空间上也比较接近。

Word2Vec通过训练一个神经网络模型来学习词嵌入,模型的任务就是基于给定的上下文词来预测目标词,或者基于目标词来预测上下文词。

3、训练模型

Word2Vec 主要有两种训练模型:连续词袋模型(CBOW)和跳字模型(Skip - Gram)。

  • 连续词袋模型(CBOW)
    • 原理:根据上下文词来预测目标词。例如,在句子 “The dog chased the cat” 中,如果上下文窗口大小设为 2,对于目标词 “chased”,上下文词就是 “The”、“dog”、“the”、“cat”。模型的任务就是根据这些上下文词预测出 “chased”。
    • 结构:CBOW 模型包含输入层、隐藏层和输出层。输入层是上下文词的独热编码向量,隐藏层通常是线性变换,输出层是一个 softmax 函数,用于计算每个词作为目标词的概率。
  • 跳字模型(Skip - Gram)
    • 原理:与 CBOW 相反,它根据目标词来预测上下文词。同样以上述句子为例,以 “chased” 为目标词,模型要预测出它的上下文词 “The”、“dog”、“the”、“cat”。
    • 结构:Skip - Gram 模型的结构与 CBOW 类似,但输入层是目标词的独热编码向量,输出层要预测多个上下文词的概率。

4、Word2Vec 的应用

📌 搜索引擎:提升关键词检索能力
📌 推荐系统:新闻推荐、商品推荐
📌 情感分析:用于理解文本情绪
📌 机器翻译:提升翻译质量
📌 聊天机器人:让 AI 更好地理解用户输入

5、Word2Vec 的局限性

无法处理 OOV(Out-Of-Vocabulary,新词):如果词汇表中没有某个单词,就无法表示它。
忽略单词顺序:Word2Vec 仅考虑局部上下文,无法捕捉完整句意(BERT 解决了这个问题)。
计算资源消耗大:在大规模数据集上训练需要较长时间。

6、Word2Vec vs. 其他词向量方法

方法维度是否有语义计算量适用场景
One-Hot高(10万+)❌ 没有传统文本分类
TF-IDF❌ 没有文档检索
Word2Vec低(50-300)✅ 有中等NLP 任务
BERT低(768+)✅ 动态语义机器阅读理解

相关文章:

AI大模型开发原理篇-3:词向量和词嵌入

简介 词向量是用于表示单词意义的向量, 并且还可以被认为是单词的特征向量或表示。 将单词映射到实向量的技术称为词嵌入。在实际应用中,词向量和词嵌入这两个重要的NLP术语通常可以互换使用。它们都表示将词汇表中的单词映射到固定大小的连续向量空间中…...

高精度算法:高精度减法

P2142 高精度减法 - 洛谷 | 计算机科学教育新生态 我们两个整数一定要是大数减去小数,所以这个点我们需要特判一下,那我们两个字符串表示的整型怎么判断大小呢,我们字典序比较大小和真实的数字比较大小是一样的,比如我们的‘21’…...

Java创建项目准备工作

新建项目 新建空项目 每一个空项目创建好后都要检查jdk版本 检查SDK和语言级别——Apply——OK 检查当前项目的Maven路径,如果已经配置好全局,就是正确路径不用管 修改项目字符集编码,将所有编码都调整为UTF-8 创建Spingboot工程 创建Spring…...

基于STM32的智能宠物喂食器设计

目录 引言系统设计 硬件设计软件设计 系统功能模块 定时喂食模块远程控制与视频监控模块食物存量检测与报警模块语音互动与用户交互模块数据记录与智能分析模块 控制算法 定时与手动投喂算法食物存量检测与低存量提醒算法数据记录与远程反馈算法 代码实现 喂食控制代码存量检测…...

在线课堂小程序设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...

为AI聊天工具添加一个知识系统 之77 详细设计之18 正则表达式 之5

本文要点 昨天讨论了 本项目(AI聊天工具添加一个知识系统)中正则表达式模板的设计中可能要考虑到的一些问题(讨论到的内容比较随意,暂时无法确定 那些考虑 是否 应该是正则表达式模板设计要考虑的以及 是否完整)。今天…...

【Elasticsearch】 索引模板 ignore_missing_component_templates

解释 ignore_missing_component_templates 配置 在Elasticsearch中,ignore_missing_component_templates 是一个配置选项,用于处理索引模板中引用的组件模板可能不存在的情况。当您创建一个索引模板时,可以指定一个或多个组件模板&#xff0…...

Github 2025-01-29 C开源项目日报 Top10

根据Github Trendings的统计,今日(2025-01-29统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目10C++项目1Assembly项目1Go项目1我的电视 - 安卓电视直播软件 创建周期:40 天开发语言:CStar数量:649 个Fork数量:124 次关注人数:64…...

文件上传2

BUUCTF 你传你🐎呢 先上传.htaccess 修改格式 即可上传成功 返回上传图片格式的木马 用蚁剑连接 5ecf1cca-59a1-408b-b616-090edf124db5.node5.buuoj.cn:81/upload/7d8511a847edeacb5385299396a96d91/rao.jpg 即可得到flag [GXYCTF2019]BabyUpload...

Unity敌人逻辑笔记

写ai逻辑基本上都需要状态机。因为懒得手搓状态机,所以选择直接用动画状态机当逻辑状态机用。 架构设计 因为敌人的根节点已经有一个animator控制动画,只能增加一个子节点AI,给它加一个animator指向逻辑“动画”状态机。还有一个脚本&#…...

高级编码参数

1.跳帧机制 参考资料:frameskipping-hotedgevideo 跳帧机制用于优化视频质量和编码效率。它通过选择性地跳过某些帧并使用参考帧来预测和重建视频内容,从而减少编码所需的比特率,同时保持较高的视频质量。在视频编码过程中,如果…...

DeepSeek-R1:通过强化学习激励大型语言模型(LLMs)的推理能力

摘要 我们推出了第一代推理模型:DeepSeek-R1-Zero和DeepSeek-R1。DeepSeek-R1-Zero是一个未经监督微调(SFT)作为初步步骤,而是通过大规模强化学习(RL)训练的模型,展现出卓越的推理能力。通过强…...

leetcode——合并K个有序链表(java)

给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下&#…...

【Valgrind】安装报错: 报错有未满足的依赖关系: libc6,libc6-dbg

Valgrind 内存泄漏检测工具安装 安装 sudo apt install valgrind官方上也是如此 但是在我的系统&#xff08;debian12)上却失败了&#xff1a; 报错有未满足的依赖关系&#xff1a; libc6 : 破坏: valgrind (< 1:3.19.0-1~) 但是 1:3.16.1-1 正要被安装 libc6-dbg : 依赖…...

vue3和vue2的区别有哪些差异点

Vue3 vs Vue2 主要差异对比指南 官网 1. 核心架构差异 1.1 响应式系统 Vue2&#xff1a;使用 Object.defineProperty 实现响应式 // Vue2 响应式实现 Object.defineProperty(obj, key, {get() {// 依赖收集return value},set(newValue) {// 触发更新value newValue} })Vue3…...

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(六)(完结)

Understanding Diffusion Models: A Unified Perspective&#xff08;六&#xff09;&#xff08;完结&#xff09; 文章概括指导&#xff08;Guidance&#xff09;分类器指导无分类器引导&#xff08;Classifier-Free Guidance&#xff09; 总结 文章概括 引用&#xff1a; …...

NPM 使用介绍

NPM 使用介绍 引言 NPM(Node Package Manager)是Node.js生态系统中的一个核心工具,用于管理JavaScript项目的依赖包。无论是开发一个小型脚本还是构建大型应用程序,NPM都能极大地提高开发效率。本文将详细介绍NPM的使用方法,包括安装、配置、依赖管理、包发布等,帮助您…...

http3网站的设置(AI不会配,得人工配)

堡塔PHP项目中配置nginx1.26.0设置http3协议 # 文件所在服务器中的路径 /www/server/nginx/conf/nginx.confuser www www; worker_processes auto; error_log /www/wwwlogs/nginx_error.log crit; pid /www/server/nginx/logs/nginx.pid; worker_rlimit_nofile 512…...

Vue+Echarts 实现青岛自定义样式地图

一、效果 二、代码 <template><div class"chart-box"><chart ref"chartQingdao" style"width: 100%; height: 100%;" :options"options" autoresize></chart></div> </template> <script> …...

Java教程练习:学生信息管理系统

文章目录 学生管理系统1、需求文档需求分析 2、新建学生实体类3、实现基本菜单和退出功能4、查询和添加4.1 查询学生信息4.2 添加学生信息 5、修改和删除5.1 删除功能实现5.2 修改功能实现 完整代码下载 学生管理系统 1、需求文档 需求 采取控制台的方式书写学生管理系统。 …...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...