Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/moses2/parameters/ReportingOptions.cpp')
-rw-r--r--contrib/moses2/parameters/ReportingOptions.cpp152
1 files changed, 152 insertions, 0 deletions
diff --git a/contrib/moses2/parameters/ReportingOptions.cpp b/contrib/moses2/parameters/ReportingOptions.cpp
new file mode 100644
index 000000000..adc27baf2
--- /dev/null
+++ b/contrib/moses2/parameters/ReportingOptions.cpp
@@ -0,0 +1,152 @@
+// -*- mode: c++; indent-tabs-mode: nil; tab-width: 2 -*-
+#include "ReportingOptions.h"
+#include "../legacy/Parameter.h"
+
+namespace Moses2
+{
+ using namespace std;
+
+ ReportingOptions::
+ ReportingOptions()
+ : start_translation_id(0)
+ , ReportAllFactors(false)
+ , ReportSegmentation(0)
+ , PrintAlignmentInfo(false)
+ , PrintAllDerivations(false)
+ , PrintTranslationOptions(false)
+ , WA_SortOrder(NoSort)
+ , WordGraph(false)
+ , DontPruneSearchGraph(false)
+ , RecoverPath(false)
+ , ReportHypoScore(false)
+ , PrintID(false)
+ , PrintPassThrough(false)
+ , include_lhs_in_search_graph(false)
+ , lattice_sample_size(0)
+ {
+ factor_order.assign(1,0);
+ factor_delimiter = "|";
+ }
+
+ bool
+ ReportingOptions::
+ init(Parameter const& param)
+ {
+ param.SetParameter<long>(start_translation_id, "start-translation-id", 0);
+
+ // including factors in the output
+ param.SetParameter(ReportAllFactors, "report-all-factors", false);
+
+ // segmentation reporting
+ ReportSegmentation = (param.GetParam("report-segmentation-enriched")
+ ? 2 : param.GetParam("report-segmentation")
+ ? 1 : 0);
+
+ // word alignment reporting
+ param.SetParameter(PrintAlignmentInfo, "print-alignment-info", false);
+ param.SetParameter(WA_SortOrder, "sort-word-alignment", NoSort);
+ std::string e; // hack to save us param.SetParameter<string>(...)
+ param.SetParameter(AlignmentOutputFile,"alignment-output-file", e);
+
+
+ param.SetParameter(PrintAllDerivations, "print-all-derivations", false);
+ param.SetParameter(PrintTranslationOptions, "print-translation-option", false);
+
+ // output a word graph
+ PARAM_VEC const* params;
+ params = param.GetParam("output-word-graph");
+ WordGraph = (params && params->size() == 2); // what are the two options?
+
+ // dump the search graph
+ param.SetParameter(SearchGraph, "output-search-graph", e);
+ param.SetParameter(SearchGraphExtended, "output-search-graph-extended", e);
+ param.SetParameter(SearchGraphSLF,"output-search-graph-slf", e);
+ param.SetParameter(SearchGraphHG, "output-search-graph-hypergraph", e);
+#ifdef HAVE_PROTOBUF
+ param.SetParameter(SearchGraphPB, "output-search-graph-pb", e);
+#endif
+
+ param.SetParameter(DontPruneSearchGraph, "unpruned-search-graph", false);
+ param.SetParameter(include_lhs_in_search_graph,
+ "include-lhs-in-search-graph", false );
+
+
+ // miscellaneous
+ param.SetParameter(RecoverPath, "recover-input-path",false);
+ param.SetParameter(ReportHypoScore, "output-hypo-score",false);
+ param.SetParameter(PrintID, "print-id",false);
+ param.SetParameter(PrintPassThrough, "print-passthrough",false);
+ param.SetParameter(detailed_all_transrep_filepath,
+ "translation-all-details", e);
+ param.SetParameter(detailed_transrep_filepath, "translation-details", e);
+ param.SetParameter(detailed_tree_transrep_filepath,
+ "tree-translation-details", e);
+
+ params = param.GetParam("lattice-samples");
+ if (params) {
+ if (params->size() ==2 ) {
+ lattice_sample_filepath = params->at(0);
+ lattice_sample_size = Scan<size_t>(params->at(1));
+ } else {
+ std::cerr <<"wrong format for switch -lattice-samples file size";
+ return false;
+ }
+ }
+
+
+ if (ReportAllFactors) {
+ factor_order.clear();
+ for (size_t i = 0; i < MAX_NUM_FACTORS; ++i)
+ factor_order.push_back(i);
+ } else {
+ params= param.GetParam("output-factors");
+ if (params) factor_order = Scan<FactorType>(*params);
+ if (factor_order.empty()) factor_order.assign(1,0);
+ }
+
+ param.SetParameter(factor_delimiter, "factor-delimiter", std::string("|"));
+ param.SetParameter(factor_delimiter, "output-factor-delimiter", factor_delimiter);
+
+ return true;
+ }
+
+#ifdef HAVE_XMLRPC_C
+ bool
+ ReportingOptions::
+ update(std::map<std::string, xmlrpc_c::value>const& param)
+ {
+ ReportAllFactors = check(param, "report-all-factors", ReportAllFactors);
+
+
+ std::map<std::string, xmlrpc_c::value>::const_iterator m;
+ m = param.find("output-factors");
+ if (m != param.end()) {
+ factor_order=Tokenize<FactorType>(xmlrpc_c::value_string(m->second),",");
+ }
+
+ if (ReportAllFactors) {
+ factor_order.clear();
+ for (size_t i = 0; i < MAX_NUM_FACTORS; ++i)
+ factor_order.push_back(i);
+ }
+
+ m = param.find("align");
+ if (m != param.end() && Scan<bool>(xmlrpc_c::value_string(m->second)))
+ ReportSegmentation = 1;
+
+ PrintAlignmentInfo = check(param,"word-align",PrintAlignmentInfo);
+
+ m = param.find("factor-delimiter");
+ if (m != param.end()) {
+ factor_delimiter = Trim(xmlrpc_c::value_string(m->second));
+ }
+
+ m = param.find("output-factor-delimiter");
+ if (m != param.end()) {
+ factor_delimiter = Trim(xmlrpc_c::value_string(m->second));
+ }
+
+ return true;
+ }
+#endif
+}