private double score(ParallelTopicModel topicModel, int uidx, int iidx) { double[] pu = topicModel.getTopicProbabilities(uidx); int[] qi = topicModel.typeTopicCounts[iidx]; double score = 0.0; int i = 0; while (i < qi.length && qi[i] > 0) { int z = qi[i] & topicModel.topicMask; int n = qi[i] >> topicModel.topicBits; score += pu[z] * (n / (double) topicModel.tokensPerTopic[z]); i++; } return score; }
/** Get the smoothed distribution over topics for a training instance. */ public double[] getTopicProbabilities(int instanceID) { LabelSequence topics = data.get(instanceID).topicSequence; return getTopicProbabilities(topics); }
/** Get the smoothed distribution over topics for a training instance. */ public double[] getTopicProbabilities(int instanceID) { LabelSequence topics = data.get(instanceID).topicSequence; return getTopicProbabilities(topics); }
/** Get the smoothed distribution over topics for a training instance. */ public double[] getTopicProbabilities(int instanceID) { LabelSequence topics = data.get(instanceID).topicSequence; return getTopicProbabilities(topics); }
double[] topicDistribution = model.getTopicProbabilities(0);
double[] topicDistribution = model.getTopicProbabilities(0);
double[] topicDistribution = model.getTopicProbabilities(0);
private void writeTopicAssignmentsToMongo( InstanceList instances, TopicWords topicWords, ParallelTopicModel model) { IntStream.range(0, instances.size()) .forEach( document -> { double[] topicDistribution = model.getTopicProbabilities(document); int maxAt = new MaximumIndex(topicDistribution).find(); Instance instance = instances.get(document); List<String> iterator = topicWords.forTopic(maxAt); documentsCollection.findOneAndUpdate( Filters.eq(new ObjectId((String) instance.getName())), Updates.set( TOPIC_FIELD, new Document() .append(KEYWORDS_FIELD, iterator.toString()) .append(TOPIC_NUMBER_FIELD, maxAt))); }); }
private void writeTopicAssignmentsToMongo( InstanceList instances, TopicWords topicWords, ParallelTopicModel model) { IntStream.range(0, instances.size()) .forEach( document -> { double[] topicDistribution = model.getTopicProbabilities(document); int maxAt = new MaximumIndex(topicDistribution).find(); Instance instance = instances.get(document); List<String> iterator = topicWords.forTopic(maxAt); documentsCollection.findOneAndUpdate( Filters.eq(new ObjectId((String) instance.getName())), Updates.set( TOPIC_FIELD, new Document() .append(KEYWORDS_FIELD, iterator.toString()) .append(TOPIC_NUMBER_FIELD, maxAt))); }); }