diff options
author | Patrick Simianer <p@simianer.de> | 2012-04-23 21:44:02 +0200 |
---|---|---|
committer | Patrick Simianer <p@simianer.de> | 2012-04-23 21:44:02 +0200 |
commit | 2f427278616cbe3fa6f56d6b97c40b3894dbd950 (patch) | |
tree | 6998435e4677437c474cf0f835ce9f72d70d3945 /rst_parser/global_ff.cc | |
parent | 6d0d0eb6bbfaee6b6998659a55e2195977ccd217 (diff) | |
parent | 217c4aaeba1c9f19b3420b526235bffd86c7a92b (diff) |
Merge remote-tracking branch 'upstream/master'
Conflicts:
Makefile.am
configure.ac
Diffstat (limited to 'rst_parser/global_ff.cc')
-rw-r--r-- | rst_parser/global_ff.cc | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/rst_parser/global_ff.cc b/rst_parser/global_ff.cc new file mode 100644 index 00000000..ae410875 --- /dev/null +++ b/rst_parser/global_ff.cc @@ -0,0 +1,44 @@ +#include "global_ff.h" + +#include <iostream> +#include <sstream> + +#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() : pimpl(new GFFImpl) {} +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); +} + |