summaryrefslogtreecommitdiff
path: root/decoder/ff_rules.cc
diff options
context:
space:
mode:
authorChris Dyer <cdyer@allegro.clab.cs.cmu.edu>2014-01-15 23:33:58 -0500
committerChris Dyer <cdyer@allegro.clab.cs.cmu.edu>2014-01-15 23:33:58 -0500
commit4b3c880a77d25af9f612e9aaf60e78faa3f00624 (patch)
tree20b3395f0146fbadf6563e4b9d822184342fdacd /decoder/ff_rules.cc
parent9f57df1eb1346196b6ea755eab9fb81a8a57b915 (diff)
parentf3f8dbaec0c91d90fc2e9fdec988081659a7c48c (diff)
Merge branch 'master' of github.com:redpony/cdec
Diffstat (limited to 'decoder/ff_rules.cc')
-rw-r--r--decoder/ff_rules.cc23
1 files changed, 23 insertions, 0 deletions
diff --git a/decoder/ff_rules.cc b/decoder/ff_rules.cc
index 410e083c..7bccf084 100644
--- a/decoder/ff_rules.cc
+++ b/decoder/ff_rules.cc
@@ -12,6 +12,7 @@
#include "verbose.h"
#include "tdict.h"
#include "hg.h"
+#include "trule.h"
using namespace std;
@@ -68,6 +69,28 @@ void RuleIdentityFeatures::TraversalFeaturesImpl(const SentenceMetadata& smeta,
features->add_value(it->second, 1);
}
+RuleWordAlignmentFeatures::RuleWordAlignmentFeatures(const std::string& param) {
+}
+
+void RuleWordAlignmentFeatures::PrepareForInput(const SentenceMetadata& smeta) {
+}
+
+void RuleWordAlignmentFeatures::TraversalFeaturesImpl(const SentenceMetadata& smeta,
+ const Hypergraph::Edge& edge,
+ const vector<const void*>& ant_contexts,
+ SparseVector<double>* features,
+ SparseVector<double>* estimated_features,
+ void* context) const {
+ const TRule& rule = *edge.rule_;
+ ostringstream os;
+ vector<AlignmentPoint> als = rule.als();
+ std::vector<AlignmentPoint>::const_iterator xx = als.begin();
+ for (; xx != als.end(); ++xx) {
+ os << "WA:" << TD::Convert(rule.f_[xx->s_]) << ":" << TD::Convert(rule.e_[xx->t_]);
+ }
+ features->add_value(FD::Convert(Escape(os.str())), 1);
+}
+
RuleSourceBigramFeatures::RuleSourceBigramFeatures(const std::string& param) {
}