#pragma once #include "InputFeature.h" #include "StatelessFeatureFunction.h" namespace Moses { class InputFeature : public StatelessFeatureFunction { protected: static InputFeature *s_instance; size_t m_numInputScores; size_t m_numRealWordCount; bool m_legacy; public: static const InputFeature *InstancePtr() { return s_instance; } InputFeature(const std::string &line); void Load(); void SetParameter(const std::string& key, const std::string& value); bool IsUseable(const FactorMask &mask) const { return true; } size_t GetNumInputScores() const { return m_numInputScores; } size_t GetNumRealWordsInInput() const { return m_numRealWordCount; } 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 { } void EvaluateWhenApplied(const Hypothesis& hypo, ScoreComponentCollection* accumulator) const { } void EvaluateWhenApplied(const ChartHypothesis &hypo, ScoreComponentCollection* accumulator) const { } }; }