summaryrefslogtreecommitdiff
path: root/rst_parser/arc_ff.h
diff options
context:
space:
mode:
authorChris Dyer <cdyer@cs.cmu.edu>2012-04-15 17:28:08 -0400
committerChris Dyer <cdyer@cs.cmu.edu>2012-04-15 17:28:08 -0400
commit372835df257ddd084e47cab962e932615f92f09c (patch)
tree649a84eebc5b4ebe69c2a7b8b8b02ab6784dfc18 /rst_parser/arc_ff.h
parent19147c5f45b40eac1e0ae1bc8bc8ccf90d1ea56c (diff)
crf training of arc-factored dep parser
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