专栏名称: 待字闺中
深度分析大数据、深度学习、人工智能等技术,切中实际应用场景,为大家授业解惑。间或,也会介绍国内外相关领域有趣的面试题。
目录
相关文章推荐
新消费日报  ·  霸王茶姬回应! ·  昨天  
新消费日报  ·  霸王茶姬回应! ·  昨天  
不跪的世界  ·  叙事VS数据 ·  昨天  
不跪的世界  ·  叙事VS数据 ·  昨天  
涵江时讯  ·  早安!涵江! ·  2 天前  
涵江时讯  ·  早安!涵江! ·  2 天前  
昌吉日报  ·  地球发生特大磁暴! ·  5 天前  
昌吉日报  ·  地球发生特大磁暴! ·  5 天前  
51好读  ›  专栏  ›  待字闺中

读代码:word2vec中如何生成Huffman Tree?

待字闺中  · 公众号  · 程序员 科技自媒体  · 2016-10-31 23:15

正文

深度学习在自然语言处理(NLP)任务中取得了很大的成功,其中,词的分布式表示是其中很重要的一项技术。要深入了解分布式表示,就不能不深入了解word2vec。今天来读一读word2vec代码中是如何生成Huffman Tree的。


这个是word2vec中很重要的一个数据结构,用来表示词汇表中的一个词和它的Huffman编码。cn是词在训练集中出现的频率,point是编码的节点路径,word是词串,codelen是编码长度,code是编码,表示成0和1串。



下面是Huffman Tree的生成函数,光是眼睛看,脑袋想,读起来有些费劲。所以,我们还是尝试从一个例子来理解。这是常用的一种读和理解代码的方式。



纸和笔准备好了,我们的例子是一个词汇表的count是[4,3,2,1],四个词,排序好的。顺着程序的执行,step by step记录下来个个变量,以便于理解。



这么下来,生成的Huffman Tree如下。



接下来,看看如何从上面的临时数据结构转化成编码的。每个词都会赋予一个编码,频率高的编码长度短。




接着凭借纸和笔,看看整个过程是如何进行的。



至此,Huffman Tree的生成函数,通过我们的纸和笔完整的执行了一遍,也对代码有了深入的理解。学习别人的代码过程,也是自我提高的过程。下次,面试中,或是工作中,遇到类似的问题,应该不再陌生。

推荐文章
新消费日报  ·  霸王茶姬回应!
昨天
新消费日报  ·  霸王茶姬回应!
昨天
不跪的世界  ·  叙事VS数据
昨天
不跪的世界  ·  叙事VS数据
昨天
涵江时讯  ·  早安!涵江!
2 天前
涵江时讯  ·  早安!涵江!
2 天前
昌吉日报  ·  地球发生特大磁暴!
5 天前
昌吉日报  ·  地球发生特大磁暴!
5 天前
墨香中华  ·  当旗袍遇见青花瓷
7 年前