diff options
Diffstat (limited to 'decoder')
-rw-r--r-- | decoder/cdec.cc | 2 | ||||
-rwxr-xr-x | decoder/cfg.cc | 12 | ||||
-rwxr-xr-x | decoder/cfg.h | 3 | ||||
-rwxr-xr-x | decoder/cfg_binarize.h | 4 |
4 files changed, 16 insertions, 5 deletions
diff --git a/decoder/cdec.cc b/decoder/cdec.cc index 0a02801e..b156c268 100644 --- a/decoder/cdec.cc +++ b/decoder/cdec.cc @@ -379,7 +379,7 @@ void maybe_prune(Hypergraph &forest,po::variables_map const& conf,string nbeam,s } forest.PruneInsideOutside(beam_prune,density_prune,pm,false,1,conf["promise_power"].as<double>()); if (!forestname.empty()) forestname=" "+forestname; - forest_stats(forest," Pruned "+forestname+" forest",false,false,false); + forest_stats(forest," Pruned "+forestname+" forest",false,false,0,false); cerr << " Pruned "<<forestname<<" forest portion of edges kept: "<<forest.edges_.size()/presize<<endl; } } diff --git a/decoder/cfg.cc b/decoder/cfg.cc index f51da9bf..c02f46ec 100755 --- a/decoder/cfg.cc +++ b/decoder/cfg.cc @@ -10,7 +10,7 @@ #include "show.h" #define DUNIQ(x) x -#define DBIN(x) x +#define DBIN(x) #define DSP(x) x //SP:binarize by splitting. #define DCFG(x) IF_CFG_DEBUG(x) @@ -464,6 +464,8 @@ void CFG::BinarizeSplit(CFGBinarize const& b) { void CFG::Binarize(CFGBinarize const& b) { if (!b.Binarizing()) return; cerr << "Binarizing "<<b<<endl; + if (b.bin_thresh>0) + BinarizeThresh(b); if (b.bin_split) BinarizeSplit(b); if (b.bin_l2r) @@ -473,6 +475,14 @@ void CFG::Binarize(CFGBinarize const& b) { } +namespace { +} + +void CFG::BinarizeThresh(CFGBinarize const& b) { + throw runtime_error("TODO: some fancy linked list thing - see NOTES.partial.binarize"); +} + + void CFG::BinarizeL2R(bool bin_unary,bool name) { add_virtual_rules<BinRhs> v(*this,name); cerr << "Binarizing left->right " << (bin_unary?"real to unary":"stop at binary") <<endl; diff --git a/decoder/cfg.h b/decoder/cfg.h index 5a418234..9be0926d 100755 --- a/decoder/cfg.h +++ b/decoder/cfg.h @@ -306,7 +306,8 @@ struct CFG { void BinarizeL2R(bool bin_unary=false,bool name_nts=false); void Binarize(CFGBinarize const& binarize_options); // see cfg_binarize.h for docs - void BinarizeSplit(CFGBinarize const& binarize_options); // there may be many options affecting split. + void BinarizeSplit(CFGBinarize const& binarize_options); + void BinarizeThresh(CFGBinarize const& binarize_options); // maybe unbundle opts later typedef std::vector<NT> NTs; NTs nts; diff --git a/decoder/cfg_binarize.h b/decoder/cfg_binarize.h index 41eba11b..ae06f8bf 100755 --- a/decoder/cfg_binarize.h +++ b/decoder/cfg_binarize.h @@ -37,8 +37,8 @@ struct CFGBinarize { } void Validate() { if (bin_thresh>0&&!bin_l2r) { - std::cerr<<"\nWARNING: greedy binarization not yet supported; using l2r (right branching) instead.\n"; - bin_l2r=true; +// std::cerr<<"\nWARNING: greedy binarization not yet supported; using l2r (right branching) instead.\n"; +// bin_l2r=true; } if (false && bin_l2r && bin_split) { // actually, split may be slightly incomplete due to finite number of passes. std::cerr<<"\nWARNING: l2r and split are both complete binarization and redundant. Using split.\n"; |