|
#pragma once |
|
|
|
#include <string> |
|
#include "StatefulFeatureFunction.h" |
|
#include "FFState.h" |
|
|
|
namespace Moses |
|
{ |
|
|
|
class ExampleState : public FFState |
|
{ |
|
int m_targetLen; |
|
public: |
|
ExampleState(int targetLen) |
|
:m_targetLen(targetLen) { |
|
} |
|
|
|
virtual size_t hash() const { |
|
return (size_t) m_targetLen; |
|
} |
|
virtual bool operator==(const FFState& o) const { |
|
const ExampleState& other = static_cast<const ExampleState&>(o); |
|
return m_targetLen == other.m_targetLen; |
|
} |
|
|
|
}; |
|
|
|
class ExampleStatefulFF : public StatefulFeatureFunction |
|
{ |
|
public: |
|
ExampleStatefulFF(const std::string &line); |
|
|
|
bool IsUseable(const FactorMask &mask) const { |
|
return true; |
|
} |
|
virtual const FFState* EmptyHypothesisState(const InputType &input) const { |
|
return new ExampleState(0); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
void |
|
EvaluateInIsolation(const Phrase &source |
|
, const TargetPhrase &targetPhrase |
|
, ScoreComponentCollection &scoreBreakdown |
|
, ScoreComponentCollection &estimatedScores) const; |
|
|
|
|
|
|
|
|
|
|
|
void |
|
EvaluateWithSourceContext(const InputType &input |
|
, const InputPath &inputPath |
|
, const TargetPhrase &targetPhrase |
|
, const StackVec *stackVec |
|
, ScoreComponentCollection &scoreBreakdown |
|
, ScoreComponentCollection *estimatedScores = NULL) const; |
|
|
|
|
|
|
|
|
|
|
|
void |
|
EvaluateTranslationOptionListWithSourceContext |
|
( const InputType &input , const TranslationOptionList &translationOptionList) const; |
|
|
|
FFState* EvaluateWhenApplied( |
|
const Hypothesis& cur_hypo, |
|
const FFState* prev_state, |
|
ScoreComponentCollection* accumulator) const; |
|
FFState* EvaluateWhenApplied( |
|
const ChartHypothesis& , |
|
int , |
|
ScoreComponentCollection* accumulator) const; |
|
|
|
void SetParameter(const std::string& key, const std::string& value); |
|
|
|
}; |
|
|
|
|
|
} |
|
|
|
|