我从文本文件构建语料库,语料库是文档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个文件。
这些遗失的文件发生了什么?
答案 0 :(得分:1)
我发现了我的问题。我的语料库里面装满了DID只有UNcommon字样的文件。我们常用词汇词汇中每个词出现的频率的结果向量看起来像[0,0,0,0,0,...,0],并且在构建LDA模型之前显然已被删除。
我可以通过在词汇中包含所有单词来解决这个问题,而不仅仅是常用单词,或者(我做的是)在最后添加了一个非常常用词的位置,因此每个至少包含一个单词的文档至少包含向量中的一个非零元素。