word2vec使用了CBOW与Skip-Gram来训练模型与得到词向量,但是并没有使用传统的DNN模型。最先优化使用的数据结构是用霍夫曼树来代替隐藏层和输出层的神经元,即霍夫曼树的:

叶子节点:起到输出层神经元的作用,叶子节点的个数即为词汇表的小大。

内部节点:起到隐藏层神经元的作用。


霍夫曼树的建立过程如下

输入:权值为(w1,w2,...wn)的n个节点

输出:对应的霍夫曼树

处理步骤

1)将(w1,w2,...wn)看做是有n棵树的森林,每个树仅有一个节点。

2)在森林中选择根节点权值最小的两棵树进行合并,得到一个新的树,这两颗树分布作为新树的左右子树。新树的根节点权重为左右子树的根节点权重之和。

3) 将之前的根节点权值最小的两棵树从森林删除,并把新树加入森林。

4)重复步骤2)和3)直到森林里只有一棵树为止。

下面我们用一个具体的例子来说明霍夫曼树建立的过程,我们有(a,b,c,d,e,f)共6个节点,节点的权值分布是(20,4,8,6,16,3)。首先是最小的b和f合并,得到的新树根节点权重是7.此时森林里5棵树,根节点权重分别是20,8,6,16,7。此时根节点权重最小的6,7合并,得到新子树,依次类推,最终得到下面的霍夫曼树。

那么霍夫曼树有什么好处呢?一般得到霍夫曼树后我们会对叶子节点进行霍夫曼编码,由于权重高的叶子节点越靠近根节点,而权重低的叶子节点会远离根节点,这样我们的高权重节点编码值较短,而低权重值编码值较长。这保证的树的带权路径最短,也符合我们的信息论,即我们希望越常用的词拥有更短的编码。

如何编码呢?一般对于一个霍夫曼树的节点(根节点除外),可以约定左子树编码为0,右子树编码为1。如上图,则可以得到c的编码是00。注意,是从左到右,从上到下(根节点除外)的顺序开始编码。

word2vec中,约定编码方式和上面的例子相反,即约定左子树编码为1,右子树编码为0,同时约定左子树的权重不小于右子树的权重。

Word2vec基础之霍夫曼树相关推荐

  1. Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树

    Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树 文章目录 Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树 0x00 摘要 0x01 背景概念 1.1 词向量 ...

  2. Python实现霍夫曼树

    Python实现霍夫曼树 霍夫曼树是一种特殊的二叉树,是一种带权路径长度最短的二叉树,又称为最优二叉树. 给定 N 个权值作为二叉树的 N 个叶节点的权值,构造一棵二叉树,若该二叉树的带权路径长度达到 ...

  3. 数据结构(六)霍夫曼树与编码

    1.算法流程 (1)构建霍夫曼树:自底向上 根据统计频率构建霍夫曼树: A.把所有的节点扔进排序队列queue中: B.从queue选择选择前面两个最小的元素a.b,把最小的树a作为左节点,把最小的b ...

  4. 程序员的进阶课-架构师之路(10)-霍夫曼树

    一.霍夫曼(Huffman)的由来 1.历史上的远距通信问题 最初的远距通信用于传递文本信息,主要是电报. 小A:如何将一段文字内容为"BADCADFEED"通过网络传递给别人呢? ...

  5. 霍夫曼树之切割木板最小总代价问题

    对于本题的切割方案,在给出了最终的切割结果后,我们其实可以使用倒推的方法,将最终的小木板不断合成大木板,大木板的长度就是本次合并的开销,和相同条件下的切割的开销是一样的. 这样想的话,想要总开销小的话 ...

  6. 数据结构(二叉树相关、满、完全二叉树、霍夫曼树、排序方法及时间复杂度总结、)笔记-day11

    目录 前言 一.树(Tree) 1.1树及特征 1.2二叉树概念及性质 1.3二叉树存储结构及遍历 1.4链式存储编码 二.霍夫曼树(最优二叉树) 2.1权值及带权路径长度 2.2霍夫曼树特征及构建 ...

  7. c语言霍夫曼函数,使用C语言详解霍夫曼树数据结构

    1.基本概念 a.路径和路径长度 若在一棵树中存在着一个结点序列 k1,k2,--,kj, 使得 ki是ki+1 的双亲(1<=i 从 k1 到 kj 所经过的分支数称为这两点之间的路径长度,它 ...

  8. 二叉树合集(二):霍夫曼树(图文详解)

    合集地址 二叉树合集(一):二叉树基础(含四种遍历,图文详解) 二叉树合集(二):霍夫曼树(图文详解) 二叉树合集(三):线索二叉树(图文详解) 二叉树合集(四):对称二叉树(递归和迭代实现) 二叉树 ...

  9. 数据结构(十二) -- 树(四) -- 霍夫曼树

    1. 基本介绍 给定n个权值为n个叶子节点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也成为了霍夫曼树. 霍夫曼树是带权路径长度最短的树,权值较大的节点离根较 ...

最新文章

  1. 中文分词jieba的简单使用
  2. select查询中@作用_SQL学习第四关:复杂查询
  3. python零基础怎么学-零基础如何自学成为Python高手?
  4. 【传递闭包】【倍增】幸福路径(P4308)
  5. 我的python学习笔记全集_我的python学习笔记
  6. lucene中write.lock索引锁机制的原理
  7. dojo——AMD(二、AMD中class内部成员函数相互调用实现)
  8. 【平头哥蓝牙Mesh网关开发套件试用体验】蓝牙mesh网关接入网络
  9. N卡自带录屏软件geforce 双屏录制问题
  10. 3个酷到没同学的冷门专业,开始逆袭了?
  11. T51 运行文本指令
  12. Gale-Shapley 算法 寻找稳定婚配java实现
  13. 家禽也能有身份,XFS在畜牧业落地
  14. 联发科发布MT7986方案支持Wi-Fi 6/6E
  15. IDEA--工欲善其事必先利其器
  16. 「重磅」2020下半年中国移动互联网大报告
  17. visio第一次作业
  18. (附源码)ssm基于java的线上阅读平台的设计与实现 毕业设计291023
  19. 怎么在pta上搜题_舵手期货图解2.7:沪深300、PTA、鸡蛋
  20. 阿里云服务器与传统自建服务器的对比

热门文章

  1. 操作系统:进程的三种状态
  2. 在servlet中设置的字符编码集为什么还会出现乱码(亲测)
  3. css怎样将图片设置成正方形,而且随着浏览器窗口大小的改变而自适应缩放
  4. 怎么样给单选按钮前面插入小图标
  5. 2021年改造数据中心未来最需要的技能
  6. 2021全球数据中心市场预测:资本支出将增长10%
  7. 暖通空调系统计量表选型与应用
  8. 数据中心基础设施建设方案
  9. 下列关于php说法错误的,PHP试题
  10. JAVA项目实训struts2_Java Web项目搭建过程记录(struts2)