diff --git a/maca_common/include/ProgramParameters.hpp b/maca_common/include/ProgramParameters.hpp index 274d3970a2ba18163dd504e96ae5245aba13462f..7534930a2ea9c717c791acd2b266cb2e63dbb3ac 100644 --- a/maca_common/include/ProgramParameters.hpp +++ b/maca_common/include/ProgramParameters.hpp @@ -71,6 +71,7 @@ struct ProgramParameters static std::string tapeToMask; static float maskRate; static bool featureExtraction; + static bool devEvalOnGold; private : diff --git a/maca_common/src/ProgramParameters.cpp b/maca_common/src/ProgramParameters.cpp index ac15fa8de85c340709f1b62400de2e7858553f2f..988120f137cdabec72c2887a5f2733e7d2a99541 100644 --- a/maca_common/src/ProgramParameters.cpp +++ b/maca_common/src/ProgramParameters.cpp @@ -65,4 +65,5 @@ int ProgramParameters::dictCapacity; std::string ProgramParameters::tapeToMask; float ProgramParameters::maskRate; bool ProgramParameters::featureExtraction; +bool ProgramParameters::devEvalOnGold; diff --git a/trainer/src/Trainer.cpp b/trainer/src/Trainer.cpp index cf0c8449326f64b5cd70744bc1ba985c604d1a99..f3076a416fb540e75808e59d0025f9025832f878 100644 --- a/trainer/src/Trainer.cpp +++ b/trainer/src/Trainer.cpp @@ -79,7 +79,16 @@ void Trainer::computeScoreOnDev() if (pActionIsZeroCost) TI.addDevSuccess(tm.getCurrentClassifier()->name); - std::string actionName = pAction; + std::string actionName; + if (ProgramParameters::devEvalOnGold) + { + int neededActionIndex = tm.getCurrentClassifier()->getOracleActionIndex(*devConfig); + actionName = tm.getCurrentClassifier()->getActionName(neededActionIndex); + } + else + { + actionName = pAction; + } Action * action = tm.getCurrentClassifier()->getAction(actionName); if (ProgramParameters::debug) diff --git a/trainer/src/macaon_train.cpp b/trainer/src/macaon_train.cpp index 7885ac4ce7846a636006618aa4b89c41ff350c23..e3036854e7a1d555a21cd8a7bbcd4d02d2feb3dc 100644 --- a/trainer/src/macaon_train.cpp +++ b/trainer/src/macaon_train.cpp @@ -87,6 +87,7 @@ po::options_description getOptionsDescription() "The rate of elements of the Tape that will be masked.") ("printTime", "Print time on stderr.") ("featureExtraction", "Use macaon only a feature extractor, print corpus to stdout.") + ("devEvalOnGold", "If true, dev accuracy will be computed on gold configurations.") ("shuffle", po::value<bool>()->default_value(true), "Shuffle examples after each iteration"); @@ -270,6 +271,7 @@ int main(int argc, char * argv[]) ProgramParameters::printEntropy = vm.count("printEntropy") == 0 ? false : true; ProgramParameters::printTime = vm.count("printTime") == 0 ? false : true; ProgramParameters::featureExtraction = vm.count("featureExtraction") == 0 ? false : true; + ProgramParameters::devEvalOnGold = vm.count("devEvalOnGold") == 0 ? false : true; ProgramParameters::trainName = vm["train"].as<std::string>(); ProgramParameters::devName = vm["dev"].as<std::string>(); ProgramParameters::lang = vm["lang"].as<std::string>();