diff options
| author | Chris Dyer <cdyer@cs.cmu.edu> | 2012-04-16 22:43:29 -0400 | 
|---|---|---|
| committer | Chris Dyer <cdyer@cs.cmu.edu> | 2012-04-16 22:43:29 -0400 | 
| commit | 44c36473b420ff47652da103949a1175a10c528d (patch) | |
| tree | 7106454a3b13a04a17a3a7c7cfb3010ce261d2a3 /rst_parser | |
| parent | 23dcec445852d140291bba4a8c40bb0e47e9a266 (diff) | |
global features
Diffstat (limited to 'rst_parser')
| -rw-r--r-- | rst_parser/global_ff.cc | 43 | ||||
| -rw-r--r-- | rst_parser/global_ff.h | 18 | 
2 files changed, 61 insertions, 0 deletions
| diff --git a/rst_parser/global_ff.cc b/rst_parser/global_ff.cc new file mode 100644 index 00000000..bb715f18 --- /dev/null +++ b/rst_parser/global_ff.cc @@ -0,0 +1,43 @@ +#include "global_ff.h" + +#include <iostream> + +#include "tdict.h" + +using namespace std; + +struct GFFImpl { +  void PrepareForInput(const TaggedSentence& sentence) { +  } +  void Features(const TaggedSentence& sentence, +                const EdgeSubset& tree, +                SparseVector<double>* feats) const { +    const vector<WordID>& words = sentence.words; +    const vector<WordID>& tags = sentence.pos; +    const vector<pair<short,short> >& hms = tree.h_m_pairs; +    assert(words.size() == tags.size()); +    vector<int> mods(words.size()); +    for (int i = 0; i < hms.size(); ++i) { +      mods[hms[i].first]++;        // first = head, second = modifier +    } +    for (int i = 0; i < mods.size(); ++i) { +      ostringstream os; +      os << "NM:" << TD::Convert(tags[i]) << "_" << mods[i]; +      feats->add_value(FD::Convert(os.str()), 1.0); +    } +  } +}; + +GlobalFeatureFunctions::GlobalFeatureFunctions() {} +GlobalFeatureFunctions::~GlobalFeatureFunctions() { delete pimpl; } + +void GlobalFeatureFunctions::PrepareForInput(const TaggedSentence& sentence) { +  pimpl->PrepareForInput(sentence); +} + +void GlobalFeatureFunctions::Features(const TaggedSentence& sentence, +                                      const EdgeSubset& tree, +                                      SparseVector<double>* feats) const { +  pimpl->Features(sentence, tree, feats); +} + diff --git a/rst_parser/global_ff.h b/rst_parser/global_ff.h new file mode 100644 index 00000000..d71d0fa1 --- /dev/null +++ b/rst_parser/global_ff.h @@ -0,0 +1,18 @@ +#ifndef _GLOBAL_FF_H_ +#define _GLOBAL_FF_H_ + +#include "arc_factored.h" + +struct GFFImpl; +struct GlobalFeatureFunctions { +  GlobalFeatureFunctions(); +  ~GlobalFeatureFunctions(); +  void PrepareForInput(const TaggedSentence& sentence); +  void Features(const TaggedSentence& sentence, +                const EdgeSubset& tree, +                SparseVector<double>* feats) const; + private: +  GFFImpl* pimpl; +}; + +#endif | 
