diff options
Diffstat (limited to 'decoder/ff_source_syntax2.cc')
| -rw-r--r-- | decoder/ff_source_syntax2.cc | 25 | 
1 files changed, 15 insertions, 10 deletions
diff --git a/decoder/ff_source_syntax2.cc b/decoder/ff_source_syntax2.cc index 08ece917..63736342 100644 --- a/decoder/ff_source_syntax2.cc +++ b/decoder/ff_source_syntax2.cc @@ -17,7 +17,7 @@ using namespace std;  struct SourceSyntaxFeatures2Impl {    SourceSyntaxFeatures2Impl(const string& param) { -    if (!(param.compare("") == 0)) { +    if (param.compare("") != 0) {        string triggered_features_fn = param;        ReadFile triggered_features(triggered_features_fn);        string in; @@ -29,10 +29,8 @@ struct SourceSyntaxFeatures2Impl {    void InitializeGrids(const string& tree, unsigned src_len) {      assert(tree.size() > 0); -    //fids_cat.clear();      fids_ef.clear();      src_tree.clear(); -    //fids_cat.resize(src_len, src_len + 1);      fids_ef.resize(src_len, src_len + 1);      src_tree.resize(src_len, src_len + 1, TD::Convert("XX"));      ParseTreeString(tree, src_len); @@ -40,7 +38,7 @@ struct SourceSyntaxFeatures2Impl {    void ParseTreeString(const string& tree, unsigned src_len) {      //cerr << "TREE: " << tree << endl; -    stack<pair<int, WordID> > stk;  // first = i, second = category +    stack<pair<int, WordID> > stk; // first = i, second = category      pair<int, WordID> cur_cat; cur_cat.first = -1;      unsigned i = 0;      unsigned p = 0; @@ -100,7 +98,7 @@ struct SourceSyntaxFeatures2Impl {        if (k > 0 && fj <= 0) os << '_';        if (fj <= 0) {          os << '[' << TD::Convert(ants[ntc++]) << ']'; -      } /*else { +      }/*else {          os << TD::Convert(fj);        }*/      } @@ -116,16 +114,22 @@ struct SourceSyntaxFeatures2Impl {      fid_ef = FD::Convert(os.str());      //cerr << "FEATURE: " << os.str() << endl;      //cerr << "FID_EF: " << fid_ef << endl; -    if (feature_filter.find(fid_ef) != feature_filter.end()) { -      cerr << "SYN-Feature was trigger more than once on training set." << endl; +    if (feature_filter.size() > 0) { +      if (feature_filter.find(fid_ef) != feature_filter.end()) { +        //cerr << "SYN-Feature was trigger more than once on training set." << endl; +        feats->set_value(fid_ef, 1.0); +      } +      //else cerr << "SYN-Feature was triggered less than once on training set." << endli; +    } +    else {        feats->set_value(fid_ef, 1.0);      } -    else cerr << "SYN-Feature was triggered less than once on training set." << endl; +    cerr << FD::Convert(fid_ef) << endl;      return lhs;    } -  Array2D<WordID> src_tree;  // src_tree(i,j) NT = type -  mutable Array2D<map<const TRule*, int> > fids_ef;    // fires for fully lexicalized +  Array2D<WordID> src_tree; // src_tree(i,j) NT = type +  mutable Array2D<map<const TRule*, int> > fids_ef; // fires for fully lexicalized    tr1::unordered_set<int> feature_filter;  }; @@ -157,3 +161,4 @@ void SourceSyntaxFeatures2::TraversalFeaturesImpl(const SentenceMetadata& smeta,  void SourceSyntaxFeatures2::PrepareForInput(const SentenceMetadata& smeta) {    impl->InitializeGrids(smeta.GetSGMLValue("src_tree"), smeta.GetSourceLength());  } +  | 
