mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2024-12-28 22:45:50 +03:00
revert changes to Distortion FF
This commit is contained in:
parent
ff12a13eaa
commit
02772c07de
@ -57,7 +57,6 @@ struct DistortionState_traditional: public FFState
|
|||||||
Distortion::Distortion(size_t startInd, const std::string &line) :
|
Distortion::Distortion(size_t startInd, const std::string &line) :
|
||||||
StatefulFeatureFunction(startInd, line)
|
StatefulFeatureFunction(startInd, line)
|
||||||
{
|
{
|
||||||
m_completedHypo = false;
|
|
||||||
ReadParameters();
|
ReadParameters();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,16 +65,6 @@ Distortion::~Distortion()
|
|||||||
// TODO Auto-generated destructor stub
|
// TODO Auto-generated destructor stub
|
||||||
}
|
}
|
||||||
|
|
||||||
void Distortion::SetParameter(const std::string& key, const std::string& value)
|
|
||||||
{
|
|
||||||
if (key == "completed-hypo") {
|
|
||||||
m_completedHypo = Scan<bool>(value);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
StatefulFeatureFunction::SetParameter(key, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FFState* Distortion::BlankState(MemPool &pool, const System &sys) const
|
FFState* Distortion::BlankState(MemPool &pool, const System &sys) const
|
||||||
{
|
{
|
||||||
return new (pool.Allocate<DistortionState_traditional>()) DistortionState_traditional();
|
return new (pool.Allocate<DistortionState_traditional>()) DistortionState_traditional();
|
||||||
@ -121,7 +110,7 @@ void Distortion::EvaluateWhenApplied(const ManagerBase &mgr,
|
|||||||
const DistortionState_traditional &prev =
|
const DistortionState_traditional &prev =
|
||||||
static_cast<const DistortionState_traditional&>(prevState);
|
static_cast<const DistortionState_traditional&>(prevState);
|
||||||
SCORE distortionScore = CalculateDistortionScore(prev.range,
|
SCORE distortionScore = CalculateDistortionScore(prev.range,
|
||||||
hypo.GetInputPath().range, prev.first_gap, hypo.GetBitmap());
|
hypo.GetInputPath().range, prev.first_gap);
|
||||||
//cerr << "distortionScore=" << distortionScore << endl;
|
//cerr << "distortionScore=" << distortionScore << endl;
|
||||||
|
|
||||||
scores.PlusEquals(mgr.system, *this, distortionScore);
|
scores.PlusEquals(mgr.system, *this, distortionScore);
|
||||||
@ -134,11 +123,11 @@ void Distortion::EvaluateWhenApplied(const ManagerBase &mgr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
SCORE Distortion::CalculateDistortionScore(const Range &prev, const Range &curr,
|
SCORE Distortion::CalculateDistortionScore(const Range &prev, const Range &curr,
|
||||||
const int FirstGap, const Bitmap &coverage) const
|
const int FirstGap) const
|
||||||
{
|
{
|
||||||
bool useEarlyDistortionCost = false;
|
bool useEarlyDistortionCost = false;
|
||||||
if (!useEarlyDistortionCost) {
|
if (!useEarlyDistortionCost) {
|
||||||
return -(SCORE) ComputeDistortionDistance(prev, curr, coverage);
|
return -(SCORE) ComputeDistortionDistance(prev, curr);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* Pay distortion score as soon as possible, from Moore and Quirk MT Summit 2007
|
/* Pay distortion score as soon as possible, from Moore and Quirk MT Summit 2007
|
||||||
@ -179,7 +168,7 @@ SCORE Distortion::CalculateDistortionScore(const Range &prev, const Range &curr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int Distortion::ComputeDistortionDistance(const Range& prev,
|
int Distortion::ComputeDistortionDistance(const Range& prev,
|
||||||
const Range& current, const Bitmap &coverage) const
|
const Range& current) const
|
||||||
{
|
{
|
||||||
int dist = 0;
|
int dist = 0;
|
||||||
if (prev.GetNumWordsCovered() == 0) {
|
if (prev.GetNumWordsCovered() == 0) {
|
||||||
@ -187,18 +176,8 @@ int Distortion::ComputeDistortionDistance(const Range& prev,
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dist = (int) prev.GetEndPos() - (int) current.GetStartPos() + 1;
|
dist = (int) prev.GetEndPos() - (int) current.GetStartPos() + 1;
|
||||||
dist = abs(dist);
|
|
||||||
|
|
||||||
if (m_completedHypo && coverage.IsComplete()) {
|
|
||||||
dist += coverage.GetSize() - current.GetEndPos() - 1;
|
|
||||||
/*
|
|
||||||
cerr << "completed=" << coverage << " " << coverage.GetSize() << " "
|
|
||||||
<< prev << " "
|
|
||||||
<< current << " " << dist << endl;
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return dist;
|
return abs(dist);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Distortion::EvaluateWhenApplied(const SCFG::Manager &mgr,
|
void Distortion::EvaluateWhenApplied(const SCFG::Manager &mgr,
|
||||||
@ -209,4 +188,3 @@ void Distortion::EvaluateWhenApplied(const SCFG::Manager &mgr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
|
|
||||||
namespace Moses2
|
namespace Moses2
|
||||||
{
|
{
|
||||||
class Bitmap;
|
|
||||||
|
|
||||||
class Distortion: public StatefulFeatureFunction
|
class Distortion: public StatefulFeatureFunction
|
||||||
{
|
{
|
||||||
@ -22,8 +21,6 @@ public:
|
|||||||
Distortion(size_t startInd, const std::string &line);
|
Distortion(size_t startInd, const std::string &line);
|
||||||
virtual ~Distortion();
|
virtual ~Distortion();
|
||||||
|
|
||||||
virtual void SetParameter(const std::string& key, const std::string& value);
|
|
||||||
|
|
||||||
virtual FFState* BlankState(MemPool &pool, const System &sys) const;
|
virtual FFState* BlankState(MemPool &pool, const System &sys) const;
|
||||||
virtual void EmptyHypothesisState(FFState &state, const ManagerBase &mgr,
|
virtual void EmptyHypothesisState(FFState &state, const ManagerBase &mgr,
|
||||||
const InputType &input, const Hypothesis &hypo) const;
|
const InputType &input, const Hypothesis &hypo) const;
|
||||||
@ -51,12 +48,10 @@ public:
|
|||||||
FFState &state) const;
|
FFState &state) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool m_completedHypo;
|
|
||||||
|
|
||||||
SCORE CalculateDistortionScore(const Range &prev, const Range &curr,
|
SCORE CalculateDistortionScore(const Range &prev, const Range &curr,
|
||||||
const int FirstGap, const Bitmap &coverage) const;
|
const int FirstGap) const;
|
||||||
|
|
||||||
int ComputeDistortionDistance(const Range& prev, const Range& current, const Bitmap &coverage) const;
|
int ComputeDistortionDistance(const Range& prev, const Range& current) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user