public DynamicPathTree constructCategoryTree(SortedMap<Integer, Double> categoryDistribution) throws WikitException { DynamicPathTree tree = new DynamicPathTree(conf); for (Map.Entry<Integer, Double> score : categoryDistribution.entrySet()) { tree.addLeafNode(score.getKey(), score.getValue()); } return tree; }
public List<SemanticPath> getSemanticPaths(DynamicPathTree categoryTree, int topN) throws WikitException { List<SemanticPath> paths = null; // paths = categoryTree.getSemanticPaths(); paths = categoryTree.getFilteredSemanticPaths(); List<SemanticPath> results = new ArrayList<>(); // int count = 0; // for (int i = paths.size() - 1; i >= 0; i--) { // results.add(paths.get(i)); // if (++count >= 200) break; // } GreedyMWIS greedyMWIS = new GreedyMWIS(treeCache); greedyMWIS.buildMWISGraph(paths); for (int i = 0; i < topN; i++) { SemanticPath topPath = greedyMWIS.findTopNode(); if (topPath != null) { results.add(topPath); } else { break; } } return results; }
public CategoryDistribution getLevelOneDistribution(DynamicPathTree tree) throws WikitException { return tree.getLevelDistribution(); }