summaryrefslogtreecommitdiff
path: root/training/dtrain/dtrain.h
diff options
context:
space:
mode:
Diffstat (limited to 'training/dtrain/dtrain.h')
-rw-r--r--training/dtrain/dtrain.h110
1 files changed, 66 insertions, 44 deletions
diff --git a/training/dtrain/dtrain.h b/training/dtrain/dtrain.h
index 0bbb5c9b..18a7dbdc 100644
--- a/training/dtrain/dtrain.h
+++ b/training/dtrain/dtrain.h
@@ -22,59 +22,90 @@ namespace po = boost::program_options;
namespace dtrain
{
-struct ScoredHyp
+struct Hyp
{
+ Hyp() {}
+ Hyp(vector<WordID> w, SparseVector<weight_t> f, weight_t model, weight_t gold,
+ size_t rank) : w(w), f(f), model(model), gold(gold), rank(rank) {}
+
vector<WordID> w;
SparseVector<weight_t> f;
weight_t model, gold;
size_t rank;
};
-inline void
-PrintWordIDVec(vector<WordID>& v, ostream& os=cerr)
-{
- for (size_t i = 0; i < v.size(); i++) {
- os << TD::Convert(v[i]);
- if (i < v.size()-1) os << " ";
- }
-}
-
-inline ostream& _np(ostream& out) { return out << resetiosflags(ios::showpos); }
-inline ostream& _p(ostream& out) { return out << setiosflags(ios::showpos); }
-inline ostream& _p4(ostream& out) { return out << setprecision(4); }
-
bool
-dtrain_init(int argc, char** argv, po::variables_map* conf)
+dtrain_init(int argc,
+ char** argv,
+ po::variables_map* conf)
{
po::options_description opts("Configuration File Options");
opts.add_options()
- ("bitext,b", po::value<string>(), "bitext")
- ("decoder_conf,C", po::value<string>(), "configuration file for decoder")
- ("iterations,T", po::value<size_t>()->default_value(15), "number of iterations T (per shard)")
- ("k", po::value<size_t>()->default_value(100), "size of kbest list")
- ("learning_rate,l", po::value<weight_t>()->default_value(0.00001), "learning rate")
- ("l1_reg,r", po::value<weight_t>()->default_value(0.), "l1 regularization strength")
- ("margin,m", po::value<weight_t>()->default_value(1.0), "margin for margin perceptron")
- ("score,s", po::value<string>()->default_value("chiang"), "per-sentence BLEU approx.")
- ("N", po::value<size_t>()->default_value(4), "N for BLEU approximation")
- ("input_weights,w", po::value<string>(), "input weights file")
- ("average,a", po::bool_switch()->default_value(true), "output average weights")
- ("keep,K", po::bool_switch()->default_value(false), "output a weight file per iteration")
- ("struct,S", po::bool_switch()->default_value(false), "structured SGD with hope/fear")
- ("output,o", po::value<string>()->default_value("-"), "output weights file, '-' for STDOUT")
- ("disable_learning,X", po::bool_switch()->default_value(false), "disable learning")
- ("output_data,D", po::value<string>()->default_value(""), "output data to STDOUT; arg. is 'kbest', 'default' or 'all'")
+ ("bitext,b", po::value<string>(),
+ "bitext, source and references in a single file [e ||| f]")
+ ("decoder_conf,C", po::value<string>(),
+ "decoder configuration file")
+ ("iterations,T", po::value<size_t>()->default_value(15),
+ "number of iterations T")
+ ("k", po::value<size_t>()->default_value(100),
+ "sample size per input (e.g. size of k-best lists)")
+ ("unique_kbest", po::bool_switch()->default_value(true),
+ "unique k-best lists")
+ ("forest_sample", po::bool_switch()->default_value(false),
+ "sample k hyptheses from forest instead of using k-best list")
+ ("learning_rate,l", po::value<weight_t>()->default_value(0.00001),
+ "learning rate [only meaningful if margin>0 or input weights are given]")
+ ("l1_reg,r", po::value<weight_t>()->default_value(0.),
+ "l1 regularization strength [see Tsuruoka, Tsujii and Ananiadou (2009)]")
+ ("margin,m", po::value<weight_t>()->default_value(1.0),
+ "margin for margin perceptron [set =0 for standard perceptron]")
+ ("cut,u", po::value<weight_t>()->default_value(0.1),
+ "use top/bottom 10% (default) of k-best as 'good' and 'bad' for \
+pair sampling, 0 to use all pairs TODO")
+ ("adjust,A", po::bool_switch()->default_value(false),
+ "adjust cut for optimal pos. in k-best to cut")
+ ("score,s", po::value<string>()->default_value("chiang"),
+ "per-sentence BLEU (approx.)")
+ ("nakov_fix", po::value<weight_t>()->default_value(1.0),
+ "add to reference length [see score.h]")
+ ("chiang_decay", po::value<weight_t>()->default_value(0.9),
+ "decaying factor for Chiang's approx. BLEU")
+ ("N", po::value<size_t>()->default_value(4),
+ "N for BLEU approximation")
+ ("input_weights,w", po::value<string>(),
+ "weights to initialize model")
+ ("average,a", po::bool_switch()->default_value(true),
+ "output average weights")
+ ("keep,K", po::bool_switch()->default_value(false),
+ "output a weight file per iteration [as weights.T.gz]")
+ ("structured,S", po::bool_switch()->default_value(false),
+ "structured prediction objective [hope/fear] w/ SGD")
+ ("pro_sampling", po::bool_switch()->default_value(false),
+ "updates from pairs selected as shown in Fig.4 of (Hopkins and May, 2011) [Gamma=max_pairs (default 5000), Xi=cut (default 50); threshold default 0.05]")
+ ("threshold", po::value<weight_t>()->default_value(0.),
+ "(min.) threshold in terms of gold score for pair selection")
+ ("max_pairs",
+ po::value<size_t>()->default_value(numeric_limits<size_t>::max()),
+ "max. number of updates/pairs")
+ ("output,o", po::value<string>()->default_value("-"),
+ "output weights file, '-' for STDOUT")
+ ("disable_learning,X", po::bool_switch()->default_value(false),
+ "fix model")
+ ("output_updates,U", po::value<string>()->default_value(""),
+ "output updates (diff. vectors) [to filename]")
+ ("output_raw,R", po::value<string>()->default_value(""),
+ "output raw data (e.g. k-best lists) [to filename]")
("print_weights,P", po::value<string>()->default_value("EgivenFCoherent SampleCountF CountEF MaxLexFgivenE MaxLexEgivenF IsSingletonF IsSingletonFE Glue WordPenalty PassThrough LanguageModel LanguageModel_OOV"),
- "list of weights to print after each iteration");
+ "list of weights to print after each iteration");
po::options_description clopts("Command Line Options");
clopts.add_options()
("conf,c", po::value<string>(), "dtrain configuration file")
("help,h", po::bool_switch(), "display options");
opts.add(clopts);
po::store(parse_command_line(argc, argv, opts), *conf);
- cerr << "dtrain" << endl << endl;
+ cerr << "*dtrain*" << endl << endl;
if ((*conf)["help"].as<bool>()) {
- cerr << opts << endl;
+ cerr << setprecision(3) << opts << endl;
return false;
}
@@ -90,20 +121,11 @@ dtrain_init(int argc, char** argv, po::variables_map* conf)
return false;
}
if (!conf->count("bitext")) {
- cerr << "No input given." << endl;
+ cerr << "No input bitext." << endl;
cerr << opts << endl;
return false;
}
- if ((*conf)["output_data"].as<string>() != "") {
- if ((*conf)["output_data"].as<string>() != "kbest" &&
- (*conf)["output_data"].as<string>() != "default" &&
- (*conf)["output_data"].as<string>() != "all") {
- cerr << "Wrong 'output_data' argument: ";
- cerr << (*conf)["output_data"].as<string>() << endl;
- return false;
- }
- }
return true;
}