2016-01-05 12 views
1

Я строю свой корпус из текстового файла, а corpus - это JavaPairRDD<Long, Vector> идентификатора документа (созданного с zipWithIndex()) и количество раз, сколько раз каждое слово в лексике появляется в каждом документе. Я пытаюсь подсчитать документы ниже, и я думаю, что я должен получить тот же номер.LDA in spark: некоторые учебные документы отсутствуют в модели LDA. Что с ними случилось?

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 и проверки размера у меня только 1582030. Мне не хватает 59982 документов.

Что происходит с этими недостающими документами?

ответ

1

Я нашел свою проблему. Мой корпус был заполнен документами, которые имели только обычные слова. Результирующий вектор того, как часто каждое слово в наших общих словах vocab выглядело, выглядело как [0, 0, 0, 0, 0, ..., 0] и, очевидно, было удалено перед построением модели LDA.

Я мог бы исправить это, включив все слова в vocab, а не только общие слова, или (что я и сделал) добавили пятно для необычных слов в конце, чтобы каждый документ с хотя бы одним словом имел хотя бы один ненулевой элемент в векторе.

 Смежные вопросы

  • Нет связанных вопросов^_^