From f9d54fd08e217c7bca19f7c821a64d8ae9d81a2a Mon Sep 17 00:00:00 2001 From: graehl Date: Sat, 7 Aug 2010 00:31:04 +0000 Subject: usage for FSA features git-svn-id: https://ws10smt.googlecode.com/svn/trunk@485 ec762483-ff6d-05da-a07a-a48fb63a330f --- decoder/cdec.cc | 4 ++-- decoder/cdec_ff.cc | 2 +- decoder/ff_factory.cc | 17 +++++++++++++++++ decoder/ff_factory.h | 4 ++++ 4 files changed, 24 insertions(+), 3 deletions(-) (limited to 'decoder') diff --git a/decoder/cdec.cc b/decoder/cdec.cc index e896a484..a7c99307 100644 --- a/decoder/cdec.cc +++ b/decoder/cdec.cc @@ -200,14 +200,14 @@ void InitCommandLine(int argc, char** argv, OracleBleu &ob, po::variables_map* c if (conf.count("list_feature_functions")) { cerr << "Available feature functions (specify with -F; describe with -u FeatureName):\n"; ff_registry.DisplayList(); - cerr << "Available feature functions (specify with --fsa_feature_function):\n"; + cerr << "Available FSA feature functions (specify with --fsa_feature_function):\n"; fsa_ff_registry.DisplayList(); cerr << endl; exit(1); } if (conf.count("usage")) { - cout<); // same as WordPenalty, but implemented using ff_fsa - ff_registry.Register(new FFFactory >); + RegisterFsaImpl(true,false); ff_registry.Register(new FFFactory >); ff_registry.Register(new FFFactory >); diff --git a/decoder/ff_factory.cc b/decoder/ff_factory.cc index b3aeeac1..767cc675 100644 --- a/decoder/ff_factory.cc +++ b/decoder/ff_factory.cc @@ -2,6 +2,7 @@ #include "ff.h" #include "stringlib.h" +#include using boost::shared_ptr; using namespace std; @@ -27,6 +28,10 @@ bool UntypedFactoryRegistry::parse_debug(std::string & param) { return debug; } +bool UntypedFactoryRegistry::have(std::string const& ffname) { + return reg_.find(ffname)!=reg_.end(); +} + void UntypedFactoryRegistry::DisplayList() const { for (Factmap::const_iterator it = reg_.begin(); it != reg_.end(); ++it) { @@ -75,3 +80,15 @@ struct null_deleter boost::shared_ptr global_fsa_ff_registry(&fsa_ff_registry,null_deleter()); boost::shared_ptr global_ff_registry(&ff_registry,null_deleter()); */ + +void ff_usage(std::string const& n,std::ostream &out) +{ + bool have=ff_registry.have(n); + if (have) + cout<<"FF "< { struct UntypedFactoryRegistry { std::string usage(std::string const& ffname,bool params=true,bool verbose=true) const; + bool have(std::string const& ffname); void DisplayList() const; void Register(const std::string& ffname, UntypedFactory* factory); void Register(UntypedFactory* factory); @@ -106,6 +107,9 @@ extern FsaFFRegistry fsa_ff_registry; inline FsaFFRegistry & global_fsa_ff_registry() { return fsa_ff_registry; } extern FFRegistry ff_registry; inline FFRegistry & global_ff_registry() { return ff_registry; } + +void ff_usage(std::string const& name,std::ostream &out=std::cout); + /* extern boost::shared_ptr global_fsa_ff_registry; extern boost::shared_ptr global_ff_registry; -- cgit v1.2.3