首页 > 其他分享 >自然语言处理预训练——用于预训练词嵌入的数据集

自然语言处理预训练——用于预训练词嵌入的数据集

时间:2023-11-17 12:12:33浏览次数:36  
标签:嵌入 训练 contexts self len window 自然语言 centers size

读取数据集 

 

下采样

 

提取中心词和上下文词 

下面的get_centers_and_contexts函数从corpus中提取所有中心词及其上下文词。它随机采样1到max_window_size之间的整数作为上下文窗口。对于任一中心词,与其距离不超过采样上下文窗口大小的词为其上下文词。

 

#@save
def get_centers_and_contexts(corpus, max_window_size):
    """返回跳元模型中的中心词和上下文词"""
    centers, contexts = [], []
    for line in corpus:
        # 要形成“中心词-上下文词”对,每个句子至少需要有2个词
        if len(line) < 2:
            continue
        centers += line
        for i in range(len(line)):  # 上下文窗口中间i
            window_size = random.randint(1, max_window_size)
            indices = list(range(max(0, i - window_size),
                                 min(len(line), i + 1 + window_size)))
            # 从上下文词中排除中心词
            indices.remove(i)
            contexts.append([line[idx] for idx in indices])
    return centers, contexts

 

小批量加载训练实例

 

整合代码(以PyTorch为例)

#@save
def load_data_ptb(batch_size, max_window_size, num_noise_words):
    """下载PTB数据集,然后将其加载到内存中"""
    num_workers = d2l.get_dataloader_workers()
    sentences = read_ptb()
    vocab = d2l.Vocab(sentences, min_freq=10)
    subsampled, counter = subsample(sentences, vocab)
    corpus = [vocab[line] for line in subsampled]
    all_centers, all_contexts = get_centers_and_contexts(
        corpus, max_window_size)
    all_negatives = get_negatives(
        all_contexts, vocab, counter, num_noise_words)

    class PTBDataset(torch.utils.data.Dataset):
        def __init__(self, centers, contexts, negatives):
            assert len(centers) == len(contexts) == len(negatives)
            self.centers = centers
            self.contexts = contexts
            self.negatives = negatives

        def __getitem__(self, index):
            return (self.centers[index], self.contexts[index],
                    self.negatives[index])

        def __len__(self):
            return len(self.centers)

    dataset = PTBDataset(all_centers, all_contexts, all_negatives)

    data_iter = torch.utils.data.DataLoader(
        dataset, batch_size, shuffle=True,
        collate_fn=batchify, num_workers=num_workers)
    return data_iter, vocab

 

总结 

  • 高频词在训练中可能不是那么有用。我们可以对他们进行下采样,以便在训练中加快速度。

  • 为了提高计算效率,我们以小批量方式加载样本。我们可以定义其他变量来区分填充标记和非填充标记,以及正例和负例。

 

标签:嵌入,训练,contexts,self,len,window,自然语言,centers,size
From: https://www.cnblogs.com/yccy/p/17838368.html

相关文章

  • 自然语言处理预训练——近似训练
    近似训练是一种用于加速训练过程的技术。 负采样负采样是在训练过程中对目标函数进行简化的一种方法。在传统的训练中,需要计算整个词汇表的概率分布,这在大规模任务中会非常耗时。负采样的思想是通过随机采样一小部分负例来近似计算全局的目标函数。具体来说,对于每个正例(例如......
  • 使用FP8加速PyTorch训练
    现代的人工智能硬件架构(例如,NvidiaHopper,NvidiaAdaLovelace和HabanaGaudi2)中,FP8张量内核能够显著提高每秒浮点运算(FLOPS),以及为人工智能训练和推理工作负载提供内存优化和节能的机会。在这篇文章中,我们将介绍如何修改PyTorch训练脚本,利用NvidiaH100GPU的FP8数据类型的......
  • 手把手教你yolov5训练自己的数据集(代码+教程)
    在这篇博文中,我们对YOLOv5模型进行微调,用于自定义目标检测的训练和推理。目录引言:YOLOv5是什么?YOLOv5提供的模型YOLOv5提供的功能使用YOLOv5进行自定义目标检测训练自定义训练的方法自定义训练代码准备数据集克隆YOLOv5存储库训练小模型(yolov5s)训练YOLOv5中型模型冻结层训练中型Y......
  • 一键整合,万用万灵,Python3.10项目嵌入式一键整合包的制作(Embed)
    我们知道Python是一门解释型语言,项目运行时需要依赖Python解释器,并且有时候需要安装项目中对应的三方依赖库。对于专业的Python开发者来说,可以直接通过pip命令进行安装即可。但是如果是分发给其他的Windows用户,特别是不熟悉Python的人来说,这样过于繁琐。因此最好的办法是连同Pytho......
  • 智能语音和自然语言处理技术
    一、定义智能语音和自然语言处理技术是指通过计算机技术实现人机交互的一种技术。它可以让计算机和人类之间进行自然而流畅的交流,从而实现更高效、更便捷、更智能的信息交流和处理。智能语音和自然语言处理技术主要包括语音识别、语音合成、自然语言理解、自然语言生成、文本分类、......
  • ChatGPT的训练费用以及成功原因
     参考:https://baijiahao.baidu.com/s?id=1772914234034992726&wfr=spider&for=pc  ================================  关于ChatGPT的成功原因,引用国产大模型混战加速,速成幻觉又是一场大厂陪跑赛?中的回答:益于ChatGPT商业和营销方面的成功,能够瞬间让人们目睹了大模型......
  • transformer模型训练、推理过程分析
    复杂度分析推理过程图示DoubleQLORA示意图......
  • 嵌入式系统设计教程(第二版)学习总结1
    计算机系统基础知识1.数据表示 对于任何一种进位计数制,都可以多项式展开;1.10进制转2进制:整数部分“除2取余”,小数部分“乘2取整”   2.二进制,十六进制,八进制之间的对应关系: 3.数值型数据表示:无符号数:全部二进制位表示数值,没有符号位有符号数:最高位0表示正数,1表......
  • [整理]赛前训练
    第一场A是简单题,注意到矩形形成的是一个单调的阶梯,我们只需要排序然后枚举计算即可。需要注意处理一下完全包含的情况,用二维数点即可。(找单调性)B见到树上路径,想到拆分成点到根的异或和。注意到每个点的异或和确定了,边权就都确定了(钦定1的异或和是0),这样就和树的结构无关了,直......
  • 损失函数---训练集降低,验证集升高
     损失函数在训练集下降而在验证集上升,通常被称为过拟合(overfitting)的现象。这意味着模型在训练数据上表现得很好,但在新的、未见过的数据上表现较差。过拟合可能是由于模型过于复杂,以至于学到了训练数据中的噪声或细微特征,而这些特征在验证数据中并不普遍存在。 我通过降低学......