20250221 NLP
1.向量和嵌入
https://zhuanlan.zhihu.com/p/634237861
encoder的输入就是向量,提前嵌入为向量
二.多模态文本嵌入向量过程

1.文本预处理
文本tokenizer之前需要预处理吗?
是的,文本tokenizer之前通常需要对文本进行预处理。预处理步骤可以包括以下内容:
1. 标准化
- 大小写转换:将文本转换为统一大小写(通常是小写)以减少词汇表大小。
- 去除标点符号:除去不必要的标点符号,保持文本的简洁。
2. 分词准备
- 去除空白:清除多余的空格或换行符。
- 特殊字符处理:处理特殊字符或符号,以确保分词的准确性。
3. 其他处理
- 停用词过滤:根据任务需要,可以去除常见但无意义的停用词(如“的”、“和”等)。
- 词干提取或词形还原:将单词还原到其基本形式,以统一表示。
这些预处理步骤帮助提高tokenizer的效率和准确性,确保生成的token序列更具一致性和可用性。
当然,这里是一个简单的文本预处理示例:
原始文本
"What is the animal?"
预处理步骤
-
大小写转换
- 将文本转换为小写:
"what is the animal?"
- 将文本转换为小写:
-
去除标点符号
- 去掉问号:
"what is the animal"
- 去掉问号:
-
去除多余空格
- 确保没有多余空格:
"what is the animal"
- 确保没有多余空格:
-
停用词过滤(可选)
- 如果需要,可以去掉停用词(如"is", "the"),具体取决于任务需求:
"what animal"
- 如果需要,可以去掉停用词(如"is", "the"),具体取决于任务需求:
-
词干提取或词形还原(可选)
- 将单词还原到词干形式(如“running”变为“run”):
"what animal"
- 将单词还原到词干形式(如“running”变为“run”):
结果
经过预处理,文本更为简洁,适合于tokenization和后续处理。预处理后的文本可以被tokenizer进一步分割为token序列,如:
["what", "animal"]
这些步骤帮助确保tokenizer的输出一致且易于模型处理。
2.tokenizer 字节对编码
例如BPE、WordPiece等分词模型构建词汇表(['low', 'est']),添加自增索引。
BPE(Byte Pair Encoding)本身不需要训练,但它确实需要一个过程来构建词汇表。这涉及从文本中统计频率和合并字符对。以下是一个示例来说明这个过程:
BPE构建过程示例
假设文本数据
"banana", "bandana"
步骤1:初始化
- 将每个单词分解为字符序列:
b a n a n ab a n d a n a
步骤2:统计频率
- 统计所有相邻字符对的出现频率:
- 'b a':2次
- 'a n':3次
- 'n a':3次
- 'a n':3次
- 'n d':1次
- 'd a':1次
步骤3:合并高频对
- 合并出现频率最高的字符对 'a n':
b an a n ab an d a n a
步骤4:重复过程
-
再次统计字符对:
- 'b an':2次
- 'an a':2次
- 'n a':2次
- 'an d':1次
- 'd a':1次
-
合并 'an':
ban a n aban d a n a
-
继续合并,直到达到预定义的词汇表大小。
最终词汇表
- 通过多次合并,最终得到一个包含字符和子词的词汇表:
['b', 'a', 'n', 'd', 'an', 'ban']
总结
- BPE通过合并高频字符对,构建出一个高效的子词词汇表。
- 这个过程不需要训练参数,但需要从数据中统计和合并字符对以创建词汇表。
3.embedding
通过子词索引在嵌入表中查找对应的嵌入向量。相似的语义信息的挨着。
文本嵌入表需要训练吗?还是LLM预训练模型自带的
文本嵌入表通常是需要训练的,但它可以是LLM预训练模型的一部分。在大型语言模型(LLM)的预训练过程中,嵌入表会随着模型其他参数一起优化,以便更好地捕捉词汇的语义信息。
两种常见情况
-
预训练模型自带:
- 许多大型语言模型在发布时已经包含了训练好的文本嵌入表。
- 使用这些模型时,嵌入表可以直接应用于新任务。
-
自定义训练:
- 如果你使用自己的数据进行微调或训练新的模型,文本嵌入表会在训练过程中更新。
- 嵌入表的参数会随着其他模型参数一起通过反向传播进行优化。
总结
文本嵌入表可以是预训练模型的一部分,也可以在特定任务中通过微调进行更新。嵌入表的质量对模型理解和生成文本的能力有重要影响。
在多模态大语言模型(MLLM)中,文本嵌入表可以是静态的,也可以是动态的,具体取决于模型的设计和使用的技术。
静态嵌入
- 定义:每个词在训练开始时被分配一个固定的向量。
- 特征:
- 嵌入在训练过程中不随上下文变化。
- 常用于早期的嵌入技术,如Word2Vec和GloVe。
- 优点:计算效率高,易于实现。
- 缺点:无法捕捉词的上下文特征和多义性。
动态嵌入
- 定义:词的嵌入根据上下文动态生成。
- 特征:
- 嵌入向量在每个输入实例中可能不同。
- 使用模型如BERT、GPT等。
- 优点:能够更好地理解上下文,处理多义词。
- 缺点:计算复杂度较高。
在MLLM中的应用
- 静态嵌入:在一些简单或资源受限的应用中可能仍然使用。
- 动态嵌入:在需要深度理解和复杂推理的任务中更为常见。
总结
在现代多模态模型中,动态上下文嵌入越来越普遍,它们能够提供更丰富的语义信息,适合复杂的跨模态任务。
相关文章:
20250221 NLP
1.向量和嵌入 https://zhuanlan.zhihu.com/p/634237861 encoder的输入就是向量,提前嵌入为向量 二.多模态文本嵌入向量过程 1.文本预处理 文本tokenizer之前需要预处理吗? 是的,文本tokenizer之前通常需要对文本进行预处理。预处理步骤可…...
https:原理
目录 1.数据的加密 1.1对称加密 1.2非对称加密 2.数据指纹 2.1数据指纹实际的应用 3.数据加密的方式 3.1只使用对称加密 3.2只使用非对称加密 3.3双方都使用对称加密 3.4非对称加密和对称加密一起使用 4.中间人攻击 5.CA证书 5.1什么是CA证书 CA证书的验证 6.https的原理 1.数据…...
cmake命令记录
1.project(HELLO) project命令用于设置工程的名称,括号里的参数HELLO便是我们要设置的工程名称;设置工程名称并不是强制性的,但是最好加上。 2.add_executable(hello ./main.c) add_executable用于生成一个可执行文件,第一个参数代表生成的可…...
【Python模块】——pymysql
pymysql是python操作mysql的标准库,可以通过pip install快速导入pymysql包操作数据库 使用pymysql操作mysql 简单demo import pymysql connect pymysql.connect(host"localhost",port3306,user"root",password"root",database&quo…...
在Spring Boot中如何使用Freemaker模板引擎
在 Spring Boot 中使用 FreeMarker 模板引擎可以帮助你创建动态的 Web 页面。以下是详细的步骤和示例代码,介绍如何在 Spring Boot 项目里集成和使用 FreeMarker。 1. 添加依赖 如果你使用的是 Maven 项目,需要在 pom.xml 文件中添加 FreeMarker 相关依赖。Spring Boot 提供…...
数据驱动未来!天合光能与永洪科技携手开启数字化新篇章
在信息化时代的今天,企业间的竞争早就超越了传统产品与服务的范畴,新的核心竞争力即——数据处理能力和信息技术的应用。作为数据技术领域的领军者,永洪科技凭借其深厚的技术积累和丰富的行业经验,成功助力天合光能实现数字化升级…...
JavaScript数据结构-模拟链表
在JavaScript中没有链表这种数据结构,但是我们可以用对象(Object)模拟链表,下面让我们先了解链表是什么。 链表(Linked List)是一种基础的数据结构,由一系列节点(Node)组成,每一个节…...
使用 Apache Jena 构建 RDF 数据处理与查询服务
一、引言 随着语义网和知识图谱技术的不断发展,RDF(Resource Description Framework)作为一种用于描述资源的框架,被广泛应用于知识表示和数据集成。Apache Jena 是一个功能强大的 Java 框架,用于处理 RDF 数据和 SPA…...
tableau之网络图和弧线图
一、网络图 概念 网络图(Network Graph),也称为网络可视化,是数据可视化的一种形式,用于显示实体(节点)之间的关系(边)。这种图表通过节点和边的结构揭示数据中的复杂关…...
el-date-picker 组件限制禁止选择当前时间之前的时间
页面代码 <el-date-pickerv-model"xxx.startTime"type"datetime"placeholder"请选择开始时间"value-format"YYYY-MM-DD HH:mm:ss"clearable:disabledDate"disabledDateFn":disabled-hours"disabledHours":dis…...
Linux网络数据包接收:原理、流程与优化策略
在当今数字化时代,网络已成为计算机系统不可或缺的部分。无论是日常的网页浏览、文件传输,还是大规模数据中心的高效通信,网络数据包的收发都在其中扮演着重要角色。对于 Linux 系统而言,深入理解网络数据包的接收过程,…...
django model.object.filter 不等于多个值
关于Django中QuerySet.filter()的使用问题。首先,我会分别针对“不等于多个值”的代码开发问题和可能遇到的报错问题给出解答。 代码开发问题:QuerySet.filter()不等于多个值 在Django中,如果你想在查询中排除多个值,可以使用__i…...
sklearn中的决策树-分类树:实例-分类树在合成数据集上的表现
分类树实例:分类树在合成数据集上的表现 代码分解 在不同结构的据集上测试一下决策树的效果(二分型,月亮形,环形) 导入 import numpy as np from matplotlib import pyplot as plt from matplotlib.colors import Li…...
给小米/红米手机root(工具基本为官方工具)——KernelSU篇
目录 前言准备工作下载刷机包xiaomirom下载刷机包【适用于MIUI和hyperOS】“hyper更新”微信小程序【只适用于hyperOS】 下载KernelSU刷机所需程序和驱动文件 开始刷机设置手机第一种刷机方式【KMI】推荐提取boot或init_boot分区 第二种刷机方式【GKI】不推荐 结语 前言 刷机需…...
棒球和垒球区别·棒球1号位
棒球运动和垒球运动的区别主要体现在以下几个方面: 1. 用球差异:垒球比棒球大且重。棒球的直径大约是7.3厘米,重量通常在145克左右,外皮由皮革制成,质地较硬。而垒球的直径为9.7厘米,重量大约为180克左右&a…...
Redis|持久化
文章目录 总体介绍RDB(Redis DataBase)官网介绍案例演示优势劣势如何检查修复 dump.rdb 文件哪些情况下会触发 RDB 快照如何禁用快照RDB 优化配置项详解小总结 AOF(Append Only File)官网介绍是什么能干嘛AOF 持久化工作流程AOF 缓…...
UE5销毁Actor,移动Actor,简单的空气墙的制作
1.销毁Actor 1.Actor中存在Destory()函数和Destoryed()函数 Destory()函数是成员函数,它会立即标记 Actor 为销毁状态,并且会从场景中移除该 Actor。它会触发生命周期中的销毁过程,调用 Destroy() 后,Actor 立即进入销毁过程。具体…...
蓝桥杯备赛-迷宫-BFS
这是一个关于二维迷宫的题目。我们要从迷宫的起点 S 走到终点 E,每一步我们只能选择上下左右四个方向中的一个前进一格。 W 代表墙壁,是不能进入的位置,除了墙壁以外的地方都可以走。迷宫内的 D 代表一道上锁的门,只有在持有钥匙的…...
设计模式 之 工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)(C++)
文章目录 C 工厂模式引言一、简单工厂模式概念实现步骤示例代码优缺点 二、工厂方法模式概念实现步骤示例代码优缺点 三、抽象工厂模式概念实现步骤示例代码优缺点 C 工厂模式 引言 在 C 编程中,对象的创建是一个常见且基础的操作。然而,当项目规模逐渐…...
Windows前端开发IDE选型全攻略
Windows前端开发IDE选型全攻略 一、核心IDE对比矩阵 工具名称最新版本核心优势适用场景推荐指数引用来源VS Code2.3.5轻量级/海量插件/跨平台/Git深度集成全栈开发/中小型项目⭐⭐⭐⭐⭐14WebStorm2025.1智能提示/框架深度支持/企业级调试工具大型项目/专业前端团队⭐⭐⭐⭐47…...
大模型训练中的数据不平衡问题及其解决策略
目录 大模型训练中的数据不平衡问题及其解决策略 一、数据不平衡问题的影响 二、处理数据不平衡问题的方法 1. 过采样(Oversampling) 2. 欠采样(Undersampling) 3. 代价敏感学习(Cost-Sensitive Learning…...
Flask应用实战经验总结:使用工厂函数创建app与uWSGI服务部署启动失败解决方案
在 Flask 应用开发中,使用工厂函数创建应用实例,并借助 uWSGI 服务进行部署,是常见且高效的组合。 然而,在实际操作过程中,uWSGI 配置文件与应用启动函数之间的关系复杂,容易引发各种问题。 本文将详细探…...
基于Spring Boot的党员学习交流平台设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
TCP/IP的分层结构、各层的典型协议,以及与ISO七层模型的差别
1. TCP/IP的分层结构 TCP/IP模型是一个四层模型,主要用于网络通信的设计和实现。它的分层结构如下: (1) 应用层(Application Layer) 功能:提供应用程序之间的通信服务,处理特定的应用细节。 典型协议&am…...
【2025-02-25】基础算法:二分查找(一)
📝前言说明: ●本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,主要跟随B站博主灵茶山的视频进行学习,专栏中的每一篇文章对应B站博主灵茶山的一个视频 ●题目主要为B站视频内涉及的题目以及B站视频中提到的“课后作业”。…...
WebRTC解析
一、WebRTC 协议概述 WebRTC(Web Real-Time Communication)是由 Google 发起并成为 W3C 标准的实时音视频通信技术,核心特点: 零插件:浏览器原生支持端到端加密(SRTP DTLS)P2P 优先架构&…...
BERT模型详解及代码复现
架构设计 BERT模型的架构设计是其成功的关键之一,它巧妙地融合了Transformer架构的优势,并针对自然语言处理任务进行了优化。具体来说,BERT的架构主要由三个模块组成: Embedding模块 :负责将输入的文本转换为模型可处理的向量表示。该模块由三种Embedding组成: Token Em…...
如何在 SpringBoot 项目使用 Redis 的 Pipeline 功能
本文是博主在批量存储聊天中用户状态和登陆信息到 Redis 缓存中时,使用到了 Pipeline 功能,并对此做出了整理。 一、Redis Pipeline 是什么 Redis 的 Pipeline 功能可以显著提升 Redis 操作的性能,性能提升的原因在于可以批量执行命令。当我…...
Python Django系列—入门实例
我们假定你已经阅读了 安装 Django。你能知道 Django 已被安装,且安装的是哪个版本,通过在命令提示行输入命令(由 $ 前缀)。 $ python -m django --version 如果这行命令输出了一个版本号,证明你已经安装了此版本的…...
2024年第十五届蓝桥杯青少 图形化编程(Scratch)省赛中级组真题——截取递增数
截取递增数 背景信息 递增数:如果一个大于9的正整数各个数位上的数,从左到右是逐渐变大的,那么就称这个数为递增数。 例如124、248 是递增数。 给你一个不含0的九位数,请找出从这个九位数中能截取出的所有递增数。例如:115367…...
