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