|
#pragma once |
|
|
|
#include <string> |
|
#include "StatefulFeatureFunction.h" |
|
#include "moses/Range.h" |
|
|
|
namespace Moses |
|
{ |
|
|
|
|
|
|
|
class DistortionScoreProducer : public StatefulFeatureFunction |
|
{ |
|
protected: |
|
static std::vector<const DistortionScoreProducer*> s_staticColl; |
|
|
|
FactorType m_sparseFactorTypeSource; |
|
FactorType m_sparseFactorTypeTarget; |
|
bool m_useSparse; |
|
bool m_sparseDistance; |
|
bool m_sparseSubordinate; |
|
FactorType m_sparseFactorTypeTargetSubordinate; |
|
const Factor* m_subordinateConjunctionTagFactor; |
|
|
|
public: |
|
static const std::vector<const DistortionScoreProducer*>& GetDistortionFeatureFunctions() { |
|
return s_staticColl; |
|
} |
|
|
|
DistortionScoreProducer(const std::string &line); |
|
|
|
void SetParameter(const std::string& key, const std::string& value); |
|
|
|
bool IsUseable(const FactorMask &mask) const { |
|
return true; |
|
} |
|
|
|
static float CalculateDistortionScore(const Hypothesis& hypo, |
|
const Range &prev, const Range &curr, const int FirstGapPosition); |
|
|
|
virtual const FFState* EmptyHypothesisState(const InputType &input) const; |
|
|
|
virtual FFState* EvaluateWhenApplied( |
|
const Hypothesis& cur_hypo, |
|
const FFState* prev_state, |
|
ScoreComponentCollection* accumulator) const; |
|
|
|
virtual FFState* EvaluateWhenApplied( |
|
const ChartHypothesis& , |
|
int , |
|
ScoreComponentCollection*) const { |
|
UTIL_THROW(util::Exception, "DIstortion not implemented in chart decoder"); |
|
} |
|
|
|
}; |
|
} |
|
|
|
|