summaryrefslogtreecommitdiff
path: root/python/src/hypergraph.pxd
diff options
context:
space:
mode:
Diffstat (limited to 'python/src/hypergraph.pxd')
-rw-r--r--python/src/hypergraph.pxd87
1 files changed, 65 insertions, 22 deletions
diff --git a/python/src/hypergraph.pxd b/python/src/hypergraph.pxd
index 4aef6955..886660bf 100644
--- a/python/src/hypergraph.pxd
+++ b/python/src/hypergraph.pxd
@@ -1,41 +1,84 @@
from libcpp.string cimport string
from libcpp.vector cimport vector
from utils cimport *
-cimport lattice
+from grammar cimport TRule
+from lattice cimport Lattice
cdef extern from "decoder/hg.h":
+ cdef cppclass EdgeMask "std::vector<bool>":
+ EdgeMask(int size)
+ bint& operator[](int)
+
+ cdef cppclass HypergraphEdge "Hypergraph::Edge":
+ int id_
+ int head_node_ # position in hg.nodes_
+ SmallVector[unsigned] tail_nodes_ # positions in hg.nodes_
+ shared_ptr[TRule] rule_
+ FastSparseVector[weight_t] feature_values_
+ prob_t edge_prob_ # weights.dot(feature_values_)
+ # typically source span:
+ short int i_
+ short int j_
+
+ ctypedef HypergraphEdge const_HypergraphEdge "const Hypergraph::Edge"
+
+ cdef cppclass HypergraphNode "Hypergraph::Node":
+ int id_
+ WordID cat_ # non-terminal category if <0, 0 if not set
+ vector[int] in_edges_ # positions in hg.edge_prob_
+ vector[int] out_edges_ # positions in hg.edge_prob_
+
+ ctypedef HypergraphNode const_HypergraphNode "const Hypergraph::Node"
+
cdef cppclass Hypergraph:
- cppclass Node:
- int id_
- WordID cat_
- WordID NT()
- #EdgesVector in_edges_
- #EdgesVector out_edges_
Hypergraph(Hypergraph)
- vector[Node] nodes_
+ vector[HypergraphNode] nodes_
+ vector[HypergraphEdge] edges_
+ int GoalNode()
+ double NumberOfPaths()
+ void Reweight(vector[weight_t]& weights)
+ void Reweight(FastSparseVector& weights)
+ bint PruneInsideOutside(double beam_alpha,
+ double density,
+ EdgeMask* preserve_mask,
+ bint use_sum_prod_semiring,
+ double scale,
+ bint safe_inside)
cdef extern from "decoder/viterbi.h":
- cdef prob_t ViterbiESentence(Hypergraph hg, vector[WordID]* trans)
- cdef string ViterbiETree(Hypergraph hg)
+ prob_t ViterbiESentence(Hypergraph& hg, vector[WordID]* trans)
+ string ViterbiETree(Hypergraph& hg)
+ prob_t ViterbiFSentence(Hypergraph& hg, vector[WordID]* trans)
+ string ViterbiFTree(Hypergraph& hg)
+ FastSparseVector[weight_t] ViterbiFeatures(Hypergraph& hg)
+ FastSparseVector[weight_t] ViterbiFeatures(Hypergraph& hg,
+ FastSparseVector[weight_t]* weights,
+ bint fatal_dotprod_disagreement)
+ string JoshuaVisualizationString(Hypergraph& hg)
cdef extern from "decoder/hg_io.h" namespace "HypergraphIO":
bint ReadFromJSON(istream* inp, Hypergraph* out)
- bint WriteToJSON(Hypergraph hg, bint remove_rules, ostream* out)
-
- #void WriteAsCFG(Hypergraph hg)
- #void WriteTarget(string base, unsigned sent_id, Hypergraph hg)
-
- void ReadFromPLF(string inp, Hypergraph* out, int line=*)
- string AsPLF(Hypergraph hg, bint include_global_parentheses=*)
- string AsPLF(lattice.Lattice lat, bint include_global_parentheses=*)
- void PLFtoLattice(string plf, lattice.Lattice* pl)
+ bint WriteToJSON(Hypergraph& hg, bint remove_rules, ostream* out)
+ void ReadFromPLF(string& inp, Hypergraph* out, int line)
+ string AsPLF(Hypergraph& hg, bint include_global_parentheses)
+ void PLFtoLattice(string& plf, Lattice* pl)
+ string AsPLF(Lattice& lat, bint include_global_parentheses)
cdef extern from "decoder/hg_intersect.h" namespace "HG":
- bint Intersect(lattice.Lattice target, Hypergraph* hg)
+ bint Intersect(Lattice& target, Hypergraph* hg)
cdef extern from "decoder/hg_sampler.h" namespace "HypergraphSampler":
cdef cppclass Hypothesis:
vector[WordID] words
- SparseVector[double] fmap
+ FastSparseVector[weight_t] fmap
prob_t model_score
- void sample_hypotheses(Hypergraph hg, unsigned n, MT19937* rng, vector[Hypothesis]* hypos)
+ void sample_hypotheses(Hypergraph& hg,
+ unsigned n,
+ MT19937* rng,
+ vector[Hypothesis]* hypos)
+
+cdef extern from "decoder/csplit.h" namespace "CompoundSplit":
+ int GetFullWordEdgeIndex(Hypergraph& forest)
+
+cdef extern from "decoder/inside_outside.h":
+ prob_t InsideOutside "InsideOutside<prob_t, EdgeProb, SparseVector<prob_t>, EdgeFeaturesAndProbWeightFunction>" (Hypergraph& hg, FastSparseVector[prob_t]* result)