00001 #ifndef moses_CorrectionPattern_h 00002 #define moses_CorrectionPattern_h 00003 00004 #include <string> 00005 #include <boost/unordered_set.hpp> 00006 00007 #include "StatelessFeatureFunction.h" 00008 #include "moses/FactorCollection.h" 00009 #include "moses/AlignmentInfo.h" 00010 00011 namespace Moses 00012 { 00013 00014 typedef std::vector<std::string> Tokens; 00015 00018 class CorrectionPattern : public StatelessFeatureFunction 00019 { 00020 private: 00021 std::vector<FactorType> m_factors; 00022 bool m_general; 00023 size_t m_context; 00024 std::vector<FactorType> m_contextFactors; 00025 00026 public: 00027 CorrectionPattern(const std::string &line); 00028 00029 bool IsUseable(const FactorMask &mask) const; 00030 00031 void EvaluateInIsolation(const Phrase &source 00032 , const TargetPhrase &targetPhrase 00033 , ScoreComponentCollection &scoreBreakdown 00034 , ScoreComponentCollection &estimatedFutureScore) const 00035 {} 00036 00037 virtual void EvaluateWithSourceContext(const InputType &input 00038 , const InputPath &inputPath 00039 , const TargetPhrase &targetPhrase 00040 , const StackVec *stackVec 00041 , ScoreComponentCollection &scoreBreakdown 00042 , ScoreComponentCollection *estimatedFutureScore = NULL) const; 00043 00044 void EvaluateTranslationOptionListWithSourceContext(const InputType &input 00045 , const TranslationOptionList &translationOptionList) const 00046 {} 00047 00048 void EvaluateWhenApplied(const Hypothesis& hypo, 00049 ScoreComponentCollection* accumulator) const 00050 {} 00051 void EvaluateWhenApplied(const ChartHypothesis &hypo, 00052 ScoreComponentCollection* accumulator) const 00053 {} 00054 00055 void ComputeFeatures(const InputType &input, 00056 const InputPath &inputPath, 00057 const TargetPhrase& targetPhrase, 00058 ScoreComponentCollection* accumulator) const; 00059 00060 void SetParameter(const std::string& key, const std::string& value); 00061 00062 std::vector<std::string> CreatePattern(const Tokens &s1, 00063 const Tokens &s2, 00064 const InputType &input, 00065 const InputPath &inputPath) const; 00066 00067 std::string CreateSinglePattern(const Tokens &s1, const Tokens &s2) const; 00068 00069 }; 00070 00071 } 00072 00073 #endif // moses_CorrectionPattern_h