summaryrefslogtreecommitdiff
path: root/decoder/ff_wordset.cc
diff options
context:
space:
mode:
authorjon.h.clark <jon.h.clark@ec762483-ff6d-05da-a07a-a48fb63a330f>2010-11-12 20:28:09 +0000
committerjon.h.clark <jon.h.clark@ec762483-ff6d-05da-a07a-a48fb63a330f>2010-11-12 20:28:09 +0000
commitbc93e6d9e869b9769a5d0273b4292eedf921780e (patch)
tree052bf9addc9330b8cfab100d6cb98ca6ecfad04e /decoder/ff_wordset.cc
parent2ca345d3612c5a3dcf4af6f320200b4bfecbe1e9 (diff)
Forgot worset feature
git-svn-id: https://ws10smt.googlecode.com/svn/trunk@717 ec762483-ff6d-05da-a07a-a48fb63a330f
Diffstat (limited to 'decoder/ff_wordset.cc')
-rw-r--r--decoder/ff_wordset.cc28
1 files changed, 28 insertions, 0 deletions
diff --git a/decoder/ff_wordset.cc b/decoder/ff_wordset.cc
new file mode 100644
index 00000000..44468899
--- /dev/null
+++ b/decoder/ff_wordset.cc
@@ -0,0 +1,28 @@
+#include "ff_wordset.h"
+
+#include "fdict.h"
+#include <sstream>
+#include <iostream>
+
+using namespace std;
+
+void WordSet::TraversalFeaturesImpl(const SentenceMetadata& /*smeta*/ ,
+ const Hypergraph::Edge& edge,
+ const vector<const void*>& /* ant_contexts */,
+ SparseVector<double>* features,
+ SparseVector<double>* /* estimated_features */,
+ void* /* context */) const {
+
+ double addScore = 0.0;
+ for(std::vector<WordID>::const_iterator it = edge.rule_->e_.begin(); it != edge.rule_->e_.end(); ++it) {
+
+ bool inVocab = (vocab_.find(*it) != vocab_.end());
+ if(oovMode_ && !inVocab) {
+ addScore += 1.0;
+ } else if(!oovMode_ && inVocab) {
+ addScore += 1.0;
+ }
+ }
+ features->set_value(fid_, addScore);
+}
+