diff options
Diffstat (limited to 'rst_parser/arc_ff.h')
| -rw-r--r-- | rst_parser/arc_ff.h | 43 | 
1 files changed, 43 insertions, 0 deletions
diff --git a/rst_parser/arc_ff.h b/rst_parser/arc_ff.h new file mode 100644 index 00000000..bc51fef4 --- /dev/null +++ b/rst_parser/arc_ff.h @@ -0,0 +1,43 @@ +#ifndef _ARC_FF_H_ +#define _ARC_FF_H_ + +#include <string> +#include "sparse_vector.h" +#include "weights.h" +#include "arc_factored.h" + +struct TaggedSentence; +class ArcFeatureFunction { + public: +  virtual ~ArcFeatureFunction(); + +  // called once, per input, before any calls to EdgeFeatures +  // used to initialize sentence-specific data structures +  virtual void PrepareForInput(const TaggedSentence& sentence); + +  inline void EgdeFeatures(const TaggedSentence& sentence, +                           short h, +                           short m, +                           SparseVector<weight_t>* features) const { +    EdgeFeaturesImpl(sentence, h, m, features); +  } + protected: +  virtual void EdgeFeaturesImpl(const TaggedSentence& sentence, +                                short h, +                                short m, +                                SparseVector<weight_t>* features) const = 0; +}; + +class DistancePenalty : public ArcFeatureFunction { + public: +  DistancePenalty(const std::string& param); + protected: +  virtual void EdgeFeaturesImpl(const TaggedSentence& sentence, +                                short h, +                                short m, +                                SparseVector<weight_t>* features) const; + private: +  const int fidw_, fidr_; +}; + +#endif  | 
