как предсказать темы для пакета документов с молотком - PullRequest
0 голосов
/ 14 сентября 2018

Я использую молоток из проекта Scala.После обучения моделей тем и получения файла логического вывода я попытался назначить темы для новых текстов.Проблема в том, что я получил разные результаты с разными методами вызова.Вот что я попробовал:

  1. создание нового InstanceList и получение всего одного документа и получение результатов по теме из InstanceList

    somecontentList.map(text=>getTopics(text, model))
    def getTopics(text:String, inferencer: TopicInferencer):Array[Double]={
        val testing = new InstanceList(pipe)
        testing.addThruPipe(new Instance(text, null, "test instance", null))
        inferencer.getSampledDistribution(testing.get(0), iter, 1, burnIn)
    }
    
  2. Поместите все в InstanceList и прогнозируйте темы вместе.

    val testing = new InstanceList(pipe)
    somecontentList.foreach(text=>
        testing.addThruPipe(new Instance(text, null, "test instance", null))
    )
    (0 until testing.size).map(i=> 
        ldaModel.getSampledDistribution(testing.get(i), 100, 1, 50))
    

Эти два метода дают очень разные результаты, за исключением первого экземпляра.Как правильно использовать логический вывод?

Дополнительная информация: я проверил данные экземпляра.

0: topic (0)
1: beaten (1)
2: death (2)
3: examples (3)
4: forum (4)
5: wanted (5)
6: contributing (6)

Я предполагаю, что число в скобках - это индекс слов, используемых в предсказании.Когда я помещаю весь текст в InstanceList, индекс отличается, потому что в коллекции больше текста.Не уверен, как именно эта информация учитывается в процессе прогнозирования модели.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Помните, что новые экземпляры должны быть импортированы вместе с конвейером из исходных данных, записанных в Inferencer, чтобы алфавиты соответствовали. Непонятно, откуда взято pipe в коде scala, но тот факт, что первые шесть слов, кажется, имеют то, что выглядит как идентификаторы, начинающиеся с 0, предполагает, что это новый алфавит.

0 голосов
/ 15 сентября 2018

Я тоже обнаружил похожую проблему, хотя с подключаемым R. В итоге мы вызвали Inferencer для каждой строки / документа отдельно.

Однако при выводе одной и той же строки будут некоторые различия в выводах из-за стохастичности чертежа и логического вывода.Хотя, согласен, различия должны быть небольшими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...