长垣县做网站的,做公司网站要钱吗,asp.net网站开发视频教程,速度最快的wordpress主题#x1f368; 本文为[#x1f517;365天深度学习训练营学习记录博客\n#x1f366; 参考文章#xff1a;365天深度学习训练营\n#x1f356; 原作者#xff1a;[K同学啊 | 接辅导、项目定制]\n#x1f680; 文章来源#xff1a;[K同学的学习圈子](https://www.yuque.co… 本文为[365天深度学习训练营学习记录博客\n 参考文章365天深度学习训练营\n 原作者[K同学啊 | 接辅导、项目定制]\n 文章来源[K同学的学习圈子](https://www.yuque.com/mingtian-fkmxf/zxwb45) 使用 EmbeddingBag 和 Embedding 完成词嵌入首先需要处理文档中的文本将其转换为适合进行词嵌入的格式涉及到以下步骤
文本清洗移除文档中的特殊字符和标点符号将文本统一为小写如果适用。分词将文本分割成单词或标记tokens。建立词汇表从分词后的文本中创建一个词汇表每个唯一的单词对应一个索引。文本向量化将文本转换为数字形式以便进行嵌入处理。
第二步使用 EmbeddingBag 和 Embedding 层进行词嵌入。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, keyvocab.get, reverseTrue)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_dim100):embedding nn.Embedding(num_embeddingsvocab_size, embedding_dimembedding_dim)embedding_bag nn.EmbeddingBag(num_embeddingsvocab_size, embedding_dimembedding_dim, modemean)return embedding, embedding_bag# 读取文件内容
file_path D:/任务文件 (1).txt
with open(file_path, r, encodingutf-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], dtypetorch.long)# 使用Embedding和EmbeddingBag进行词嵌入
embedded embedding(input_tensor)
embedded_bag embedding_bag(input_tensor)# 打印结果
print(Embedding shape:, embedded.shape)
print(EmbeddingBag shape:, embedded_bag.shape)