|
#include <vector> |
|
#include "DeleteRules.h" |
|
#include "moses/ScoreComponentCollection.h" |
|
#include "moses/TargetPhrase.h" |
|
#include "moses/InputFileStream.h" |
|
#include "util/exception.hh" |
|
|
|
using namespace std; |
|
|
|
namespace Moses |
|
{ |
|
DeleteRules::DeleteRules(const std::string &line) |
|
:StatelessFeatureFunction(1, line) |
|
{ |
|
m_tuneable = false; |
|
ReadParameters(); |
|
} |
|
|
|
void DeleteRules::Load(AllOptions::ptr const& opts) |
|
{ |
|
m_options = opts; |
|
std::vector<FactorType> factorOrder; |
|
factorOrder.push_back(0); |
|
|
|
InputFileStream strme(m_path); |
|
|
|
string line; |
|
while (getline(strme, line)) { |
|
vector<string> toks = TokenizeMultiCharSeparator(line, "|||"); |
|
UTIL_THROW_IF2(toks.size() != 2, "Line must be source ||| target"); |
|
Phrase source, target; |
|
source.CreateFromString(Input, factorOrder, toks[0], NULL); |
|
target.CreateFromString(Output, factorOrder, toks[1], NULL); |
|
|
|
size_t hash = 0; |
|
boost::hash_combine(hash, source); |
|
boost::hash_combine(hash, target); |
|
m_ruleHashes.insert(hash); |
|
} |
|
} |
|
|
|
void DeleteRules::EvaluateInIsolation(const Phrase &source |
|
, const TargetPhrase &target |
|
, ScoreComponentCollection &scoreBreakdown |
|
, ScoreComponentCollection &estimatedScores) const |
|
{ |
|
|
|
size_t hash = 0; |
|
boost::hash_combine(hash, source); |
|
boost::hash_combine(hash, target); |
|
|
|
boost::unordered_set<size_t>::const_iterator iter; |
|
iter = m_ruleHashes.find(hash); |
|
if (iter != m_ruleHashes.end()) { |
|
scoreBreakdown.PlusEquals(this, -std::numeric_limits<float>::infinity()); |
|
} |
|
|
|
} |
|
|
|
void DeleteRules::EvaluateWithSourceContext(const InputType &input |
|
, const InputPath &inputPath |
|
, const TargetPhrase &targetPhrase |
|
, const StackVec *stackVec |
|
, ScoreComponentCollection &scoreBreakdown |
|
, ScoreComponentCollection *estimatedScores) const |
|
{} |
|
|
|
void DeleteRules::EvaluateTranslationOptionListWithSourceContext(const InputType &input |
|
|
|
, const TranslationOptionList &translationOptionList) const |
|
{} |
|
|
|
void DeleteRules::EvaluateWhenApplied(const Hypothesis& hypo, |
|
ScoreComponentCollection* accumulator) const |
|
{} |
|
|
|
void DeleteRules::EvaluateWhenApplied(const ChartHypothesis &hypo, |
|
ScoreComponentCollection* accumulator) const |
|
{} |
|
|
|
void DeleteRules::SetParameter(const std::string& key, const std::string& value) |
|
{ |
|
if (key == "path") { |
|
m_path = value; |
|
} else { |
|
StatelessFeatureFunction::SetParameter(key, value); |
|
} |
|
} |
|
|
|
} |
|
|
|
|