首页 > 其他分享 >自然语言处理预训练——词的相似性和类比任务

自然语言处理预训练——词的相似性和类比任务

时间:2023-11-18 16:34:26浏览次数:46  
标签:zip 训练 类比 glove.6 d2l 相似性 自然语言 DATA 向量

在 14.4节中,我们在一个小的数据集上训练了一个word2vec模型,并使用它为一个输入词寻找语义相似的词。实际上,在大型语料库上预先训练的词向量可以应用于下游的自然语言处理任务,这将在后面的 15节中讨论。为了直观地演示大型语料库中预训练词向量的语义,让我们将预训练词向量应用到词的相似性和类比任务中

 

加载预训练词向量

以下列出维度为50、100和300的预训练GloVe嵌入,可从GloVe网站下载。预训练的fastText嵌入有多种语言。这里我们使用可以从fastText网站下载300维度的英文版本(“wiki.en”)。

#@save
d2l.DATA_HUB['glove.6b.50d'] = (d2l.DATA_URL + 'glove.6B.50d.zip',
                                '0b8703943ccdb6eb788e6f091b8946e82231bc4d')

#@save
d2l.DATA_HUB['glove.6b.100d'] = (d2l.DATA_URL + 'glove.6B.100d.zip',
                                 'cd43bfb07e44e6f27cbcc7bc9ae3d80284fdaf5a')

#@save
d2l.DATA_HUB['glove.42b.300d'] = (d2l.DATA_URL + 'glove.42B.300d.zip',
                                  'b5116e234e9eb9076672cfeabf5469f3eec904fa')

#@save
d2l.DATA_HUB['wiki.en'] = (d2l.DATA_URL + 'wiki.en.zip',
                           'c1816da3821ae9f43899be655002f6c723e91b88')

 为了加载这些预训练的GloVe和fastText嵌入,我们定义了以下TokenEmbedding类。

下面我们加载50维GloVe嵌入(在维基百科的子集上预训练)。创建TokenEmbedding实例时,如果尚未下载指定的嵌入文件,则必须下载该文件。

glove_6b50d = TokenEmbedding('glove.6b.50d')
Downloading ../data/glove.6B.50d.zip from http://d2l-data.s3-accelerate.amazonaws.com/glove.6B.50d.zip...

 输出词表大小。词表包含400000个词(词元)和一个特殊的未知词元。

len(glove_6b50d)
400001

我们可以得到词表中一个单词的索引,反之亦然。

glove_6b50d.token_to_idx['beautiful'], glove_6b50d.idx_to_token[3367]
(3367, 'beautiful')

 

应用预训练词向量

使用加载的GloVe向量,我们将通过下面的词相似性和类比任务中来展示词向量的语义。

词相似性

 

  1. 计算输入向量 x 与数据集 W 中各个向量的余弦相似度。
  2. 对余弦相似度进行归一化处理,以避免数值不稳定性。
  3. 选取相似度最高的前 k 个向量,并返回它们的索引和相似度值。

词类比

 

 

总结

  • 在实践中,在大型语料库上预先练的词向量可以应用于下游的自然语言处理任务。

  • 预训练的词向量可以应用于词的相似性和类比任务。

标签:zip,训练,类比,glove.6,d2l,相似性,自然语言,DATA,向量
From: https://www.cnblogs.com/yccy/p/17840685.html

相关文章

  • 自然语言处理预训练——子词嵌入
    在英语中,“helps”“helped”和“helping”等单词都是同一个词“help”的变形形式。“dog”和“dogs”之间的关系与“cat”和“cats”之间的关系相同,“boy”和“boyfriend”之间的关系与“girl”和“girlfriend”之间的关系相同。在法语和西班牙语等其他语言中,许多动词有40多种变......
  • c5w2_自然语言处理与词嵌入
    自然语言处理与词嵌入词嵌入one-hot向量表示了每个词在词汇表中的位置,但是每个one-hot向量的内积为0,不能表示出每个词之间的相互关系。Iwantaglassoforangejuice.Iwantaglassofapple__.例如,对于上述的这样一句话,通过学习算法可能知道在orange后面填入juice是一......
  • 自然语言处理预训练——全局向量的词嵌入
    带全局语料统计的跳元模型   GloVe模型  从条件概率比值理解GloVe模型 总结诸如词-词共现计数的全局语料库统计可以来解释跳元模型。交叉熵损失可能不是衡量两种概率分布差异的好选择,特别是对于大型语料库。GloVe使用平方损失来拟合预先计算的全局语料库......
  • 自然语言处理预训练——用于预训练词嵌入的数据集
    读取数据集  下采样 提取中心词和上下文词 下面的get_centers_and_contexts函数从corpus中提取所有中心词及其上下文词。它随机采样1到max_window_size之间的整数作为上下文窗口。对于任一中心词,与其距离不超过采样上下文窗口大小的词为其上下文词。 #@savedefge......
  • 自然语言处理预训练——近似训练
    近似训练是一种用于加速训练过程的技术。 负采样负采样是在训练过程中对目标函数进行简化的一种方法。在传统的训练中,需要计算整个词汇表的概率分布,这在大规模任务中会非常耗时。负采样的思想是通过随机采样一小部分负例来近似计算全局的目标函数。具体来说,对于每个正例(例如......
  • 智能语音和自然语言处理技术
    一、定义智能语音和自然语言处理技术是指通过计算机技术实现人机交互的一种技术。它可以让计算机和人类之间进行自然而流畅的交流,从而实现更高效、更便捷、更智能的信息交流和处理。智能语音和自然语言处理技术主要包括语音识别、语音合成、自然语言理解、自然语言生成、文本分类、......
  • setTimeout可以将字符串当成代码执行,类比eval函数。当遇到setTimeout或者SetInterval,
    请问以下JS代码的输出顺序是?letdate=newDate()setTimeout(()=>{console.log('1')},2000)setTimeout('console.log(2)',1000);setTimeout(function(){console.log('3')},1500);while((newDate()-date)<3000){}A报错B......
  • 大模型训练,推动自然语言处理发展的强大引擎
    近年来,自然语言处理(NLP)领域取得了显著的进步,其中最引人注目的成就之一是基于Transformer架构的预训练语言模型。这些模型,如GPT-3,在各种NLP任务中都取得了突破性的成果,包括问答系统。然而,尽管这些模型具有强大的性能,但它们通常需要大量的计算资源和数据来进行训练,这限制了它们的可扩......
  • 无监督学习的集成方法:相似性矩阵的聚类
    在机器学习中,术语Ensemble指的是并行组合多个模型,这个想法是利用群体的智慧,在给出的最终答案上形成更好的共识。这种类型的方法已经在监督学习领域得到了广泛的研究和应用,特别是在分类问题上,像RandomForest这样非常成功的算法。通常应用一些投票/加权系统,将每个单独模型的输出组......
  • 自然语言处理(NLP)的研究方向
    自然语言处理(NLP)的研究方向包括但不限于以下方面:词法分析:对文本进行分词、词性标注等基本处理,是后续处理的基础。句法分析:研究句子的语法结构,对句子进行解析,如依存句法分析。语义理解:分析文本的语义,理解文本表达的含义和情感,是自然语言处理的核心问题。信息抽取:从大量非结构......