word2vector

转自:http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/

半路出家转到nlp领域(确切的说在语言模型组),在nlp不能不知道word2vector;对于这些高大上的领域确实挺好奇,加上它对于训练神经网络语言模型确实很重要(副产品),就催生了这篇文章。

网上关于背景说了很多,这边就不再说了,主要是要了解一下one-hot的含义;word2vector的目的就是word的one-hot represent 到 distribute represent,表达语义的意思。

首先,word2vector一共有三层,输入层,隐藏层和输出层。one-hot就是word2vector的输入层,假设一个词典有10k个词,"able"在第六个位置,那么"able"就可以这样表示:[0, 0, 0, 0, 0, 1, ...., 0, 0, 0]。

然后隐藏层,我理解的就是矩阵,假设我选取词的特征有300维,那么输入就是1*10000的矩阵乘以10000*300的矩阵,得到某个单词的1*300的特征表示。

输出层(softmax层)。这一层其实还有对于某个词的300*10000输出权重矩阵,这样隐藏层的输出乘以这个矩阵,就有得到1*10000的向量,然后softmax权值归一,就是这个词的向量表示了。

我们要调的参数其实就是隐藏层的矩阵,使其特征越接近label越好,那么势必要进行多次迭代。

问题来了,随着单词的数量增加,那么隐藏层参数是不是也要增加,这对于计算是不利的,那么我们怎么去调整呢,由于近义词的距离总是很相近,使用k-nn进行单词的聚类,再进行训练,就可以降维,提高运行效率了

调整部分还没来得及看,先放文章:http://mccormickml.com/2017/10/22/product-quantizer-tutorial-part-2/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值