summaryrefslogtreecommitdiff
path: root/rst_parser/arc_ff.h
diff options
context:
space:
mode:
Diffstat (limited to 'rst_parser/arc_ff.h')
-rw-r--r--rst_parser/arc_ff.h43
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