def _oracle(self, forest): sc, parseval, tr, edgelist = forest_oracle(forest, forest.goldtree) forest.oracle_tree = tr forest.oracle_fvector = Hyperedge.deriv2fvector(edgelist) if Decoder.MAX_NUM_BRACKETS < 0: forest.oracle_size_ratio = 1 else: forest.oracle_size_ratio = len(tr.all_label_spans()) / Decoder.MAX_NUM_BRACKETS
optparser.error("must specify GAP.") if opts.oracle: from oracle import forest_oracle from parseval import Parseval realpp = Parseval() total_nodes = total_edges = 0 for i, forest in enumerate(Forest.load("-")): if opts.gap > 0: prune(forest, opts.gap) if opts.oracle: sc, parseval, tr, edgelist = forest_oracle(forest, forest.goldtree) realpp += Parseval(tr, forest.goldtree) for edge in edgelist: edge.head.oracle_edge = edge edge.is_oracle = True if not opts.quiet: if opts.suffix is not None: forest.dump(open("%d.%s" % (i+opts.startid, opts.suffix), "wt")) else: forest.dump() if opts.oracle: print >> logs, realpp print >> logs, "%d forests pruned, avg remaining size: %d %d" % \