#pragma once #include #include "StatelessFeatureFunction.h" namespace Moses { class SkeletonTranslationOptionListFeature : public StatelessFeatureFunction { public: SkeletonTranslationOptionListFeature(const std::string &line) :StatelessFeatureFunction(1, line) { ReadParameters(); } bool IsUseable(const FactorMask &mask) const { return true; } void EvaluateInIsolation(const Phrase &source , const TargetPhrase &targetPhrase , ScoreComponentCollection &scoreBreakdown , ScoreComponentCollection &estimatedFutureScore) const { } void EvaluateWithSourceContext(const InputType &input , const InputPath &inputPath , const TargetPhrase &targetPhrase , const StackVec *stackVec , ScoreComponentCollection &scoreBreakdown , ScoreComponentCollection *estimatedFutureScore = NULL) const { } void EvaluateTranslationOptionListWithSourceContext(const InputType &input , const TranslationOptionList &translationOptionList) const { std::vector newScores(m_numScoreComponents); newScores[0] = translationOptionList.size(); TranslationOptionList::const_iterator iterTransOpt; for(iterTransOpt = translationOptionList.begin() ; iterTransOpt != translationOptionList.end() ; ++iterTransOpt) { TranslationOption &transOpt = **iterTransOpt; ScoreComponentCollection &scoreBreakDown = transOpt.GetScoreBreakdown(); scoreBreakDown.PlusEquals(this, newScores); transOpt.UpdateScore(); } } void EvaluateWhenApplied(const Hypothesis& hypo, ScoreComponentCollection* accumulator) const { } void EvaluateWhenApplied(const ChartHypothesis &hypo, ScoreComponentCollection* accumulator) const { } void SetParameter(const std::string& key, const std::string& value) { } }; }