使用 EmbeddingBag 和 Embedding 完成词嵌入

news2024/11/17 5:46:10

🍨 本文为[🔗365天深度学习训练营学习记录博客\n🍦 参考文章:365天深度学习训练营\n🍖 原作者:[K同学啊 | 接辅导、项目定制]\n🚀 文章来源:[K同学的学习圈子](https://www.yuque.com/mingtian-fkmxf/zxwb45)

使用 EmbeddingBagEmbedding 完成词嵌入,首先需要处理文档中的文本,将其转换为适合进行词嵌入的格式,涉及到以下步骤:

  1. 文本清洗:移除文档中的特殊字符和标点符号,将文本统一为小写(如果适用)。
  2. 分词:将文本分割成单词或标记(tokens)。
  3. 建立词汇表:从分词后的文本中创建一个词汇表,每个唯一的单词对应一个索引。
  4. 文本向量化:将文本转换为数字形式,以便进行嵌入处理。

第二步,使用 EmbeddingBagEmbedding 层进行词嵌入。EmbeddingBag 层适用于处理变长的文本,它会计算所有嵌入向量的平均值或和。而 Embedding 层适用于单个单词或固定长度的序列。

目标文件:

实现代码: 

from collections import Counter
import torch
import torch.nn as nn
import re

# 清洗文本并进行分词
def tokenize(text):
    # 移除特殊字符和标点,并转换为小写
    text = re.sub(r'[^\w\s]', '', text).lower()
    # 分词
    return text.split()

# 创建词汇表
def create_vocab(text_tokens):
    vocab = Counter(text_tokens)
    vocab = sorted(vocab, key=vocab.get, reverse=True)
    vocab_to_int = {word: ii for ii, word in enumerate(vocab, 1)} # 索引从1开始
    return vocab_to_int

# 将文本转换为数字形式
def text_to_int(tokens, vocab_to_int):
    return [vocab_to_int[word] for word in tokens if word in vocab_to_int]

# 定义Embedding和EmbeddingBag层
def define_embedding_layers(vocab_size, embedding_dim=100):
    embedding = nn.Embedding(num_embeddings=vocab_size, embedding_dim=embedding_dim)
    embedding_bag = nn.EmbeddingBag(num_embeddings=vocab_size, embedding_dim=embedding_dim, mode='mean')
    return embedding, embedding_bag

# 读取文件内容
file_path = 'D:/任务文件 (1).txt'
with open(file_path, 'r', encoding='utf-8') as file:
    file_content = file.read()

# 文本清洗和分词
tokens = tokenize(file_content)

# 创建词汇表
vocab_to_int = create_vocab(tokens)

# 将文本转换为数字形式
int_text = text_to_int(tokens, vocab_to_int)

# 定义嵌入层参数
embedding_dim = 100
vocab_size = len(vocab_to_int) + 1

# 定义Embedding和EmbeddingBag层
embedding, embedding_bag = define_embedding_layers(vocab_size, embedding_dim)

# 转换为tensor以供嵌入层使用
input_tensor = torch.tensor([int_text], dtype=torch.long)

# 使用Embedding和EmbeddingBag进行词嵌入
embedded = embedding(input_tensor)
embedded_bag = embedding_bag(input_tensor)

# 打印结果
print("Embedding shape:", embedded.shape)
print("EmbeddingBag shape:", embedded_bag.shape)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

索引策略-多列索引

一. 前言 当我们对多列索引的理解不够深刻的时候,往往会为每个列创建独立的索引或者按照错误的顺序创建多列索引。 二. 案例说明 问题一: 为每个列创建独立索引 CREATE TABLE t(c1 INT,c2 INT,c3 INT,KEY(c1),KEY(c2),KEY(c3) );这种索引策略,一般都是由于人们听到一些专家诸…

uniapp h5 发行后 微信第二次打开网址 页面白屏

发行后把网址给客户,第一次可以正常登录打开,第二次打开白屏 原因:第一次打开时没有token,所以跳转登录页,可以正常访问 第二次打开时有token,但是网址根目录没有配置默认页面,所以白屏 解决…

SAP PI之MessageMapping

下图是ESR配置中各种对象的关联关系,注意OperationMapping和MessageMapping的方向性 MsgMapping是两个MassageType之间的关系,用于ServiceInterface的OperationMapping中发送和接收方在Request和Response结构之间的映射,如果ServiceInterface…

他们说 GPT Store 像应用商店,我却看到了微信小程序的影子

List item 昨天,GPT Store 终于上线。 早在 2023 年 11 月的开发者大会上,Sam Altman 就已经对外介绍了 GPT Store,随后而来的内部「宫斗」显然拖慢了 GPT 商店「剪彩挂牌」的进度。但这段时间以来,GPTs 的热度并未消退&#xf…

怎么批量修改照片尺寸?这些软件帮你轻松搞定

怎么批量修改照片尺寸?对于需要进行大量照片尺寸修改的用户来说,手动一张一张调整不仅效率低下,而且还可能会造成精度和质量上的损失。这时,一款好的批量修改照片尺寸软件就显得尤为重要。有许多优秀的软件可以满足这一需求&#…

工业相机相关概念词介绍:ISP算法、线阵相机、常用术语

工业相机相关概念词介绍:ISP算法、线阵相机、常用术语 ISP基本框架及算法介绍相机的常用设置50个常用术语 0. ISP基本框架及算法介绍 ISP(Image Signal Processor),即图像处理,主要作用是对前端图像传感器输出的信号做后期处理&#xff0c…

一文玩转Go语言中的面向对象编程~

温故而知新:什么是面向对象 面向对象(Object-Oriented)是一种计算机编程的方法和思想,它将程序中的数据(对象)和操作(方法)组织成一个个相互关联和交互的对象。对象是现实世界中的事…

系分笔记数据库反规范化、SQL语句和大数据

文章目录 1、概要2、反规范化3、大数据4、SQL语句5、总结 1、概要 数据库设计是考试重点,常考和必考内容,本篇主要记录了知识点:反规范化、SQL语句及大数据。 2、反规范化 数据库遵循范式的设计,使得多表查询和连接表查询较多的时…

透过历史的琉璃之窗:古代玻璃制品成分解析--2022年国赛C题获奖论文思考

问题一:数据预处理------>剔除处理无效数据 转化完美成分数据----定和为1 中心化对数比变换------消除定和限制对后续分析的影响 类别量化分析相关性 第1小问------对超过20%的比例期望计数小于5的组别---------Pearson卡方检验法 对不满足卡方前提的组别----…

数据分析师面试必备,数据分析面试题集锦(六)

经常会被问到,“数据分析需要学习什么技能?”,“针对实际的业务场景,如何使用数据分析工具去分析?”基于此作者总结数据分析面试常用的问题,面试内容包括技能应用篇:EXCEL、SQL、Python、BI工具…

Maven_下载_安装_配置

文章参考:https://zhuanlan.zhihu.com/p/615382243 Maven简介 Maven 是 Apache 软件基金会的一个开源项目,是一个优秀的项目构建工具,它用来帮助开发者管理项目中的 jar,以及 jar 之间的依赖关系、完成项目的编译、测试、打包和发布等工作。 maven优点:…

外卖骑手与行人之间的非零和博弈

一、背景 自2013年成立以来,美团外卖一直保持着高速增长,通过提供便捷、高效的外卖服务,满足了大量消费者的需求。美团外卖的服务不仅限于基础的送餐服务,还涵盖了多种生活服务,如超市便利、药品配送等,满…

数据库和表的操作

文章目录 前言一、库的操作创建数据库字符集和校验规则操纵数据库查看数据库显示创建语句修改数据库删除数据库备份和恢复数据库还原查看连接情况 二、表的操作创建表查看表结构修改表修改表名添加一列修改某一列属性删除某一列 删除表 前言 一、库的操作 创建数据库 语法&am…

基于springboot+vue的个人健康管理系统(有文档、Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

大创项目推荐 深度学习猫狗分类 - python opencv cnn

文章目录 0 前言1 课题背景2 使用CNN进行猫狗分类3 数据集处理4 神经网络的编写5 Tensorflow计算图的构建6 模型的训练和测试7 预测效果8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习猫狗分类 ** 该项目较为新颖&a…

小魔推行业玩法:生活美容怎么做短视频矩阵?

如今每个实体老板都想让自己生意做的更好,那就需要有更多获取流量的方式,获得大量的同城曝光;在市场内卷的状况下,通过短视频来做门店引流无疑是绝佳的方式,让更多同城的用户知晓自己的门店,这个时候通过小…

flask web服务器:运行在云服务器上的最简单的web服务器

上期文章我们分享了flask的基础知识以及如何安装flask,当你安装完成flask后,我们就可以打造自己的web服务器了。 首先我们打印最简单的hello world,并在浏览器中显示 from flask import Flask app Flask(__name__)app.route(/) def index():return he…

【网络安全】【密码学】【北京航空航天大学】实验二、数论基础(中)【C语言和Java实现】

实验二、数论基础(中) 一、实验内容 1、扩展欧几里得算法(Extended Euclid’s Algorithm) (1)、算法原理 已知整数 a , b ,扩展的欧几里得算法可以在求得 a , b 的最大公约数的同时,找到一对…

顺序图作业

顺序图作业 一. 简答题(共7题,100分) (简答题) 交互是什么?请举 2-3 个交互的实际例子。 正确答案: 一次交互就是指在特定语境中, 为了实现某一个目标, 而在一组对象之间进行交换的一组 消息所…

字体包大小缩小的软件

Fontmin - 字体子集化方案https://ecomfe.github.io/fontmin/#app