./word2vec -train resultbig.txt -output vectors.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1
一般来说,比较喜欢用cbow ,因为模型中 cbow有向量相加的运算。##保留意见
-window 上下文窗口,是训练词向量的时候,取上下文的大小,感觉这个一般都是5比较好
上面这两个参数试过很多个,感觉就是默认的比较好用。
-hs 做不做层次的softmax,是1的时候效果比较好,但是训练会慢一点
-min-count 控制词典大小的参数,如果只想要高频词的话就设置高一点。
架构:skip-gram(慢、对罕见字有利)vs CBOW(快)
· 训练算法:分层softmax(对罕见字有利)vs 负采样(对常见词和低纬向量有利)
· 欠采样频繁词:可以提高结果的准确性和速度(适用范围1e-3到1e-5)
· 文本(window)大小:skip-gram通常在10附近,CBOW通常在5附近
二、LDA调参
1.文章
http://jmlr.org/proceedings/papers/v32/tang14.pdf
2.思路
1)lda模型(latent dirichlet distribution)调优,比如曾经有研究表明,直接把短文档(比如一个微博,一个查询)作为输入,不如先做预处理把这些短文章聚合成一些长文章(比如把同一作者的微博合一块)。
2)当我们选择的主题数目k和真实主题数目k’ 一致,或者主题-词分布区分度够高(欧式距离衡量下)的情况下,假如我们还满足文档长度的限制,log d 《= n 的, 那么, 随着n 和 d 增长,后验分布和真实分布之间的误差正比于 logn / n +logd / d。
3)当我们选择的主题数目k 大于真实主题数目k‘时,如果我们仍然满足 d》= log n, 那么误差正比于 (log n / n + logd / d) ^ (1/(2k –1))
4)
-
文档长度不能太短,至少是文档数目的log,所以对于太短的文档,我们必须把他们聚合
-
为了满足log d 《= n, 还有一个方法是降低d,但很可惜,最终误差大小正比于d,所以文档数量最好也多一点。
-
当我们选择的topic 数目k 大大超出于真实topic 数目 k‘ 时,可以从(5)的结果看到,也会减慢收敛速度,所以应该从比较小的topic数目开始,慢慢增加。
-
最好当然是我们能知道真正的主题数目k,这样可以避开上面的试探过程,但现实很难,另外一个可能的条件是topic之间差异大,比如每个文档可能的topic少,或者每个topic有一些特殊的词,比如一个topic是自然语言处理,另一个topic是图像处理,两个各有自己独特的词,如像素,语法树等等,这样我们就可以不用太担心试探过程。
-
当上面两种情况发生时,可以考虑设置小一点的alpha 和beta, 以减少迭代。