Hanlp中的word2Vec生成笔记

1、构建词表:将分词之后的词加入词汇表vocabulary(VocabWord[]  :  int cn, codelen;int[] point; String word;char[] code;),并统计词频。同时加入vocabIndexMap(Map),key为词,value为在vocabulary中的索引。将索引写入cache缓存。

2、词表排序:vocabulary词表根据词频由大到小排序(相关代码:Arrays.sort(vocab, 0, vocabSize);)。

table:建设table[]与vocabulary和vocabIndexMap长度相同table索引为vocabIndexMap中的value(即:在vocabulary中的索引)table的值为table当前的索引( table[vocabIndexMap.get(word.word)] = i;),如果词频小于5则table值为-4。并清空vocabIndexMap。

VocabWord[] vocab:建设vocab将vocabulary中的词排除词频小于5的复制到vocab中。

3、构建神经网络initNet:

double[] syn0,syn1neg:初始化syn0和syn1neg长度为(词汇大小*维度200)初始化全部为0。初始化syn0每个值为[-0.5,0.5]的随机数。

构建哈夫曼树:根据词频构建,生成一棵节点数为2*vocab_size+1个节点的huffman树,并根据词频给给每个词设定其在huffman树的位置。并把信息标识在vocab中[[的] cn=3686, codelen=3, code=(,,,),point=(1611,1609,1605)]]其中cn为词频,codelen为树的深度,code为编码,point为节点标识。

你可能感兴趣的:(java)