00001 #pragma once 00002 00003 #include "InputFeature.h" 00004 #include "StatelessFeatureFunction.h" 00005 00006 namespace Moses 00007 { 00008 00009 00010 class InputFeature : public StatelessFeatureFunction 00011 { 00012 protected: 00013 static InputFeature *s_instance; 00014 00015 size_t m_numInputScores; 00016 size_t m_numRealWordCount; 00017 bool m_legacy; 00018 00019 public: 00020 static const InputFeature *InstancePtr() { 00021 return s_instance; 00022 } 00023 00024 InputFeature(const std::string &line); 00025 00026 void Load(AllOptions::ptr const& opts); 00027 00028 void SetParameter(const std::string& key, const std::string& value); 00029 00030 bool IsUseable(const FactorMask &mask) const { 00031 return true; 00032 } 00033 00034 size_t GetNumInputScores() const { 00035 return m_numInputScores; 00036 } 00037 size_t GetNumRealWordsInInput() const { 00038 return m_numRealWordCount; 00039 } 00040 00041 void EvaluateInIsolation(const Phrase &source 00042 , const TargetPhrase &targetPhrase 00043 , ScoreComponentCollection &scoreBreakdown 00044 , ScoreComponentCollection &estimatedScores) const { 00045 } 00046 00047 void EvaluateWithSourceContext(const InputType &input 00048 , const InputPath &inputPath 00049 , const TargetPhrase &targetPhrase 00050 , const StackVec *stackVec 00051 , ScoreComponentCollection &scoreBreakdown 00052 , ScoreComponentCollection *estimatedScores = NULL) const; 00053 00054 void EvaluateTranslationOptionListWithSourceContext(const InputType &input 00055 , const TranslationOptionList &translationOptionList) const { 00056 } 00057 00058 void EvaluateWhenApplied(const Hypothesis& hypo, 00059 ScoreComponentCollection* accumulator) const { 00060 } 00061 void EvaluateWhenApplied(const ChartHypothesis &hypo, 00062 ScoreComponentCollection* accumulator) const { 00063 } 00064 00065 00066 }; 00067 00068 00069 } 00070