word2vec 订阅
Word2vec,是一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系,该向量为神经网络之隐藏层。 展开全文
Word2vec,是一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系,该向量为神经网络之隐藏层。
信息
外文名
word to vector
领    域
深度学习
定    义
用来产生词向量的相关模型
中文名
Word2vec
依    赖
skip-grams或连续词袋
应    用
自然语言处理
Word2vec简介
随着计算机应用领域的不断扩大,自然语言处理受到了人们的高度重视。机器翻译、语音识别以及信息检索等应用需求对计算机的自然语言处理能力提出了越来越高的要求。为了使计算机能够处理自然语言,首先需要对自然语言进行建模。自然语言建模方法经历了从基于规则的方法到基于统计方法的转变。从基于统计的建模方法得到的自然语言模型称为统计语言模型。有许多统计语言建模技术,包括n-gram、神经网络以及 log_linear 模型等。在对自然语言进行建模的过程中,会出现维数灾难、词语相似性、模型泛化能力以及模型性能等问题。寻找上述问题的解决方案是推动统计语言模型不断发展的内在动力。在对统计语言模型进行研究的背景下,Google 公司在 2013年开放了 Word2vec这一款用于训练词向量的软件工具。Word2vec 可以根据给定的语料库,通过优化后的训练模型快速有效地将一个词语表达成向量形式,为自然语言处理领域的应用研究提供了新的工具。Word2vec依赖skip-grams或连续词袋(CBOW)来建立神经词嵌入。Word2vec为托马斯·米科洛夫(Tomas Mikolov)在Google带领的研究团队创造。 [1]  该算法渐渐被其他人所分析和解释。
收起全文
精华内容
下载资源
问答
  • word2vec

    2019-06-24 09:00:01
    Author: kangbingbing; ... Datawhale word2vec简介 ...Word2vec是Google实现word embedding的一种具体的方式。... 而Word embedding是一个普适的概念或者任务,即用向量来表示字或词,...简单来说,Word2Vec就是“两个...
    
    

    word2vec简介

    Word2vec是Google实现word embedding的一种具体的方式。因为速度快效果好,而广为人知。 而Word embedding是一个普适的概念或者任务,即用向量来表示字或词,一般也称为词嵌入。

    核心公式:

    简单来说,Word2Vec就是“两个训练方案+两个提速手段”,两个训练方案见下表,两个提速手段分别为HS(Hierarchical Softmax )、负采样(Negative Sampling)。 我们设置一个大小为 t 的窗口,在数据集里随机抽取一个中心词Wt,这个词的前c个和后 c个单词构成该词的上下文,即:
    context(W)=(Wtc,...,Wt2,Wt1;Wt+1,Wt+2,...,Wt+c) context(W)=(Wt−c ,...,Wt−2,Wt−1;Wt+1,Wt+2,...,Wt+c)

    model 训练方法 说明 目标函数
    skip-gram 神经网络 最大化p(w/context(w))p(w/context(w)),即用中心词w的上下文去预测 w 最大化均值“对数似然概率” 见式①、式② ,式①中两个词之间的 skip-gram 概率p(wt+j/wt)p(wt+j/wt) 可以定义为式②,式②分子是把w对应的词向量和 context(w) 里的某个词对应的词向量做内积,分母是把 w对应的词向量和词汇表中的所有词向量做内积
    CBOW 神经网络 最大化p(context(w)/w)p(context(w)/w),即用中心词w去预测其上下文 与skip-gram类似, 调换Wt+j和Wt的位置即可


    在这里插入图片描述


    在这里插入图片描述

    算法十问

    1. 在小数据集中,Skip-gram和CBOW哪种表现更好?

    Skip-gram是用一个center word预测其context里的word;而CBOW是用context里的所有word去预测一个center word。显然,前者对训练数据的利用更高效(构造的数据集多),因此,对于较小的语料库,Skip-gram是更好的选择。

    1. 为什么要使用HS(Hierarchical Softmax )和负采样(Negative Sampling)?

    两个模型的原始做法都是做内积,经过 Softmax 后得到概率,因此复杂度很高。假设我们拥有一个百万量级的词典,每一步训练都需要计算上百万次词向量的内积,显然这是无法容忍的。因此人们提出了两种较为实用的训练技巧,即HS和Negative Sampling。

    1. 介绍一下HS(Hierarchical Softmax )

    HS 是试图用词频建立一棵哈夫曼树,那么经常出现的词路径会比较短。树的叶子节点表示词,共词典大小多个,而非叶子结点是模型的参数,比词典个数少一个。要预测的词,转化成预测从根节点到该词所在叶子节点的路径,是多个二分类问题。本质是把 N 分类问题变成 log(N)次二分类

    1. 介绍一下负采样(Negative Sampling)

    把原来的 Softmax 多分类问题,直接转化成一个正例和多个负例的二分类问题。让正例预测 1,负例预测 0,这样子更新局部的参数。

    1. 负采样为什么要用词频来做采样概率?

    可以让频率高的词先学习,然后带动其他词的学习。

    1. 对比 Skip-gram 和 CBOW

    CBOW 会比Skip-gram训练速度更快,因为前者每次会更新 context(w) 的词向量,而 Skip-gram 只更新核心词的词向量。 Skip-gram 对低频词效果比 CBOW好,因为Skip-gram 是尝试用当前词去预测上下文,当前词是低频词还是高频词没有区别。但是 CBOW 相当于是完形填空,会选择最常见或者说概率最大的词来补全,因此不太会选择低频词。

    1. 对比字向量和词向量

    字向量可以解决未登录词的问题,以及可以避免分词;词向量包含的语义空间更大,更加丰富,如果语料足够的情况下,词向量是能够学到更多的语义信息。

    1. 如何衡量word2vec得出的词/字向量的质量?

    在实际工程中一般以word embedding对于实际任务的收益为评价标准,包括词汇类比任务(如king – queen = man - woman)以及NLP中常见的应用任务,比如命名实体识别(NER),关系抽取(RE)等。

    1. 神经网络框架里的Embedding层和word-embedding有什么关系?

    Embedding层就是以one hot为输入(实际一般输入字或词的id)、中间层节点为字向量维数的全连接层。而这个全连接层的参数,就是一个“字向量表”,即word-embedding。

    1. word2vec的缺点?

    没有考虑词序,因为它假设了词的上下文无关(把概率变为连乘);没有考虑全局的统计信息。

    面试真题

    1. 为什么训练得到的字词向量会有如下一些性质,比如向量的夹角余弦、向量的欧氏距离都能在一定程度上反应字词之间的相似性?

    我们在用语言模型无监督训练时,是开了窗口的,通过前n个字预测下一个字的概率,这个n就是窗口的大小,同一个窗口内的词语,会有相似的更新,这些更新会累积,而具有相似模式的词语就会把这些相似更新累积到可观的程度。

    1. word2vec跟Glove的异同?
    2. word2vec 相比之前的 Word Embedding 方法好在什么地方

    参考资料

    1. https://blog.csdn.net/zhangxb35/article/details/74716245
    2. https://spaces.ac.cn/archives/4122
    展开全文
  • Word2vec

    2018-08-08 09:42:42
    Word2Vec Word2vec是一种从原始语料学习获得低维、实值、稠密的词向量表示的方法,核心思想是使得具有相似上下文的字/词能够在向量空间具有相近的距离。word2vec比较好的解决了one-hot词向量的词汇鸿沟问题,最经典...

    Word2Vec

    Word2vec是一种从原始语料学习获得低维、实值、稠密的词向量表示的方法,核心思想是使得具有相似上下文的字/词能够在向量空间具有相近的距离。word2vec比较好的解决了one-hot词向量的词汇鸿沟问题,最经典的例子就是“国王-王后=男人-女人”。

    基本思想和直观理解

    word2vec的基本框架可以描述为:

    • 我们有一个大规模的语料库以及词库
    • 词库中的每个词都有一个向量表达
    • 遍历文档中的每个位置t,我们有一个center word c和context/outside words o
      • 所谓context word是指在给定window size下center word的邻近词
    • 通过词向量co之间的相似度来计算p(c|o)或者p(o|c)
    • 不断调整词向量来最大化这个概率

    这里写图片描述

    这里写图片描述

    word2vec有两种架构:

    • Skip gram:根据center word来预测context word
    • CBOW (continuous bag of words): 根据context word来预测center word

    神经网络架构

    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    Why one-hot

    权重矩阵的行其实就是我们需要的词向量。
    这里写图片描述
    因此权重矩阵也称为”word vector lookup table“。
    这里写图片描述


    参考资料

    Word2Vec Tutorial - The Skip-Gram Model
    Stanford CS 224n- word2vec slides
    Stanford CS 224n- word2vec lecture notes
    learn word2vec by implementing it in tensorflow

    展开全文
  • Word2Vec

    千次阅读 2015-10-27 22:47:45
    Word2Vec Word2Vec是将词表示为实数值向量的工具,并将对文本内容的处理转换为K维向量空间的向量运算。Word2Vec输出的词向量可以用来做NLP相关的工作,比如聚类、同义词、词性分析等。 1.向量空间上的相似度可以用来...

    Word2Vec

    Word2Vec是将词表示为实数值向量的工具,并将对文本内容的处理转换为K维向量空间的向量运算。Word2Vec输出的词向量可以用来做NLP相关的工作,比如聚类、同义词、词性分析等。

    1.向量空间上的相似度可以用来表示文本语义上的相似度。

    2.词之间的关系可以直接从词向量之差中体现出来。

        C(king)−C(queen)≈C(man)−C(woman),如已知 a 之于 b 犹如 c 之于 d。现在给出 a、b、c,看 C(a)−C(b)+C(c) 最接近的词是 d。


    使用

    生成词向量,输入的文件为分词后的数据文件。

    ./word2vec  -train  data.txt  -output vectors.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1  

    -cbow 0    不使用cbow模型,默认为Skip-Gram模型。

    -size 200       词向量维度

    -window 5     训练的窗口大小为5,考虑一个词前五个和后五个词语

    -hs    1      不使用NEG方法,使用HS方法。       

    -sample 1e-3   采样的阈值,如果一个词语在训练样本中出现的频率越大,那么就越会被采样。

    -binary 1       结果二进制存储,为0是普通存储(普通存储的时候是可以打开看到词语和对应的向量的)     

    -alpha       设置学习速率,默认的为0.025

    –min-count    设置最低频率,默认是5,如果一个词语在文档中出现的次数小于5,那么就会丢弃。

    -classes  设置聚类个数。模型用得是k-means聚类算法。


    计算词距离,word2vec计算的是余弦值,距离范围为0-1之间,值越大代表这两个词关联度越高,所以越排在上面的词与输入的词越紧密。

    ./distance vectors.bin 


    聚类,按类别排序

    ./word2vec -train data.txt -output classes.txt -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -classes 500  

    sort classes.txt -k 2 -n > classes.sorted.txt 


    Word2VECJAVA使用

    项目地址:https://github.com/NLPchina/Word2VEC_java

    训练模型

    Learn lean = new Learn() ;

    lean.learnFile(new File("words.txt")) ;

    lean.saveModel(new File("vector.mod")) ;

    使用模型
    Word2VEC w2v = new Word2VEC() ;
    w2v.loadJavaModel("vector.mod") ;
    //近义词
    w2v.distance("xxx");

    //推测A-B+C
     TreeSet<WordEntry>  result=w2v.analogy(A, B, C);

    Word2Vec模型

    word2vec使用的是Distributed representation 的词向量表示方式,这种向量的表示不是唯一的。
    word2vec中包含了对两种模型的训练,CBOW词袋模型和Skip-Gram,在训练每种模型的时候又分为HS和NEG两种方法。

    词向量的训练

    基本上所有的训练方法都是在训练语言模型的同时,顺便得到词向量的。

    展开全文
  • word2vec Google word2vec的Python接口。 培训是使用原始的C代码完成的,其他功能是带有numpy的纯Python。 安装 pip install word2vec 安装需要编译原始的C代码: 汇编 为了编译原始的C代码,需要一个gcc编译器。 ...
  • word2vec:使用word2vec改进搜索结果

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,515
精华内容 4,606
关键字:

word2vec