Esempio n. 1
0
 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
Esempio n. 2
0
        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" % \