torchtext处理文本数据——将文本变为embedding(学习三)

这篇博客是在之前的基础上构建完整的将 文本-> 下标->embedding

之前的完整代码

from torchtext import data
import torch


def split_tokenize(x):  # 传入的x就是一个格子的文本
    return x.split(' ')  # 按空格切分


def country_tokenize(x):  # 这是专门处理国家字段,不分词直接返回结果
    return x  # 比如传入United Kingdom,我们不要切分成['United', 'Kingdom'],这是干嘛呀,我们就直接返回国家名就行


NAME = data.Field()  # 不传tokenize,默认会按照空格分开
COUNTRY = data.Field(tokenize=country_tokenize)
Comment = data.Field(tokenize=split_tokenize, init_token='<SOS>', eos_token='<EOS>')
fields = [('name', NAME), ('country', COUNTRY), ('age', None), ('comment', Comment)]
train_set = data.TabularDataset.splits(
    path='./',
    train='my_csv_text.csv',
    format='csv',
    skip_header=True,
    fields=fields)
train_set = train_set[0]
print("分词结果:", train_set.examples[0].comment)
from gensim.models import Word2Vec


def train_word2vec(sentences):
    model = Word2Vec(sentences, vector_size=256, min_count=1, window=5, sg=0)
    return model


word2vec_model = train_word2vec([
    train_set.examples[0].comment,
    train_set.examples[1].comment,
])  # 这里训练了一个超级差劲的模型,但是意思就是这个意思
word2vec_model.wv.save_word2vec_format('my_word2vec_format.txt')
from torchtext.vocab import Vectors

vectors = Vectors(name='my_word2vec_format.txt')
Comment.build_vocab(train_set, vectors=vectors)

之前的这部分有任何疑问请参考:torchtext处理文本数据——使用自己的word2vec模型作为词向量建立词表(学习二)

将文本转为下标,将下标借助embedding转为向量

# =========================将文本转为下标=========================
for i in train_set:
    print(i.comment)
    print([Comment.vocab.stoi[_] for _ in i.comment])
# =========================使用embedding的案例=========================
import torch.nn as nn

embedding = nn.Embedding(18, 256)

# 指定嵌入矩阵的初始权重
embedding.weight.data.copy_(Comment.vocab.vectors)
for i in train_set:
    print(i.comment)
    index = [Comment.vocab.stoi[_] for _ in i.comment]  # 这里将文本转为index
    print(embedding(torch.Tensor(index).long()))  # 根据 index得到embedding
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值