本文介绍 wordvec的概念 语言模型训练的两种模型CBOW+skip gram word2vec 优化的两种方法:层次softmax+负采样 gensim word2vec默认用的模型和方法 未经许可,不要转载. 机器学习的输入都是数字,而NLP都是文字: 为了让机器学习应用在NLP上,需要把文字转换为数字,把文字嵌入到数学空间. 1. 词表示: 词的独热表示:onehot (词之间是孤立的) onehot: 思想:假设词表大小为N, 则每个单字表示为N维向量: 每个单字只有1位为1,其他为…
5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.7 负采样 Negative sampling Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[C]// International Conference on Neural Information Processing Systems.…
理解:http://www.shuang0420.com/2017/03/21/NLP%20%E7%AC%94%E8%AE%B0%20-%20%E5%86%8D%E8%B0%88%E8%AF%8D%E5%90%91%E9%87%8F/ 模型代码参考:https://samaelchen.github.io/word2vec_pytorch/…
最近在做分布式模型实现时,使用到了这个函数. 可以说非常体验非常的好. 速度非常快,效果和softmax差不多. 我们知道softmax在求解的时候,它的时间复杂度和我们的词表总量V一样O(V),是性线性的,从它的函数方程式中,我们也可以很容易得出: softmax: f(x) = e^x / sum( e^x_i ) ; 它的需要对所有的词 e^x 求和; 所以当V非常大的时候,哪怕时间复杂度是O(V),这个求解的过程耗时也比较"严重": 设想一下,当我们在训练模型时, 我们知道目标…
1.CBOW模型 之前已经解释过,无论是CBOW模型还是skip-gram模型,都是以Huffman树作为基础的.值得注意的是,Huffman树中非叶节点存储的中间向量的初始化值是零向量,而叶节点对应的单词的词向量是随机初始化的. 1.1 训练的流程 那么现在假设我们已经有了一个已经构造好的Huffman树,以及初始化完毕的各个向量,可以开始输入文本来进行训练了. 训练的过程如下图所示,主要有输入层(input),映射层(projection)和输出层(output)三个阶段. 输入层即为某个单…
''' Created on 2017年9月13日 @author: weizhen ''' import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) 首先上来的是最简单的sigmoid激励函数, 至于为什么选他做激励函数, 1.因为这个函数能将定义域为(-inf,+inf)的值映射到(0,1)区间,便于计算(能够消除量纲的影响) 2.这个函数的变化曲线不是特变陡峭,每一点处都可导 3.这个函数的导数为y(1-y),即用他原来的…
word2vec研究如何将词用向量表示,使用的两个重要模型--CBOW模型(Continuous Bag-of-Words Model)和Skip-gram模型(Continuous Skip-gram Model),CBOW通过上下文预测中间词,Skip-gram对中间词预测它的上下文,本文只对CBOW进行介绍 词的向量表示 one-hot:语料库的词项个数为m,则one-hot表示的长度为m,只有一个位置是1,其余都是0 distributed representation:假设每个词项有d…
Word2vec 本质上是一种降维操作--把词语从 one-hot encoder 形式的表示降维到 Word2vec 形式的表示,即Distributed Representation.也就是,通过Embedding把原先词所在空间映射到一个新的空间中去,使得语义上相似的单词在该空间内距离相近. Distributed Representation最早是Hinton于1986年提出,基本思想是:通过训练将某种语言中的每一个词映射成一个固定长度的短向量,所有这些向量构成一个词向量空间,而每一向量…
本篇博客是Gensim的进阶教程,主要介绍用于词向量建模的word2vec模型和用于长文本向量建模的doc2vec模型在Gensim中的实现. Word2vec Word2vec并不是一个模型--它其实是2013年Mikolov开源的一款用于计算词向量的工具.关于Word2vec更多的原理性的介绍,可以参见我的另一篇博客:word2vec前世今生 在Gensim中实现word2vec模型非常简单.首先,我们需要将原始的训练语料转化成一个sentence的迭代器:每一次迭代返回的sentence是…
1.词向量建模的word2vec模型和用于长文本向量建模的doc2vec模型 在Gensim中实现word2vec模型非常简单.首先,我们需要将原始的训练语料转化成一个sentence的迭代器:每一次迭代返回的sentence是一个word(utf8格式)的列表: class MySentences(object): def __init__(self, dirname): self.dirname = dirname def __iter__(self): for fname in os.li…