本页介绍对于一个训练好的主题模型,如何进行主题去重并对冗余度较高的主题进行聚合。

主题去重

对于任意两个主题,我们考虑其前K个词的分布,我们提供了两个指标进行冗余性评估:

  • 对于任意两个主题,计算它们前K个词的Jaccard Similarity,定义为:
    主题去重工具 - 图1

如果相似性 ≥ 用户定义的Jaccard_thresh,即认定这两个topic存在较大的冗余。

  • 对于任意两个主题,计算它们前K个词的Weighted Jaccard Similarity,定义为:
    主题去重工具 - 图2

如果相似性 ≥ 用户定义的Jaccard_thresh,即认定这两个主题存在较大的冗余。

我们记录了所有冗余的主题对,通过Disjoint-Set (即Union-Find) 找到非连接的若干集合,并把每个集合内的主题合并到一起,完成主题去重。

使用方法

运行merge_run.py脚本对训练好的主题模型进行去重:

  1. $ python TopicMerge/merge_runner.py --model_dir=../model/news --conf=lda.conf --k=30 --Jac_opt=0 --threshold=0.1 --output_file=news_lda.merge.model
  • model_dir是模型目录
  • conf是模型配置文件,默认为lda.conf
  • k是每个主题选取前K个词进行相似度计算,默认为30
  • Jac_opt选择衡量策略,0表示启用Jaccard Similarity,1表示启用Weighted Jaccard Similarity
  • threshold是设定阈值,高于该阈值表示两个主题为冗余,需要根据压缩程序来设定该值
  • output_file是输出文件
    运行上述命令对新闻LDA模型进行去重,效果如下:
  1. Merge 1036 redundant topics into 87 topics (sets).
  2. Now, in total we have 1051 refined topics.