• 计算词表中每个词对应的hash值;
  • 对主题下每个单词加权后的hash值,按位进行累加,然后对结果逐位进行考虑,正数为1,负数为0,得到该主题的Simhash值。
    Simhash值一样的主题,就被聚集到了同个cluster上。Simhash是局部敏感性的哈希算法,一般两个主题越相似,计算得到的Simhash的Hamming distance会越小。对于超大模型,一些主题计算得到的Simhash值一样,除了大部分是主题比较相似外,还有一些是由于主题中某个单词的权值较大,支配了Simhash的计算,导致该单词占比大的一些主题得到的Simhash值一样,或者是由于随机误差,导致两个语义不相关的主题得到了一样的Simhash值。这样,仅仅依赖Simhash值一样的cluster就进行主题融合,会导致一些不相似的主题被融合到一起,为了进一步提高主题模型快速去重的质量,我们在Simhash主题预分析后,会在Simhash值一样的cluster内,以Weighted Jaccard Similarity进一步的计算,来确定相似的主题。
  • model_dir是模型目录
  • conf是模型配置文件,默认为lda.conf
  • threshold是设定阈值,高于该阈值表示两个主题为冗余,需要根据压缩程序来设定该值
  • output_file是输出文件
    运行上述命令,针对新闻LDA模型进行去重,效果如下所示:
  1. Now, in total we have 1931 refined topics.