diff options
-rw-r--r-- | contrib/other-builds/create-ini/.cproject | 114 | ||||
-rw-r--r-- | contrib/other-builds/create-ini/.project | 119 | ||||
-rw-r--r-- | moses/DecodeFeature.cpp | 36 | ||||
-rw-r--r-- | moses/DecodeFeature.h | 1 | ||||
-rw-r--r-- | moses/FF/FeatureFunction.cpp | 73 | ||||
-rw-r--r-- | moses/FF/FeatureFunction.h | 3 | ||||
-rw-r--r-- | moses/TranslationModel/PhraseDictionary.cpp | 9 | ||||
-rw-r--r-- | moses/TranslationModel/PhraseDictionary.h | 2 | ||||
-rw-r--r-- | moses/TranslationModel/PhraseDictionaryMultiModelCounts.cpp | 32 | ||||
-rw-r--r-- | moses/TranslationModel/PhraseDictionaryMultiModelCounts.h | 2 |
10 files changed, 108 insertions, 283 deletions
diff --git a/contrib/other-builds/create-ini/.cproject b/contrib/other-builds/create-ini/.cproject deleted file mode 100644 index 5f8e8753d..000000000 --- a/contrib/other-builds/create-ini/.cproject +++ /dev/null @@ -1,114 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> - <storageModule moduleId="org.eclipse.cdt.core.settings"> - <cconfiguration id="cdt.managedbuild.config.gnu.cross.exe.debug.798600584"> - <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.cross.exe.debug.798600584" moduleId="org.eclipse.cdt.core.settings" name="Debug"> - <externalSettings/> - <extensions> - <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> - <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> - <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - </extensions> - </storageModule> - <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.debug.798600584" name="Debug" parent="cdt.managedbuild.config.gnu.cross.exe.debug"> - <folderInfo id="cdt.managedbuild.config.gnu.cross.exe.debug.798600584." name="/" resourcePath=""> - <toolChain id="cdt.managedbuild.toolchain.gnu.cross.exe.debug.937148878" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.exe.debug"> - <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.1296504295" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/> - <builder buildPath="${workspace_loc:/create-ini/Debug}" id="cdt.managedbuild.builder.gnu.cross.488594237" managedBuildOn="true" name="Gnu Make Builder.Debug" superClass="cdt.managedbuild.builder.gnu.cross"/> - <tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.1943468883" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler"> - <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.979953097" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/> - <option id="gnu.c.compiler.option.debugging.level.2032838892" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/> - <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1294955997" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> - </tool> - <tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.1276669250" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler"> - <option id="gnu.cpp.compiler.option.optimization.level.1112774148" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/> - <option id="gnu.cpp.compiler.option.debugging.level.1327318017" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/> - <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1715885703" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> - </tool> - <tool id="cdt.managedbuild.tool.gnu.cross.c.linker.345534399" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker"/> - <tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1301233058" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker"> - <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.863663896" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> - <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> - <additionalInput kind="additionalinput" paths="$(LIBS)"/> - </inputType> - </tool> - <tool id="cdt.managedbuild.tool.gnu.cross.archiver.1045522908" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/> - <tool id="cdt.managedbuild.tool.gnu.cross.assembler.1508688339" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler"> - <inputType id="cdt.managedbuild.tool.gnu.assembler.input.725952985" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> - </tool> - </toolChain> - </folderInfo> - </configuration> - </storageModule> - <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> - </cconfiguration> - <cconfiguration id="cdt.managedbuild.config.gnu.cross.exe.release.1495976246"> - <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.cross.exe.release.1495976246" moduleId="org.eclipse.cdt.core.settings" name="Release"> - <externalSettings/> - <extensions> - <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> - <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> - <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - </extensions> - </storageModule> - <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.release.1495976246" name="Release" parent="cdt.managedbuild.config.gnu.cross.exe.release"> - <folderInfo id="cdt.managedbuild.config.gnu.cross.exe.release.1495976246." name="/" resourcePath=""> - <toolChain id="cdt.managedbuild.toolchain.gnu.cross.exe.release.1905369343" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.exe.release"> - <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.1365852571" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/> - <builder buildPath="${workspace_loc:/create-ini/Release}" id="cdt.managedbuild.builder.gnu.cross.2106250638" managedBuildOn="true" name="Gnu Make Builder.Release" superClass="cdt.managedbuild.builder.gnu.cross"/> - <tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.586441196" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler"> - <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.403893315" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/> - <option id="gnu.c.compiler.option.debugging.level.1446651093" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/> - <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1756611628" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> - </tool> - <tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.316826272" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler"> - <option id="gnu.cpp.compiler.option.optimization.level.733870875" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/> - <option id="gnu.cpp.compiler.option.debugging.level.64493629" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/> - <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1068120573" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> - </tool> - <tool id="cdt.managedbuild.tool.gnu.cross.c.linker.1613503804" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker"/> - <tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1291963564" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker"> - <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.469207693" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> - <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> - <additionalInput kind="additionalinput" paths="$(LIBS)"/> - </inputType> - </tool> - <tool id="cdt.managedbuild.tool.gnu.cross.archiver.402763692" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/> - <tool id="cdt.managedbuild.tool.gnu.cross.assembler.1488960924" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler"> - <inputType id="cdt.managedbuild.tool.gnu.assembler.input.348146421" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> - </tool> - </toolChain> - </folderInfo> - </configuration> - </storageModule> - <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> - </cconfiguration> - </storageModule> - <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - <project id="create-ini.cdt.managedbuild.target.gnu.cross.exe.1085172550" name="Executable" projectType="cdt.managedbuild.target.gnu.cross.exe"/> - </storageModule> - <storageModule moduleId="scannerConfiguration"> - <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> - <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.debug.798600584;cdt.managedbuild.config.gnu.cross.exe.debug.798600584.;cdt.managedbuild.tool.gnu.cross.cpp.compiler.1276669250;cdt.managedbuild.tool.gnu.cpp.compiler.input.1715885703"> - <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/> - </scannerConfigBuildInfo> - <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.release.1495976246;cdt.managedbuild.config.gnu.cross.exe.release.1495976246.;cdt.managedbuild.tool.gnu.cross.cpp.compiler.316826272;cdt.managedbuild.tool.gnu.cpp.compiler.input.1068120573"> - <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/> - </scannerConfigBuildInfo> - <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.release.1495976246;cdt.managedbuild.config.gnu.cross.exe.release.1495976246.;cdt.managedbuild.tool.gnu.cross.c.compiler.586441196;cdt.managedbuild.tool.gnu.c.compiler.input.1756611628"> - <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/> - </scannerConfigBuildInfo> - <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.debug.798600584;cdt.managedbuild.config.gnu.cross.exe.debug.798600584.;cdt.managedbuild.tool.gnu.cross.c.compiler.1943468883;cdt.managedbuild.tool.gnu.c.compiler.input.1294955997"> - <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/> - </scannerConfigBuildInfo> - </storageModule> - <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> -</cproject> diff --git a/contrib/other-builds/create-ini/.project b/contrib/other-builds/create-ini/.project deleted file mode 100644 index 82540944e..000000000 --- a/contrib/other-builds/create-ini/.project +++ /dev/null @@ -1,119 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>create-ini</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name> - <triggers>clean,full,incremental,</triggers> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name> - <triggers>full,incremental,</triggers> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.cdt.core.cnature</nature> - <nature>org.eclipse.cdt.core.ccnature</nature> - <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> - <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> - </natures> - <linkedResources> - <link> - <name>Distortion.cpp</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/Distortion.cpp</locationURI> - </link> - <link> - <name>Distortion.h</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/Distortion.h</locationURI> - </link> - <link> - <name>FF.cpp</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/FF.cpp</locationURI> - </link> - <link> - <name>FF.h</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/FF.h</locationURI> - </link> - <link> - <name>Jamfile</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/Jamfile</locationURI> - </link> - <link> - <name>LM.cpp</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/LM.cpp</locationURI> - </link> - <link> - <name>LM.h</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/LM.h</locationURI> - </link> - <link> - <name>Main.cpp</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/Main.cpp</locationURI> - </link> - <link> - <name>PT.cpp</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/PT.cpp</locationURI> - </link> - <link> - <name>PT.h</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/PT.h</locationURI> - </link> - <link> - <name>RO.cpp</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/RO.cpp</locationURI> - </link> - <link> - <name>RO.h</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/RO.h</locationURI> - </link> - <link> - <name>UnknownWP.cpp</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/UnknownWP.cpp</locationURI> - </link> - <link> - <name>UnknownWP.h</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/UnknownWP.h</locationURI> - </link> - <link> - <name>Util.h</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/Util.h</locationURI> - </link> - <link> - <name>WP.cpp</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/WP.cpp</locationURI> - </link> - <link> - <name>WP.h</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/WP.h</locationURI> - </link> - <link> - <name>compile.sh</name> - <type>1</type> - <locationURI>PARENT-3-PROJECT_LOC/misc/create-ini/compile.sh</locationURI> - </link> - </linkedResources> -</projectDescription> diff --git a/moses/DecodeFeature.cpp b/moses/DecodeFeature.cpp index 7d2027126..37af49e3f 100644 --- a/moses/DecodeFeature.cpp +++ b/moses/DecodeFeature.cpp @@ -34,18 +34,17 @@ DecodeFeature::DecodeFeature( const std::string& description : StatelessFeatureFunction(description, line) { VERBOSE(2,"DecodeFeature:" << std::endl); - for (size_t i = 0; i < m_args.size(); ++i) { - const vector<string> &args = m_args[i]; - - if (args[0] == "input-factor") { - m_input =Tokenize<FactorType>(args[1], ","); - m_inputFactors = FactorMask(m_input); - } else if (args[0] == "output-factor") { - m_output =Tokenize<FactorType>(args[1], ","); - m_outputFactors = FactorMask(m_output); + size_t ind = 0; + while (ind < m_args.size()) { + vector<string> &args = m_args[ind]; + bool consumed = OverrideParameter(args[0], args[1]); + if (consumed) { + m_args.erase(m_args.begin() + ind); + } + else { + ++ind; } } - } DecodeFeature::DecodeFeature( const std::string& description @@ -69,6 +68,23 @@ DecodeFeature::DecodeFeature(const std::string& description VERBOSE(2,"DecodeFeature: input=" << m_inputFactors << " output=" << m_outputFactors << std::endl); } +bool DecodeFeature::OverrideParameter(const std::string& key, const std::string& value) +{ + if (key == "input-factor") { + m_input =Tokenize<FactorType>(value, ","); + m_inputFactors = FactorMask(m_input); + } + else if (key == "output-factor") { + m_output =Tokenize<FactorType>(value, ","); + m_outputFactors = FactorMask(m_output); + } + else { + return StatelessFeatureFunction::OverrideParameter(key, value); + } + + return true; +} + const FactorMask& DecodeFeature::GetOutputFactorMask() const { diff --git a/moses/DecodeFeature.h b/moses/DecodeFeature.h index 15092ee80..c7b4b3b7b 100644 --- a/moses/DecodeFeature.h +++ b/moses/DecodeFeature.h @@ -61,6 +61,7 @@ public: const std::vector<FactorType>& GetOutput() const; bool IsUseable(const FactorMask &mask) const; + virtual bool OverrideParameter(const std::string& key, const std::string& value); protected: std::vector<FactorType> m_input; diff --git a/moses/FF/FeatureFunction.cpp b/moses/FF/FeatureFunction.cpp index 7413c1914..092caea32 100644 --- a/moses/FF/FeatureFunction.cpp +++ b/moses/FF/FeatureFunction.cpp @@ -1,6 +1,7 @@ #include <stdexcept> #include "util/check.hh" +#include "util/exception.hh" #include "FeatureFunction.h" #include "moses/Hypothesis.h" @@ -33,39 +34,41 @@ FeatureFunction &FeatureFunction::FindFeatureFunction(const std::string& name) FeatureFunction::FeatureFunction(const std::string& description, const std::string &line) : m_tuneable(true) { - ParseLine(description, line); - - if (m_description == "") { - // not been given a name. Make a unique name - size_t index = description_counts.count(description); - - ostringstream dstream; - dstream << description; - dstream << index; - - description_counts.insert(description); - m_description = dstream.str(); - } - - ScoreComponentCollection::RegisterScoreProducer(this); - m_producers.push_back(this); + Initialize(description, line); } FeatureFunction::FeatureFunction(const std::string& description, size_t numScoreComponents, const std::string &line) : m_numScoreComponents(numScoreComponents) , m_tuneable(true) { + Initialize(description, line); +} + +void FeatureFunction::Initialize(const std::string& description, const std::string &line) +{ ParseLine(description, line); + size_t ind = 0; + while (ind < m_args.size()) { + vector<string> &args = m_args[ind]; + bool consumed = OverrideParameter(args[0], args[1]); + if (consumed) { + m_args.erase(m_args.begin() + ind); + } + else { + ++ind; + } + } + if (m_description == "") { - size_t index = description_counts.count(description); + size_t index = description_counts.count(description); - ostringstream dstream; - dstream << description; - dstream << index; + ostringstream dstream; + dstream << description; + dstream << index; - description_counts.insert(description); - m_description = dstream.str(); + description_counts.insert(description); + m_description = dstream.str(); } ScoreComponentCollection::RegisterScoreProducer(this); @@ -84,22 +87,24 @@ void FeatureFunction::ParseLine(const std::string& description, const std::strin for (size_t i = 1; i < toks.size(); ++i) { vector<string> args = Tokenize(toks[i], "="); CHECK(args.size() == 2); - - if (args[0] == "num-features") { - m_numScoreComponents = Scan<size_t>(args[1]); - } else if (args[0] == "name") { - m_description = args[1]; - } else if (args[0] == "tuneable") { - m_tuneable = Scan<bool>(args[1]); - } else { - m_args.push_back(args); - } + m_args.push_back(args); } } -void FeatureFunction::OverrideParameter(const std::string& key, const std::string& value) +bool FeatureFunction::OverrideParameter(const std::string& key, const std::string& value) { - throw "unknown key" + key; + if (key == "num-features") { + m_numScoreComponents = Scan<size_t>(value); + } else if (key == "name") { + m_description = value; + } else if (key == "tuneable") { + m_tuneable = Scan<bool>(value); + } else { + //UTIL_THROW(util::Exception, "unknown key" << key); + return false; + } + + return true; } } diff --git a/moses/FF/FeatureFunction.h b/moses/FF/FeatureFunction.h index 7fd92802b..71688b436 100644 --- a/moses/FF/FeatureFunction.h +++ b/moses/FF/FeatureFunction.h @@ -40,6 +40,7 @@ protected: //In case there's multiple producers with the same description static std::multiset<std::string> description_counts; + void Initialize(const std::string& description, const std::string &line); void ParseLine(const std::string& description, const std::string &line); public: @@ -105,7 +106,7 @@ public: , ScoreComponentCollection &scoreBreakdown) const {} - virtual void OverrideParameter(const std::string& key, const std::string& value); + virtual bool OverrideParameter(const std::string& key, const std::string& value); }; } diff --git a/moses/TranslationModel/PhraseDictionary.cpp b/moses/TranslationModel/PhraseDictionary.cpp index f4984b0f0..22802f6b5 100644 --- a/moses/TranslationModel/PhraseDictionary.cpp +++ b/moses/TranslationModel/PhraseDictionary.cpp @@ -70,16 +70,17 @@ GetTargetPhraseCollection(InputType const& src,WordsRange const& range) const return GetTargetPhraseCollection(phrase); } -void PhraseDictionary::OverrideParameter(const std::string& key, const std::string& value) +bool PhraseDictionary::OverrideParameter(const std::string& key, const std::string& value) { if (key == "table-limit") { m_tableLimit = Scan<size_t>(value); } - else { - // call parent function, all the way to the top if necessary - DecodeFeature::OverrideParameter(key, value); + return DecodeFeature::OverrideParameter(key, value); } + + return true; + } } diff --git a/moses/TranslationModel/PhraseDictionary.h b/moses/TranslationModel/PhraseDictionary.h index a4cfd0a31..80033ac48 100644 --- a/moses/TranslationModel/PhraseDictionary.h +++ b/moses/TranslationModel/PhraseDictionary.h @@ -93,7 +93,7 @@ public: return m_featuresToApply; } - void OverrideParameter(const std::string& key, const std::string& value); + bool OverrideParameter(const std::string& key, const std::string& value); protected: size_t m_tableLimit; diff --git a/moses/TranslationModel/PhraseDictionaryMultiModelCounts.cpp b/moses/TranslationModel/PhraseDictionaryMultiModelCounts.cpp index cbc178526..06b53e9c6 100644 --- a/moses/TranslationModel/PhraseDictionaryMultiModelCounts.cpp +++ b/moses/TranslationModel/PhraseDictionaryMultiModelCounts.cpp @@ -101,6 +101,38 @@ PhraseDictionaryMultiModelCounts::PhraseDictionaryMultiModelCounts(const std::st } +bool PhraseDictionaryMultiModelCounts::OverrideParameter(const std::string& key, const std::string& value) +{ + if (key == "mode") { + m_mode = value; + if (m_mode == "instance_weighting") + m_combineFunction = InstanceWeighting; + else if (m_mode == "interpolate") { + m_combineFunction = LinearInterpolationFromCounts; + } else { + ostringstream msg; + msg << "combination mode unknown: " << m_mode; + throw runtime_error(msg.str()); + } + + } else if (key == "lex-e2f") { + m_lexE2FStr = Tokenize(value, ","); + CHECK(m_lexE2FStr.size() == m_pdStr.size()); + } else if (key == "lex-f2e") { + m_lexF2EStr = Tokenize(value, ","); + CHECK(m_lexF2EStr.size() == m_pdStr.size()); + } + + else if (key == "target-table") { + m_targetTable = Tokenize(value, ","); + CHECK(m_targetTable.size() == m_pdStr.size()); + } + + else { + PhraseDictionaryMultiModel::OverrideParameter(key, value); + } +} + PhraseDictionaryMultiModelCounts::~PhraseDictionaryMultiModelCounts() { RemoveAllInColl(m_lexTable_e2f); diff --git a/moses/TranslationModel/PhraseDictionaryMultiModelCounts.h b/moses/TranslationModel/PhraseDictionaryMultiModelCounts.h index eaa6da956..1d6e5f681 100644 --- a/moses/TranslationModel/PhraseDictionaryMultiModelCounts.h +++ b/moses/TranslationModel/PhraseDictionaryMultiModelCounts.h @@ -103,6 +103,8 @@ public: /* Don't do anything source specific here as this object is shared between threads.*/ } + bool OverrideParameter(const std::string& key, const std::string& value); + private: std::vector<PhraseDictionary*> m_inverse_pd; std::vector<lexicalTable*> m_lexTable_e2f, m_lexTable_f2e; |