summaryrefslogtreecommitdiff
path: root/python/src
diff options
context:
space:
mode:
authorChris Dyer <cdyer@cs.cmu.edu>2012-08-07 23:22:44 -0400
committerChris Dyer <cdyer@cs.cmu.edu>2012-08-07 23:22:44 -0400
commit6ba464f6d78e38970d5467b10ce1114f4d7feaa4 (patch)
tree15614a9ee68a2f0b5d05025752b0dd2bc94ae67d /python/src
parentc6f5711203782e2677ad95da3ffa7a79fc0fbf3a (diff)
sample trees from hypergraphs
Diffstat (limited to 'python/src')
-rw-r--r--python/src/hypergraph.pxd4
-rw-r--r--python/src/hypergraph.pxi12
2 files changed, 16 insertions, 0 deletions
diff --git a/python/src/hypergraph.pxd b/python/src/hypergraph.pxd
index 886660bf..abd6759c 100644
--- a/python/src/hypergraph.pxd
+++ b/python/src/hypergraph.pxd
@@ -76,6 +76,10 @@ cdef extern from "decoder/hg_sampler.h" namespace "HypergraphSampler":
unsigned n,
MT19937* rng,
vector[Hypothesis]* hypos)
+ void sample_trees(Hypergraph& hg,
+ unsigned n,
+ MT19937* rng,
+ vector[string]* trees)
cdef extern from "decoder/csplit.h" namespace "CompoundSplit":
int GetFullWordEdgeIndex(Hypergraph& forest)
diff --git a/python/src/hypergraph.pxi b/python/src/hypergraph.pxi
index b210f440..62dd5bb1 100644
--- a/python/src/hypergraph.pxi
+++ b/python/src/hypergraph.pxi
@@ -85,6 +85,18 @@ cdef class Hypergraph:
finally:
del hypos
+ def sample_trees(self, unsigned n):
+ cdef vector[string]* trees = new vector[string]()
+ if self.rng == NULL:
+ self.rng = new MT19937()
+ hypergraph.sample_trees(self.hg[0], n, self.rng, trees)
+ cdef unsigned k
+ try:
+ for k in range(trees.size()):
+ yield unicode(trees[0][k].c_str(), 'utf8')
+ finally:
+ del trees
+
def intersect(self, Lattice lat):
return hypergraph.Intersect(lat.lattice[0], self.hg)