LDA in spark:LDA模型缺少一些培训文件。他们发生了什么?

时间:2016-01-05 15:11:12

标签: apache-spark nlp lda apache-spark-mllib

我从文本文件构建语料库,语料库是文档ID的JavaPairRDD<Long, Vector>(创建zipWithIndex()),并且计算每个文档中词汇表中每个单词出现的次数。我试着计算下面的文件,我想我应该得到相同的数字。

    System.out.println("Corpus: " + corpus.count());

    // Cluster the documents into three topics using LDA
    DistributedLDAModel ldaModel = (DistributedLDAModel) new LDA().setK(6).run(corpus);

    System.out.println("LDA Model: " + ldaModel.topTopicsPerDocument(2).count());

当我计算每个文档的词汇量时,我只会查看最常用的词汇。基于此,两个文档可能看起来相同,并且如果文档只有不常见的单词,也可能全部为零。

我自己也在调查这个问题,但是如果有办法让那些陷入其中任何一种情况的文件被修剪掉#34;或者无论发生什么,这可能会解决我的问题。

在第一个println我得到1642012.创建我的LDA模型并检查尺寸后我只有1582030.我缺少59982个文件。

这些遗失的文件发生了什么?

1 个答案:

答案 0 :(得分:1)

我发现了我的问题。我的语料库里面装满了DID只有UNcommon字样的文件。我们常用词汇词汇中每个词出现的频率的结果向量看起来像[0,0,0,0,0,...,0],并且在构建LDA模型之前显然已被删除。

我可以通过在词汇中包含所有单词来解决这个问题,而不仅仅是常用单词,或者(我做的是)在最后添加了一个非常常用词的位置,因此每个至少包含一个单词的文档至少包含向量中的一个非零元素。