Apache spark spark中的LDA:LDA模型中缺少一些培训文档。他们怎么了?

Apache spark spark中的LDA:LDA模型中缺少一些培训文档。他们怎么了?,apache-spark,nlp,lda,apache-spark-mllib,Apache Spark,Nlp,Lda,Apache Spark Mllib,我从一个文本文件构建语料库,语料库是一个文档ID的javapairdd(使用zipWithIndex()创建)和词汇表中每个单词在每个文档中出现的次数计数。我试着数一数下面的文件,我想我应该得到相同的数字 System.out.println("Corpus: " + corpus.count()); // Cluster the documents into three topics using LDA DistributedLDAModel ldaModel = (

我从一个文本文件构建语料库,语料库是一个文档ID的
javapairdd
(使用
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());
当我计算每个文档的词汇量时,我只查看最常见的单词。基于此,两个文档可能看起来完全相同,并且如果一个文档只有不常见的单词,那么也可能是全零

我自己也在研究导致问题的原因,但如果有一种方法可以防止属于这两种情况之一的文档被“删减”或发生任何事情,这可能会解决我的问题

在第一个
println
中,我得到了1642012。创建我的LDA模型并检查尺寸后,我只有1582300。我丢失了59982份文件


这些丢失的文档怎么了?

我发现了我的问题。我的语料库中充满了只有不寻常词语的文档。我们常用单词vocab中每个单词出现频率的结果向量看起来像[0,0,0,0,0,0,…,0],显然在构建LDA模型之前已删除

我可以通过包括vocab中的所有单词来解决这个问题,而不仅仅是普通单词,或者(这就是我所做的)在末尾添加一个不常见单词的位置,这样每个至少有一个单词的文档在向量中至少有一个非零元素