word2vector

参考文献
https://www.jianshu.com/p/1405932293ea

用途====================
将语料库中的词转化为向量,方便后续在词向量的基础上进行各种计算。

实现方法1=============
最常见的方法是counting编码
N(i,j)表示,单词i和单词j同时出现的次数
这种方法存在3个问题:每个单词的向量都很稀疏。虽然可以通过SVD降维,但是这个降维过程需要的计算量也很大;
向量没有包含单词的语义内容,只是简单的数量统计;
当有新的单词加入后,整个向量都需要更新。

实现方法2=============
skip gram
该方法可以解决上述三个问题
首先将所有单词进行one-hot编码,构造训练样本X和Y,输入到只有一个隐藏层的神经网络中,定义好loss后进行训练。
训练结束后,用隐藏层的权重来作为单词的向量表示。
自动编码器也是用一个只有隐藏层的神经网络进行训练,用隐藏层的输出作为最终输出,完成向量的压缩。
不同的是,这里用的是隐藏层的权值,自动编码器用的是隐藏层的输出。
如何生成样本?  n-gram
对于每一个文章,从第一个单词x开始,滑动窗口为n,向前向后,找到2*n 个y,组成2*n个样本(x,y)。其中x和y都是独热后的向量。
经验值n=5
神经网络的结构?
输出层和输出层的神经网络个数都是语料库的长度N,隐藏层的神经元个数由用户指定。
如果用户希望最终得到的单词的向量长度为k,那么就将隐藏层的神经元个数设置为k。
隐藏层的神经元没有激活函数,y=sum(wx)
输出层的神经元的激活函数为softmax函数,y=softmax(sum(wx))。这样可以使得输出向量是一个概率分布,加起来为1.
softmax(x)=e^x/sum(e^x)

损失函数为 交叉熵损失函数
e=sum(t*y)
t表示目标标签,y=softmax(sum(wx))

比较常见的损失函数,还有 平方差函数等。

最后可以得到一个 N*k的矩阵
一个行向量代表一个单词的向量。

优化=============
https://www.jianshu.com/p/d0e2d00fb4f0
原始的方法,会使得网络非常大。
优化方法主要有3个:
方法1:把某些词组和短语看做某个单词,不进行拆分。
例如,对于“中华人民共和国”,就不必进行拆分成:”中华“  ”人民“  ”共和国“

方法2:对该频次进行抽样
对于出现频率较高的参数,按照概率值删除。频率越高,删除的概率越高。有公式。

方法3:负采样
原始的训练,每个样本都会更新所有的权值。这里会抽取某些样本权值进行更新:
从应该为0的维度中,随机选取一些修改权值。当然还有加上维度应该为1的神经元。
抽取的概率,由该单词出现的次数决定。有公式。

试下方法3================
http://www.cnblogs.com/pinard/p/7160330.html
CBOW
他的神经网络结构和skip-gram是反过来
Skip-gram模式是根据中间词,预测前后词,CBOW模型刚好相反,根据前后的词,预测中间词。

这种方法的优化:霍夫曼树。
叶子结点起到了输出层神经元的作用。叶子结点的个数为输出层神经元的个数。
内部节点起到了隐藏层的作用。

为什么不直接用DNN?
词汇表一般百几万及,用DNN复杂度太高。

skip gram 和 CBOW成立的前提是什么?
词之间的先后顺序对模型的效果没有影响。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Word2Vec是一种用于将文本转换为向量表示的工具,它是通过训练一个神经网络模型来实现的。在Word2Vec的源码中,有几个主要的部分和过程。 首先,源码中包含了数据预处理的步骤。这个步骤包括将原始文本分割成单词,建立词汇表并为每个单词分配一个唯一的标识符。源码还负责将原始文本转换为训练样本,其中每个样本由一个输入单词和一个输出单词组成。 接下来,源码中定义了训练模型的结构和参数。该模型通常是一个两层的神经网络,其中包含一个隐藏层和一个输出层。隐藏层的节点数可以根据需求进行设置。训练模型中的参数包括学习率、迭代次数和训练样本的窗口大小等。 然后,源码中实现了模型的训练过程。训练过程基于输入和输出单词的样本对,通过对模型进行多次迭代来优化模型的参数。在每一次迭代的过程中,模型会根据当前输入单词预测输出单词,并计算预测结果与实际输出之间的误差。然后,模型会使用误差来更新参数,以提高模型的准确性。 最后,源码中还提供了用于将训练好的模型应用于新的文本数据的方法。通过载入训练好的模型参数,并使用这些参数来将新的文本转换为向量表示。 总的来说,Word2Vec的源码实现了一个能够将文本转为向量表示的工具,并通过训练神经网络模型来优化向量表示的准确性。通过了解源码,我们可以更好地理解Word2Vec的原理和实现过程,并且可以根据需要进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值