summaryrefslogtreecommitdiff
path: root/rst_parser/arc_ff.h
blob: bc51fef4276bca8bd38c45426f86104464ed4cd4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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