深度学习:详解word2vec + 实践操作(包括text2word)

一、白话word2vec

  1. Word2Vec是一种用于自然语言处理(NLP)的机器学习算法,由2012年谷歌提出的文本生成词向量模型,包括CBOW(continous bag of words)和Skip Gram。
      CBOW模型:是通过一个或多个单词的上下文来进行这个词语的预测
      Skip Gram模型:是通过一个或多个单词来进行上下文的预测。
    Word2Vec是一个预训练模型,已经训练好的。但也支持在不重新训练的情况下再继续添加新文本进行训练补充
  2. 为什么要对词进行编码(词向量化)?
      任何数学模型,其输入都需要是数值型的,因为计算机只能理解数字,词语是人类语言的抽象总结,计算机时无法理解的,而在自然语言处理中,我们面对的是文字,而文字是无法直接被数学模型所直接利用的。所以我们需要将文字进行编码,将每一个字符用一个向量进行表示,即把文本分散嵌入到另一个离散空间,,称作分布式表示,又称为词嵌入(word embedding)或词向量
      在word2vec出来之前,我们常用的主要是one hot encoding(独热编码)的方法。
  3. 自己理解:我觉得,我们使用word2vec将一个词语转化为向量,其实就是训练一个神经网络的过程,学习单词之间的位置关系,从而得到每个单词对应的向量表示。而CBOW 和 Skip-gram只是 是 Word2Vec 的两种不同训练方式,并通过它们得到向量矩阵。
  4. 关于具体的CBOW和Skip-gram内部是怎么样的,可以看https://cloud.tencent.com/developer/article/1164487?areaSource=102001.7&traceId=h5OTw1daZ2XfMP8SPzrXU。
  5. Word2Vec算法的核心思想是使用神经网络来学习每个词语的向量表示。在CBOW模型中,输入是上下文中的词语向量,再乘以输入权重矩阵,所得的向量求平均,作为隐藏层向量,再乘以输出权重矩阵,输出是目标词语的向量,在这个过程中不断最小化目标loss。在Skip-gram模型中,输入是目标词语的向量,输出是上下文中的词语向量。(输入层一般使用 one-hot将文字 -> 向量)。
  6. Word2vec预训练模型是通过对大量文本数据进行训练而得到的。在训练过程中,模型会学习单词之间的关系,以及它们在上下文中的出现方式。这些关系和出现方式被编码为向量,使得相似的单词在向量空间中距离更近。
    Word2vec预训练模型是通过对大量文本数据进行训练而得到的,我们可以对它进行两种操作:
    1)词语 -> 向量:我们使用时,将一个文本传入word2vec时,可以将其先分词,再转为向量
    2)微调:使用自己文本对word2vec进行微调
  7. word2vec训练后得到两个权重矩阵,它们都可以作为embedding层,但我们更多的的还是使用输入权重矩阵,而不是输出权重矩阵。
  8. word2vec模型其实也就只有3层而已,输入/输出/隐藏。
  9. 具体应该就是通过文本生成训练数据集进行训练,是的CBOW的上下文推测中心词,Skip-Gram的中心词推测剩下文,不断减少损失,是的从输入层到隐藏层的参数不断更新,最后得到loss最小的参数,训练完成后,再将文本带入,获得隐藏层处的编码即为向量)。
  10. 如何理解word2vec的相似度计算:
    使用word2vec将词语 -》向量,维度由自己设置。我们如何理解这个维度呢?以二维为例,如果词语用二维表示,假设美国的向量为(-0.8,-1.2),中国为(-0.4, 0.7),而亚洲为(-0.3,1.2),这就是各自单词的向量了,那么相似度要如何计算呢?使用余弦相似度计算(即计算两个向量的夹角余弦值来评估他们的相似度),就会发现亚洲和中国比较相似(我们也可以直接画二维x,y轴,也能观察出)。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关的,仅仅与向量的指向方向相关。我们由这个二维拓展到五维,十维同理(尽管我们都没有见过,也不会画高维的向量箭头)。
    因此如果将人和事务表示为向量,我们就可以很容易计算出相似向量之间的关系(一个单词表达成Word Embedding后,便很容易找出语义相近的其它词汇)
  11. 词向量的维度(其实就是隐含层节点数,调用word2vec时可设置)一般情况下要远远小于词语总数 V 的大小,所以 Word2vec 本质上是一种降维操作——把词语从 one-hot encoder 形式的表示降维到10-20维度

二、独热编码、word2vec

  1. 独热编码:对于每一个单词 or 字母 or 汉字,我们用在一个位置为1,其余位置为0的向量进行表示。(用一个很长的向量来表示一个词,向量长度为词典的大小N,每个向量只有一个维度是1,表示该词语在词典的位置,其余维度全部为0)
    以pytorch为例:
      import torch.nn.functional as F
      F.one_hot(word_index, len(vocab))
      说明:
      1)vocab为词典,例如,将一个中文句子/文本划分为一个个汉字时,需要对其进行统计不同单词。第0个位置为第一个汉字,第1个位置为第二个汉字,以此类推(注意相同汉字不能重复出现在词典中,需要确保一个汉字值对应一个位置)。
      2)word_index为句子每个词所对应的词典位置的集合。例如:”我去过北京天安门“ 使用word_index表示为[idx_0,idx_1,,idx_2…]
      3)假设我们的有词表只有10个单词,分别是:今,天,是,你,我,他,买,水,果,家。这里我们分别用one hot encoding的方法来表示每一个词,那么F.one_hot返回有下面的结果:
    在这里插入图片描述
    可以看到对于每一个单词,我们用唯一的一个向量对它进行了表示
  2. 独热编码缺陷:
    1)维度灾难:当文本越大时,词表越大,则表示一个词的向量维度越高,势必加大了任何机器学习模型的计算量,降低了计算效率。
    2)无法度量词语之间的相似度。词向量与词向量之间都是相互独立的;但我们都知道,词与词之间是有一定的联系的,我们无法通过这种词向量得知两个词在语义上是否相似,例如,我们使用余弦相似度来计算任意两个词语之间的相似度,结果会是0,因为每个词之间独立。
  3. word2vec:词向量解决了以上独热编码的缺陷,而词向量主要有以下一些特点:
    1)如果单词量为N,那么可以用一个n维的向量来表示每一个单词,并且n远远小于N,常见的n为100到300,也可以更具具体和需求问题设定
    2)词向量每一个位置不再是只能取0和1的数值,而是可以取任意的实数。这样有限的维度(n为100-300),可以表示无限的词语。例:今 -> [0.2154521, -2.326536, -3.3652666, 2.12255521,…]。10维的one-hot表示10个词语,10维的向量可以表示无数个词语。
    3)词向量之间的差在一定程度上是有意义的,比如,中国的词向量为v1,北京的词向量为v2,美国的词向量为s1,华盛顿的词向量为s2,通过word2vec学习出来的这些词向量大致有这样的特征v1-v2 = s1 -s2 。这个是很漂亮的一个近似关系,相当于说v1-v2近似的等于首都这种关系
    4)除此之外,地名和地名在词向量空间中的距离比地名和动物的词向量距离近,等等,换句话说就是描述同一属性和种类的词向量的距离要小于不同属性和种类的词向量的距离
  4. word2vec缺陷:(只学习位置信息,不学习语义信息)
    word2vec存在最大的问题就是由于它是静态词向量表示导致不能表示一词多义的情况,举个例子“苹果”一词,在果蔬的句子中表示的就是水果的含义,要是在高科技产品句子中表示的就是“苹果”公司。但是word2vec的静态词向量表示只能表示同一种形式,不能很好的表示上下文语义,这也是为什么ELMO,GPT,bert问世之后word2vec就不再有以前的光环了,因为ELMO,GPT,bert都是用的动态词向量表示,可以很好的表示上下文语义,

三、text2vec及word2vec区别:

Text2vec 和 Word2vec 都是用于将文本(文本中的单词或字符)转换为向量的方法。它们之间的主要区别在于训练目标、输入和输出以及应用场景。
1.训练目标:
   Text2vec 的训练目标是最小化文本之间的距离或最大化相似文本的相似度。Text2vec 模型通过神经网络学习文本的向量表示,从而捕捉文本的全局语义信息。
   Word2vec 的训练目标是最小化相似单词在空间中的距离或最大化不相似单词在空间中的距离。Word2vec 模型通过神经网络学习单词的向量表示,从而捕捉单词的语义信息。
2.输入和输出:
   Text2vec 的输入是整个文本序列,输出是文本序列对应的向量表示。在训练过程中,Text2vec 会将文本序列划分为多个窗口,并对每个窗口生成一个上下文向量。这些上下文向量经过加权平均后,得到整个文本序列的向量表示。
   Word2vec 的输入是单个单词,输出是单词对应的向量表示。Word2vec 通过将单词作为输入,神经网络输出对应单词的向量表示。
3.应用场景:
   Text2vec 通常用于处理整个文本序列的任务,如文本分类、文本相似度计算、文本聚类等。
   Word2vec 主要用于处理单个词汇的任务,如词汇相似度计算、词汇嵌入空间分析等。
文本嵌入模型主要关注于将整个文本(如句子或文档)映射为一个连续的向量表示,从而捕捉文本的全局语义信息。这有助于模型理解文本中的长距离依赖关系和上下文信息。
词嵌入模型则关注于将单个词汇(如单词或汉字)映射为向量表示,从而捕捉词汇的语义信息。

四、word2txt实践

  1. 需要下载word2vec相关包:sklearn,gensim(pip install即可)
  2. 使用方法如图所示:包括文本读取、分词、预处理、训练、词向量、类比关系
    在这里插入图片描述

五、text2vec实践

这个实践部分是之间调用网上开源的中文文本嵌入模型text2vec-base-chinese,将句子转化为词向量。

  1. 下载text2vec相关包:
    第一种方式:pip install -U text2vec
    第二种方式:git clone https://github.com/shibing624/text2vec.git
          cd text2vec
          pip install --no-deps
    注意:在这之前需要torch环境,没有的搜教程安装即可
  2. 下载text2vec-base-chinese模型(也自己在网上找,正好锻炼一下百度能力)
  3. 具体使用代码及输出如图所示:
    在这里插入图片描述
    在这里插入图片描述

六、Word2Vec应用

自然语言处理(文本分类、情感分析、命名实体识别):通过word2vec,可以将文本中的每个单词映射为一个稠密向量,从而将离散的词语转换为连续的向量空间表示。
词义相似度计算:衡量两个词语之间的相似程度。利用word2vec得到的词向量,可以通过计算向量之间的距离或相似度来衡量词语之间的语义关系
推荐系统:通过将用户行为序列和文本内容映射为词向量表示,可以建立用户和文本之间的关联关系,从而为用户推荐相关的文本内容。
信息检索:通过将查询词语和文本内容转换为词向量表示,可以计算它们之间的相似度,

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: word2vec是一种广泛使用的自然语言处理算法,有助于将单词转化为相似的向量表示。它对于文本分类、语义分析和降维等任务非常有用。 SVM(支持向量机)是一种机器学习算法,可以用于文本分类、图像分类、语音识别和股票预测等问题。它是一种二元分类器,可以很好地适用于二元分类问题。 结合word2vec和SVM,可以利用word2vec生成单词向量表示,并将其作为SVM的特征向量来进行文本分类任务。word2vec的想法是将单词转化为可比较的向量,并且对于语义上相似的词汇,它们的向量也会更接近。有了这些向量后,可以在SVM算法中将它们用作特征向量,从而进行文本分类。这种组合可以有效地解决文本分类问题,并提高分类的准确性和可解释性。 word2vec和SVM的结合在自然语言处理中的应用非常广泛,对于分类和聚类任务,它们的组合可以有效地提升分类精度和效果。此外,这种方法也很容易解释和理解,因为向量表示直观,并显示出了单词之间的相似性和差异。 ### 回答2: Word2vec和SVM是自然语言处理和机器学习中常用的两个技术。Word2vec是一种嵌入式学习技术,主要用于将文本中的每个单词编码为数字向量,可以用于文本分类、语义分析等任务。SVM是一种有监督学习算法,主要用于分类和回归分析,可以用于文本分类、情感分析等任务。两者的结合可以提高文本分类和情感分析任务的准确性。 在使用Word2vec和SVM进行文本分类时,首先需要使用Word2vec将文本中的每个单词编码为数字向量,然后将这些数字向量作为特征输入到SVM模型中进行训练。SVM模型可以根据特征向量对文本进行分类,例如将评论分为正面、负面或中立类别。使用Word2vec和SVM的优势是可以自动捕获文本中的语义信息,提高分类的准确性,同时也可以使用非线性分类器来对复杂的非线性分类问题建立准确的模型。 需要注意的是,在使用Word2vec和SVM进行文本分类时,需要选择合适的参数来训练模型,包括Word2vec模型的维度、窗口大小、负采样等参数以及SVM模型的核函数、C值等参数。同时,也需要对文本数据进行预处理和特征提取,例如去除停用词、词干提取、TF-IDF等。这些前置工作可以提高模型的准确性和效率。 总之,结合Word2vec和SVM可以提高文本分类和情感分析的准确性,但需要在使用前仔细选择和调整参数,以及进行数据预处理和特征提取。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值