diff options
Diffstat (limited to 'decoder')
| -rw-r--r-- | decoder/ff_basic.cc | 9 | ||||
| -rw-r--r-- | decoder/ff_basic.h | 3 | 
2 files changed, 5 insertions, 7 deletions
diff --git a/decoder/ff_basic.cc b/decoder/ff_basic.cc index f9404d24..f960418a 100644 --- a/decoder/ff_basic.cc +++ b/decoder/ff_basic.cc @@ -49,9 +49,7 @@ void SourceWordPenalty::TraversalFeaturesImpl(const SentenceMetadata& smeta,    features->set_value(fid_, edge.rule_->FWords() * value_);  } - -ArityPenalty::ArityPenalty(const std::string& param) : -    value_(-1.0 / log(10)) { +ArityPenalty::ArityPenalty(const std::string& param) {    string fname = "Arity_";    unsigned MAX=DEFAULT_MAX_ARITY;    using namespace boost; @@ -61,7 +59,8 @@ ArityPenalty::ArityPenalty(const std::string& param) :      WordID fid=FD::Convert(fname+lexical_cast<string>(i));      fids_.push_back(fid);    } -  while (!fids_.empty() && fids_.back()==0) fids_.pop_back(); // pretty up features vector in case FD was frozen.  doesn't change anything +  // pretty up features vector in case FD was frozen.  doesn't change anything +  while (!fids_.empty() && fids_.back()==0) fids_.pop_back();  }  void ArityPenalty::TraversalFeaturesImpl(const SentenceMetadata& smeta, @@ -75,6 +74,6 @@ void ArityPenalty::TraversalFeaturesImpl(const SentenceMetadata& smeta,    (void) state;    (void) estimated_features;    unsigned a=edge.Arity(); -  features->set_value(a<fids_.size()?fids_[a]:0, value_); +  if (a < fids_.size()) features->set_value(fids_[a], 1.0);  } diff --git a/decoder/ff_basic.h b/decoder/ff_basic.h index e708e8cd..c63daf0f 100644 --- a/decoder/ff_basic.h +++ b/decoder/ff_basic.h @@ -41,7 +41,7 @@ class SourceWordPenalty : public FeatureFunction {    const double value_;  }; -#define DEFAULT_MAX_ARITY 9 +#define DEFAULT_MAX_ARITY 50  #define DEFAULT_MAX_ARITY_STRINGIZE(x) #x  #define DEFAULT_MAX_ARITY_STRINGIZE_EVAL(x) DEFAULT_MAX_ARITY_STRINGIZE(x)  #define DEFAULT_MAX_ARITY_STR DEFAULT_MAX_ARITY_STRINGIZE_EVAL(DEFAULT_MAX_ARITY) @@ -62,7 +62,6 @@ class ArityPenalty : public FeatureFunction {                                       void* context) const;   private:    std::vector<WordID> fids_; -  const double value_;  };  #endif  | 
