List of usage examples for edu.stanford.nlp.util ScoredObject ScoredObject
public ScoredObject(T object, double score)
From source file:conditionalCFG.ConditionalCFGParser.java
License:Open Source License
/** Get the exact k best parses for the sentence. * * @param k The number of best parses to return * @return The exact k best parses for the sentence, with * each accompanied by its score (typically a * negative log probability).//from w ww.j a v a2 s . c om */ public List<ScoredObject<Tree>> getKBestParses(int k) { cand = new HashMap<Vertex, PriorityQueue<Derivation>>(); dHat = new HashMap<Vertex, LinkedList<Derivation>>(); int start = 0; int end = length; int goal = stateIndex.indexOf(goalStr); Vertex v = new Vertex(goal, start, end); List<ScoredObject<Tree>> kBestTrees = new ArrayList<ScoredObject<Tree>>(); for (int i = 1; i <= k; i++) { Tree internalTree = getTree(v, i, k); if (internalTree == null) { break; } // restoreUnaries(internalTree); kBestTrees.add(new ScoredObject<Tree>(internalTree, dHat.get(v).get(i - 1).score)); double score = scoreBinarizedTree(internalTree, 0); if (Math.abs(score - dHat.get(v).get(i - 1).score) > 1e-1) { System.out.println(score + " " + dHat.get(v).get(i - 1).score); assert (false); } } return kBestTrees; }
From source file:conditionalCFG.ConditionalCFGParser.java
License:Open Source License
/** Get a complete set of the maximally scoring parses for a sentence, * rather than one chosen at random. This set may be of size 1 or larger. * * @return All the equal best parses for a sentence, with each * accompanied by its score/*from ww w. j a va2 s .c o m*/ */ public List<ScoredObject<Tree>> getBestParses() { int start = 0; int end = length; int goal = stateIndex.indexOf(goalStr); double bestScore = iScore[start][end][goal]; List<Tree> internalTrees = extractBestParses(goal, start, end); //System.out.println("Got internal best parse..."); // for (Tree internalTree : internalTrees) { // restoreUnaries(internalTree); // } //System.out.println("Restored unaries..."); List<ScoredObject<Tree>> scoredTrees = new ArrayList<ScoredObject<Tree>>(internalTrees.size()); for (Tree tr : internalTrees) { scoredTrees.add(new ScoredObject<Tree>(tr, bestScore)); } return scoredTrees; //TreeTransformer debinarizer = BinarizerFactory.getDebinarizer(); //return debinarizer.transformTree(internalTree); }