|
|
|
|
|
|
|
|
|
|
|
|
|
#include <sstream> |
|
#include "ExampleStatefulFF.h" |
|
#include "../PhraseBased/Manager.h" |
|
#include "../PhraseBased/Hypothesis.h" |
|
|
|
using namespace std; |
|
|
|
namespace Moses2 |
|
{ |
|
|
|
class ExampleState: public FFState |
|
{ |
|
public: |
|
int targetLen; |
|
|
|
ExampleState() { |
|
|
|
} |
|
|
|
virtual size_t hash() const { |
|
return (size_t) targetLen; |
|
} |
|
virtual bool operator==(const FFState& o) const { |
|
const ExampleState& other = static_cast<const ExampleState&>(o); |
|
return targetLen == other.targetLen; |
|
} |
|
|
|
virtual std::string ToString() const { |
|
stringstream sb; |
|
sb << targetLen; |
|
return sb.str(); |
|
} |
|
|
|
}; |
|
|
|
|
|
ExampleStatefulFF::ExampleStatefulFF(size_t startInd, const std::string &line) : |
|
StatefulFeatureFunction(startInd, line) |
|
{ |
|
ReadParameters(); |
|
} |
|
|
|
ExampleStatefulFF::~ExampleStatefulFF() |
|
{ |
|
|
|
} |
|
|
|
FFState* ExampleStatefulFF::BlankState(MemPool &pool, const System &sys) const |
|
{ |
|
return new (pool.Allocate<ExampleState>()) ExampleState(); |
|
} |
|
|
|
void ExampleStatefulFF::EmptyHypothesisState(FFState &state, |
|
const ManagerBase &mgr, const InputType &input, |
|
const Hypothesis &hypo) const |
|
{ |
|
ExampleState &stateCast = static_cast<ExampleState&>(state); |
|
stateCast.targetLen = 0; |
|
} |
|
|
|
void ExampleStatefulFF::EvaluateInIsolation(MemPool &pool, |
|
const System &system, const Phrase<Moses2::Word> &source, |
|
const TargetPhraseImpl &targetPhrase, Scores &scores, |
|
SCORE &estimatedScore) const |
|
{ |
|
} |
|
|
|
void ExampleStatefulFF::EvaluateInIsolation(MemPool &pool, const System &system, const Phrase<SCFG::Word> &source, |
|
const TargetPhrase<SCFG::Word> &targetPhrase, Scores &scores, |
|
SCORE &estimatedScore) const |
|
{ |
|
} |
|
|
|
void ExampleStatefulFF::EvaluateWhenApplied(const ManagerBase &mgr, |
|
const Hypothesis &hypo, const FFState &prevState, Scores &scores, |
|
FFState &state) const |
|
{ |
|
ExampleState &stateCast = static_cast<ExampleState&>(state); |
|
stateCast.targetLen = hypo.GetTargetPhrase().GetSize(); |
|
} |
|
|
|
void ExampleStatefulFF::EvaluateWhenApplied(const SCFG::Manager &mgr, |
|
const SCFG::Hypothesis &hypo, int featureID, Scores &scores, |
|
FFState &state) const |
|
{ |
|
UTIL_THROW2("Not implemented"); |
|
} |
|
|
|
} |
|
|
|
|