00001 #pragma once
00002
00003 #include <boost/unordered_set.hpp>
00004 #include <string>
00005 #include "StatelessFeatureFunction.h"
00006
00007 namespace Moses
00008 {
00009 class Range;
00010 class Word;
00011
00012
00013 class NieceTerminal : public StatelessFeatureFunction
00014 {
00015 public:
00016 NieceTerminal(const std::string &line);
00017
00018 bool IsUseable(const FactorMask &mask) const {
00019 return true;
00020 }
00021
00022 void EvaluateInIsolation(const Phrase &source
00023 , const TargetPhrase &targetPhrase
00024 , ScoreComponentCollection &scoreBreakdown
00025 , ScoreComponentCollection &estimatedScores) const;
00026 void EvaluateWithSourceContext(const InputType &input
00027 , const InputPath &inputPath
00028 , const TargetPhrase &targetPhrase
00029 , const StackVec *stackVec
00030 , ScoreComponentCollection &scoreBreakdown
00031 , ScoreComponentCollection *estimatedScores = NULL) const;
00032
00033 void EvaluateTranslationOptionListWithSourceContext(const InputType &input
00034 , const TranslationOptionList &translationOptionList) const {
00035 }
00036
00037 void EvaluateWhenApplied(const Hypothesis& hypo,
00038 ScoreComponentCollection* accumulator) const;
00039 void EvaluateWhenApplied(const ChartHypothesis &hypo,
00040 ScoreComponentCollection* accumulator) const;
00041
00042 void SetParameter(const std::string& key, const std::string& value);
00043 std::vector<float> DefaultWeights() const;
00044
00045 protected:
00046 bool m_hardConstraint;
00047 bool ContainTerm(const InputType &input,
00048 const Range &ntRange,
00049 const boost::unordered_set<Word> &terms) const;
00050 };
00051
00052 }
00053
00054