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:
-rw-r--r--contrib/other-builds/create-ini/.cproject114
-rw-r--r--contrib/other-builds/create-ini/.project119
-rw-r--r--moses/DecodeFeature.cpp36
-rw-r--r--moses/DecodeFeature.h1
-rw-r--r--moses/FF/FeatureFunction.cpp73
-rw-r--r--moses/FF/FeatureFunction.h3
-rw-r--r--moses/TranslationModel/PhraseDictionary.cpp9
-rw-r--r--moses/TranslationModel/PhraseDictionary.h2
-rw-r--r--moses/TranslationModel/PhraseDictionaryMultiModelCounts.cpp32
-rw-r--r--moses/TranslationModel/PhraseDictionaryMultiModelCounts.h2
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;