word2vec and glove优缺点

2024-08-20 21:18
文章标签 word2vec glove 优缺点

本文主要是介绍word2vec and glove优缺点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

传统方法

  • 假设我们有一个足够大的语料库(其中包含各种各样的句子,比如维基百科词库就是很好的语料来源)

  • 那么最笨(但很管用)的办法莫过于将语料库里的所有句子扫描一遍,挨个数出每个单词周围出现其它单词的次数,做成下面这样的表格就可以了。词频表

  • 假设矩阵是5W*5W维,矩阵运算量巨大。假设矩阵的每个数字都用标准32位Int表示,需要10,000,000,000个byte,也就是10GB的内存(且随着词汇量增加程平方倍增长,汉语常用词汇大约有20万个)。

  • 传统方法对于大规模语料,时空上的开销的难以接受。

  • 可以通过SVD化简,SVD的几何意义实际上是通过线性变换来找到最能表达矩阵信息的一组正交基。

    • 优点 
      1. 训练速度很快
      2. 能够实现word embedding
    • 缺点 
      1. 因为仅关注cooccurence,word vector包含的词向量语义信息有限,仅仅能进行词语相似度计算等有限的任务。

word2vec

  • 所需要的基础知识

    1. Hierarchical Softmax是用输出值的霍夫曼编码代替原本的One-Hot向量,用霍夫曼树替代Softmax的计算过程。
    2. Negative Sampling(简称NEG)使用随机采用替代Softmax计算概率,它是另一种更严谨的抽样模型NCE的简化版本。
  • 顾名思义,Word2Vec就是把单词转换成向量。它本质上是一种单词聚类的方法,是实现单词语义推测、句子情感分析等目的一种手段。

  • Word2Vec 的基本思想是把自然语言中的每一个词,表示成一个统一意义统一维度的短向量。

  • word2vec适合的情况就是对于一个序列的数据,在序列局部数据间存在着很强的关联。典型的就是文本的序列了,邻近的词之间关联很强,甚至可以通过一个词的上下文大概预测出中间那个词是什么。

  • 选取训练后的单词向量的其中任意3个维度,放到坐标系中展示,会发现语义相似的词汇在空间坐标中的位置会十分接近,而语义无关的词之间则相距较远。这种性质可以用来对单词和句子进行更加泛化的分析。 
    词向量的三维空间表示

  • 一些研究还发现,计算有相似关系的单词之间的位移向量也会十分相似,例如从“Man”到“Wonman”的向量,与从“King”到“Queen”之间的向量几乎相同。 
    词向量的词义关联

  • 至于向量中的每个维度具体是什么意义,没人知道,也无需知道,也许对应于世界上的一些最基本的概念。

  • 训练 Word2Vec 的思想,是利用一个词和它在文本中的上下文的词,这样就省去了人工去标注。

    • CBOW用环境词预测中心词,得到逻辑回归网络可以用来预测类似“一句话中缺少了一个单词,这个单词最可能是什么”这样的问题。CBOW

      1. 首先预处理数据,把所有需要进行训练的词汇编上序号,比如1-50000
      2. 随机初始化一个维度为50000x50的矩阵,作为待训练的嵌入矩阵
      3. 每次取出一个中心词和它的其中一个环境词(环境词市中心词前后的若干n个词,n越大效果越好,但速度越慢)
      4. 以环境词编号作行数,从词向量矩阵里取出这一行数据(50维向量)
      5. 将这个50维向量作为逻辑回归网络的输入,训练目标是中心词编号相应的One-Hot向量 
        在训练的反向传播时计算,不但更新逻辑回归网络的权重矩阵,还要往前多传递一级,把取出的50维向量的值也根据目标梯度进行更新
      6. 将更新过的50维向量重新更新到嵌入矩阵相应的行
      7. 重复以上过程,直到所有的中心词都已经被遍历一遍,此时嵌入矩阵值的计算就完成了
    • Skip-gram 训练方法,它的做法是,将一个词所在的上下文中的词作为输出,而那个词本身作为输入,也就是说,给出一个词,希望预测可能出现的上下文的词。skip-gram

    • skip-gram 方法应用更广泛(训练数据较大时候效果比CBOW更好一点)

  • 一个人读书时,如果遇到了生僻的词,一般能根据上下文大概猜出生僻词的意思,而 Word2Vec 正是很好的捕捉了这种人类的行为。

  • 缺点:context 很小,没有使用全局的cooccur,所以实际上对cooccur的利用很少


GloVe

  • 问题:词义相近的词对贡献次数多,词义差得比较远的词对共现次数比较少,但其实他们的区分度并不明显。能否用共现之间的比值来增大区分度?

  • Motivation:对word-pair cooccur进行建模,拟合不同word-pair的cooccur之间的差异。


区别

  • 两者最直观的区别在于,word2vec是“predictive”的模型,而GloVe是“count-based”的模型。具体是什么意思呢?

  • 不采用 negative sampling 的word2vec 速度非常快,但是准确率仅有57.4%。

    • 只告诉模型什么是有关的,却不告诉它什么是无关的,模型很难对无关的词进行惩罚从而提高自己的准确率
    • 在python的gensim这个包里,gensim.models.word2vec.Word2Vec默认是不开启negative sampling的,需要开启的话请设置negative参数,如何设置文档中有明确说明gensim: models.word2vec
    • 当使用了negative sampling之后,为了将准确率提高到68.3%,word2vec就需要花较长的时间了(8h38m
  • 相比于word2vec,因为golve更容易并行化,所以速度更快,达到67.1%的准确率,只需要花4h12m。

  • 由于GloVe算法本身使用了全局信息,自然内存费的也就多一些,相比之下,word2vec在这方面节省了很多资源


参考文献

白话Word2Vec——简书

CBOW训练过程例子

Word Embeddings

GloVe

这篇关于word2vec and glove优缺点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091193

相关文章

基于Python的自然语言处理系列(1):Word2Vec

在自然语言处理(NLP)领域,Word2Vec是一种广泛使用的词向量表示方法。它通过将词汇映射到连续的向量空间中,使得计算机可以更好地理解和处理文本数据。本系列的第一篇文章将详细介绍Word2Vec模型的原理、实现方法及应用场景。 1. Word2Vec 原理         Word2Vec模型由Google的Tomas Mikolov等人在2013年提出,主要有两种训练方式

脏页标记技术的优缺点详解

脏页标记技术的优缺点 一、引言 在数据库系统中,脏页标记技术是一种用于管理数据页修改状态的重要机制。它能够帮助数据库系统有效地跟踪哪些数据页被修改过,以便在适当的时候将这些脏页写入磁盘,保证数据的一致性和持久性。然而,脏页标记技术也并非完美无缺,它既有优点也有一些潜在的缺点。 二、脏页标记技术的优点 (一)提高数据一致性 确保数据完整性 脏页标记使得数据库系统能够清楚地知道哪些数据页已经

多款式随身WiFi如何挑选,USB随身WiFi、无线电池随身WiFi、充电宝随身WiFi哪个好?优缺点分析!

市面上的随身WiFi款式多样琳琅满目,最具代表性的就是USB插电款、无线款和充电宝款。今天就来用一篇文章分析一下这三种款式的优缺点。 USB插电款 优点:便宜,无需充电,在有电源的地方可以随时随地插电使用,比如中兴的USB随身WiFi。 缺点:无电源的情况下,无法带出门使用,部分品牌考虑到这个问题,会配备一个充电仓,这个充电仓相对来说就有点累赘了。网速上也不太稳定,波动比较大。

第23周:使用Word2vec实现文本分类

目录 前言 一、数据预处理 1.1 加载数据 1.2 构建词典 1.3 生成数据批次和迭代器 二、模型构建 2.1 搭建模型 2.2 初始化模型 2.3 定义训练和评估函数 三、训练模型 3.1 拆分数据集并运行模型 3.2 测试指定数据 总结 前言 🍨 本文为[🔗365天深度学习训练营]中的学习记录博客🍖 原作者:[K同学啊] 说在前面 本周任务

PowerBI DAX中计算列和度量值之间有什么优缺点?

在Power BI中,度量值(Measures)和新建列(Calculated Columns)都是使用DAX(数据分析表达式)来创建的,它们都可以用来进行数据计算和分析。但是,它们在使用场景、性能和交互性方面有所不同。 以下是度量值和新建列的优缺点: 度量值(Measures) 优点: 性能优化:度量值在内存中进行计算,通常比基于行的计算(如新建列)更快。参与视觉对象

全面解析时间序列算法:原理、应用场景与优缺点

时间序列分析是预测分析中一个重要领域,广泛应用于金融市场、经济预测、物联网数据、库存管理等多个领域。随着时间序列数据的复杂性增加,单纯依靠传统统计方法已经难以满足实际需求。本文将从传统统计方法、机器学习方法到深度学习方法,对时间序列分析的主流算法进行全面解析,深入探讨其原理、适用场景、优缺点,帮助大家更好地理解和选择合适的算法。 一、传统统计方法 1. 自回归模型(AR, Autoregr

每天一个数据分析题(五百二十七)- word2vec模型

Word2vec,是一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。关于word2vec模型,下面说法不正确的是: A. 得到的词向量维度小,可以节省存储和计算资源 B. 考虑了全局语料库的信息 C. 无法解决多义词的问题 D. 可以表示词和词之间的关系 数据分析认证考试介绍:点击进入 数据分析考试大纲下载 题目来源于CDA模拟题库 点

const与#define的优缺点

1.define由预处理程序处理,const由编译程序处理 2.#define不分内存,因为它是预编译指令,编译前进行了宏替换。const 不一定?某种说法,Const常量是占有内存的被“冻结”了的变量 3.const定义常量是有数据类型的,这样const定义的常量编译器可以对其进行数据静态类型安全检查,而#define宏定义的常量却只是进行简单的字符替换,没有类型安全检查,且有时还会产生边际

word2vec 两个模型,两个加速方法 负采样加速Skip-gram模型 层序Softmax加速CBOW模型 item2vec 双塔模型 (DSSM双塔模型)

推荐领域(DSSM双塔模型): https://www.cnblogs.com/wilson0068/p/12881258.html   word2vec  word2vec笔记和实现 理解 Word2Vec 之 Skip-Gram 模型 上面这两个链接能让你彻底明白word2vec,不要搞什么公式,看完也是不知所云,也没说到本质. 目前用的比较多的都是Skip-gram模型 Go

word2vec 自己训练中文语料

(1) 准备文本 可以用爬虫爬,也可以去下载,必须是全文本。 (2)对数据进行分词处理 因为英文但此只见是空格所以不需要分词,二中文需要分词, 中文分词工具还是很多的,我自己常用的: - 中科院NLPIR - 哈工大LTP - 结巴分词 注意:分词后保存的文件将会作为word2vec的输入文件进行训练 (3)训练与实验 python 需要先安装gensim,参考http://bl