diff options
| author | chris dyer <redpony@umd.edu> | 2010-12-28 20:56:42 -0500 | 
|---|---|---|
| committer | chris dyer <redpony@umd.edu> | 2010-12-28 20:56:42 -0500 | 
| commit | b85986c762bc8a2a74bfe0e2eb1d88fba991d554 (patch) | |
| tree | aae7a3b2127a14b67afda54184d261b56a670ec4 /decoder/trule.h | |
| parent | 6b4b4f19f44e051e5f62bcb1243c3d199d537cc6 (diff) | |
incorporate dwarf features
Diffstat (limited to 'decoder/trule.h')
| -rw-r--r-- | decoder/trule.h | 26 | 
1 files changed, 18 insertions, 8 deletions
| diff --git a/decoder/trule.h b/decoder/trule.h index acdbc5cf..6bffc277 100644 --- a/decoder/trule.h +++ b/decoder/trule.h @@ -4,6 +4,7 @@  #include <algorithm>  #include <vector>  #include <cassert> +#include <iostream>  #include <boost/shared_ptr.hpp>  #include "sparse_vector.h" @@ -12,18 +13,27 @@  class TRule;  typedef boost::shared_ptr<TRule> TRulePtr; -struct NTSizeSummaryStatistics { -  NTSizeSummaryStatistics(int arity) : means(arity), vars(arity) {} -  std::vector<float> means; -  std::vector<float> vars; +struct AlignmentPoint { +  AlignmentPoint() : s_(), t_() {} +  AlignmentPoint(int s, int t) : s_(s), t_(t) {} +  AlignmentPoint Inverted() const { +    return AlignmentPoint(t_, s_); +  } +  short s_; +  short t_;  }; +inline std::ostream& operator<<(std::ostream& os, const AlignmentPoint& p) { +  return os << '(' << static_cast<int>(p.s_) << '-' << static_cast<int>(p.t_) << ')'; +} +  // Translation rule  class TRule {   public:    TRule() : lhs_(0), prev_i(-1), prev_j(-1) { } -  TRule(WordID lhs, const WordID* src, int src_size, const WordID* trg, int trg_size, const int* feat_ids, const double* feat_vals, int feat_size, int arity) : -      e_(trg, trg + trg_size), f_(src, src + src_size), lhs_(lhs), arity_(arity), prev_i(-1), prev_j(-1) { +  TRule(WordID lhs, const WordID* src, int src_size, const WordID* trg, int trg_size, const int* feat_ids, const double* feat_vals, int feat_size, int arity, const AlignmentPoint* als, int alsnum) : +      e_(trg, trg + trg_size), f_(src, src + src_size), lhs_(lhs), arity_(arity), prev_i(-1), prev_j(-1), +      a_(als, als + alsnum) {      for (int i = 0; i < feat_size; ++i)        scores_.set_value(feat_ids[i], feat_vals[i]);    } @@ -113,6 +123,7 @@ class TRule {    const std::vector<WordID>& f() const { return f_; }    const std::vector<WordID>& e() const { return e_; } +  const std::vector<AlignmentPoint>& als() const { return a_; }    int EWords() const { return ELength() - Arity(); }    int FWords() const { return FLength() - Arity(); } @@ -141,8 +152,7 @@ class TRule {    short int prev_i;    short int prev_j; -  // may be null -  boost::shared_ptr<NTSizeSummaryStatistics> nt_size_summary_; +  std::vector<AlignmentPoint> a_;  // alignment points, may be empty    // only for coarse-to-fine decoding    boost::shared_ptr<std::vector<TRulePtr> > fine_rules_; | 
