| |
| #include "SyntaxOptions.h" |
| #include <vector> |
| #include <iostream> |
| #include "moses/StaticData.h" |
| #include "moses/TypeDef.h" |
| #include "moses/Factor.h" |
| #include "moses/InputFileStream.h" |
|
|
| namespace Moses { |
|
|
| SyntaxOptions:: |
| SyntaxOptions() |
| : s2t_parsing_algo(RecursiveCYKPlus) |
| , default_non_term_only_for_empty_range(false) |
| , source_label_overlap(SourceLabelOverlapAdd) |
| , rule_limit(DEFAULT_MAX_TRANS_OPT_SIZE) |
| { } |
|
|
| bool |
| SyntaxOptions:: |
| init(Parameter const& param) |
| { |
| param.SetParameter(rule_limit, "rule-limit", DEFAULT_MAX_TRANS_OPT_SIZE); |
| param.SetParameter(s2t_parsing_algo, "s2t-parsing-algorithm", |
| RecursiveCYKPlus); |
| param.SetParameter(default_non_term_only_for_empty_range, |
| "default-non-term-for-empty-range-only", false); |
| param.SetParameter(source_label_overlap, "source-label-overlap", |
| SourceLabelOverlapAdd); |
| return true; |
| } |
|
|
| void |
| SyntaxOptions:: |
| LoadNonTerminals(Parameter const& param, FactorCollection& factorCollection) |
| { |
| using namespace std; |
| string dfltNonTerm; |
| param.SetParameter<string>(dfltNonTerm, "non-terminals", "X"); |
|
|
| const Factor *srcFactor = factorCollection.AddFactor(Input, 0, dfltNonTerm, true); |
| input_default_non_terminal.SetFactor(0, srcFactor); |
| input_default_non_terminal.SetIsNonTerminal(true); |
|
|
| const Factor *trgFactor = factorCollection.AddFactor(Output, 0, dfltNonTerm, true); |
| output_default_non_terminal.SetFactor(0, trgFactor); |
| output_default_non_terminal.SetIsNonTerminal(true); |
|
|
| |
| const PARAM_VEC *params = param.GetParam("unknown-lhs"); |
| if (params == NULL || params->size() == 0) { |
| UnknownLHSEntry entry(dfltNonTerm, 0.0f); |
| unknown_lhs.push_back(entry); |
| } else { |
| const string &filePath = params->at(0); |
| InputFileStream inStream(filePath); |
| string line; |
| while(getline(inStream, line)) { |
| vector<string> tokens = Tokenize(line); |
| UTIL_THROW_IF2(tokens.size() != 2, "Incorrect unknown LHS format: " << line); |
| UnknownLHSEntry entry(tokens[0], Scan<float>(tokens[1])); |
| unknown_lhs.push_back(entry); |
| factorCollection.AddFactor(Output, 0, tokens[0], true); |
| } |
| } |
| } |
|
|
| #ifdef HAVE_XMLRPC_C |
| bool |
| SyntaxOptions:: |
| update(std::map<std::string,xmlrpc_c::value>const& param) |
| { |
| typedef std::map<std::string, xmlrpc_c::value> params_t; |
| |
| |
| |
| return true; |
| } |
| #else |
| bool |
| SyntaxOptions:: |
| update(std::map<std::string,xmlrpc_c::value>const& param) |
| {} |
| #endif |
|
|
| } |
|
|