本文主要是介绍【RNN】理解word2vec中的 Skip-Gram,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在处理文字模型的时候,将文字转化成可以放进模型的数字,最简单方法是用 one-hot
编码。但是这种方法有弊端,转化后的每个词之间在数字上都是相互独立的,任何一对词的one-hot向量的余弦相似度都为0,任何词之间都没有关系。
Google团队发表的 word2vec 工具。word2vec工具主要包含两个模型:跳字模型(skip-gram)和连续词袋模型(continuous bag of words,简称CBOW)。值得一提的是,word2vec词向量可以较好地表达不同词之间的相似和类比关系。
下面就介绍一下Skip-Gram。
训练样本
确认窗口大小,比如这里设置为2。指定某个词后,例 brown
,与其窗口为2的范围内的其他词可组成一对Training Sample,例 (brown,the) (brown,quick) (brown,fox) (brown,jumps)
。这样每组Training Sample就对应每次训练的 (输入,输出)
。
网络结构
上面确定好了输入与输出后,接下来需要将输入与输出的词转化为向量表示。这里我们均使用 one-hot
方法转换。假设词库中有10000个words,输入 x x x 和输出 y y y 都是长度为10000的 one-hot
向量。
网络中包括一个隐藏层,和一个softmax输出层。隐藏层数量自己设置,但这里的隐藏层数量决定最终word2vec 后的vector的数量(后面会详细解释)。softmax输出层的数量必须与词库大小相同,这里是10000。
网络结构确定后,把 x x
这篇关于【RNN】理解word2vec中的 Skip-Gram的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!