引领先锋|基于深度学习的文本数据特征提取方法之Word2Vec(一)( 六 )

(12424, 12424) {'egypt': ['destroy', 'none', 'whole', 'jacob', 'sea'], 'famine': ['wickedness', 'sore', 'countries', 'cease', 'portion'], 'god': ['therefore', 'heard', 'may', 'behold', 'heaven'], 'gospel': ['church', 'fowls', 'churches', 'preached', 'doctrine'], 'jesus': ['law', 'heard', 'world', 'many', 'dead'], 'john': ['dream', 'bones', 'held', 'present', 'alive'], 'moses': ['pharaoh', 'gate', 'jews', 'departed', 'lifted'], 'noah': ['abram', 'plagues', 'hananiah', 'korah', 'sarah']}您可以清楚地看到 , 其中一些在上下文上是有意义的 (god, heaven), (gospel, church) 等等 , 而有些可能没有意义 。 训练时间越长 , 效果往往越好 。 现在 , 我们将探讨与CBOW相比通常给出更好结果的skip-gram架构 。
Skip-gram模型
Skip-gram模型体系结构实现与CBOW模型相反的功能 。 它预测给定目标单词(中心单词)的源上下文单词(周围单词) 。 考虑到我们前面简单的句子 , “the quick brown fox jumps over the lazy dog” 。 如果我们使用CBOW模型 , 就会得到一对(context_window, target_word) , 其中如果我们考虑一个大小为2的上下文窗口 , 就会得到([quick, fox] ,brown) ,([the, brown] ,quick) ,([the, dog] ,lazy) , 等等 。 现在考虑到Skip-gram模型的目标是根据目标单词预测上下文 , 该模型通常将上下文和目标颠倒过来 , 并尝试根据目标单词预测每个上下文单词 。 因此 , 任务变成了预测给定目标单词[quick, fox]的上下文'brown' 或[the, brown]给定目标单词'quick' , 以此类推 。 因此 , 该模型是基于target_word预测context_window单词 。
引领先锋|基于深度学习的文本数据特征提取方法之Word2Vec(一)正如我们在CBOW模型中所讨论的 , 我们现在需要将这个Skip-gram架构建模为一个深度学习分类模型 , 这样我们就可以将目标单词作为输入并预测上下文单词 。 这变得有点复杂 , 因为我们在上下文中有多个单词 。 我们将每个(target, context_words)对分解为多个(target, context)对 , 这样每个上下文只包含一个单词 , 从而进一步简化了这个过程 。 因此 , 我们前面的数据集被转换成成对的 , 比如(brown , quick) , (brown , fox) ,(quick, the) ,(quick, brown)等等 。 但是 , 如何监督或训练模型 , 使其知道什么是上下文相关的 , 什么不是?
为此 , 我们对Skip-gram模型输入(X, Y) , 其中X是我们的输入 , Y是我们的标签 。 我们使用[(target, context) ,1]对作为输入正样本 , 其中target是我们感兴趣的单词 , context是发生在目标单词附近的上下文单词 , 正样本标签1 表示这是上下文相关的一对 。 我们还输入[(target, random) ,0]对作为输入负样本 , 其中target仍然是我们感兴趣的单词 , 但是random只是从我们的词汇表中随机选择的一个单词 , 它与我们的目标单词没有上下文关系 。 因此 , 负样本标签0表示这是上下文无关的一对 。 我们这样做是为了让模型能够了解哪些词对与上下文相关 , 哪些不相关 , 并为语义相似的词生成类似的嵌入 。
实现Skip-gram模型
现在让我们从头开始实现这个模型 , 以了解幕后的工作原理 , 并将其与CBOW模型的实现进行比较 。 我们将像往常一样利用包含在 norm_bible 变量中的圣经语料库来训练我们的模型 。 工作将集中于五个部分:

  • 构建语料库词汇表
  • 构建skip-gram[(target, context), relevancy]生成器
  • 构建skip-gram模型结构
  • 训练模型
  • 得到词嵌入
构建语料库词汇表


推荐阅读