diff options
author | Chris Dyer <cdyer@allegro.clab.cs.cmu.edu> | 2013-04-23 19:35:18 -0400 |
---|---|---|
committer | Chris Dyer <cdyer@allegro.clab.cs.cmu.edu> | 2013-04-23 19:35:18 -0400 |
commit | 6d347f1ce078dede3da0e1498f75e357351c6543 (patch) | |
tree | 8e872b8747c530e741e55e25e9917c1bd8b32c5b /extractor/grammar.cc | |
parent | d11b76def6899790161c47a73018146311356d8b (diff) | |
parent | 5e9605b65202f4e5fc59843b197d88c4774f0ac8 (diff) |
merge paul's extractor code
Diffstat (limited to 'extractor/grammar.cc')
-rw-r--r-- | extractor/grammar.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/extractor/grammar.cc b/extractor/grammar.cc new file mode 100644 index 00000000..b45a8261 --- /dev/null +++ b/extractor/grammar.cc @@ -0,0 +1,43 @@ +#include "grammar.h" + +#include <iomanip> + +#include "rule.h" + +using namespace std; + +namespace extractor { + +Grammar::Grammar(const vector<Rule>& rules, + const vector<string>& feature_names) : + rules(rules), feature_names(feature_names) {} + +vector<Rule> Grammar::GetRules() const { + return rules; +} + +vector<string> Grammar::GetFeatureNames() const { + return feature_names; +} + +ostream& operator<<(ostream& os, const Grammar& grammar) { + vector<Rule> rules = grammar.GetRules(); + vector<string> feature_names = grammar.GetFeatureNames(); + os << setprecision(12); + for (Rule rule: rules) { + os << "[X] ||| " << rule.source_phrase << " ||| " + << rule.target_phrase << " |||"; + for (size_t i = 0; i < rule.scores.size(); ++i) { + os << " " << feature_names[i] << "=" << rule.scores[i]; + } + os << " |||"; + for (auto link: rule.alignment) { + os << " " << link.first << "-" << link.second; + } + os << '\n'; + } + + return os; +} + +} // namespace extractor |