ZGen  0.2.0
a linearization system for natural language.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
score.h
Go to the documentation of this file.
1 #ifndef __SR_SCORE_H__
2 #define __SR_SCORE_H__
3 
4 #include "settings.h"
6 #include <boost/tuple/tuple.hpp>
7 #include <boost/tuple/tuple_comparison.hpp>
8 #include <boost/archive/text_iarchive.hpp>
9 #include <boost/archive/text_oarchive.hpp>
10 
11 namespace ZGen {
12 
13 namespace ShiftReduce {
14 
15 // Unigram
16 struct UnigramScore {
18 
19  UnigramScore(int feat, const action_t& act)
20  : payload(feat, act) {
21  }
22 
23  bool operator == (const UnigramScore & a) const {
24  return (a.payload.get<0>() == payload.get<0>() &&
25  a.payload.get<1>().hash() == payload.get<1>().hash());
26  }
27 
29 
30  template<class Archive>
31  void serialize(Archive & ar, const unsigned version) {
32  ar & payload.get<0>() & payload.get<1>();
33  }
34 
35  friend std::size_t hash_value(const UnigramScore & m) {
36  std::size_t seed = 0;
37  boost::hash_combine(seed, m.payload.get<0>());
38  boost::hash_combine(seed, m.payload.get<1>().hash());
39  return seed;
40  }
41 
42  boost::tuples::tuple<int, action_t> payload;
43 };
44 
45 
46 // Bigram
47 struct BigramScore {
49 
50  BigramScore(int feat1, int feat2, const action_t& act)
51  : payload(feat1, feat2, act) {
52  }
53 
54  bool operator == (const BigramScore & a) const {
55  return (a.payload.get<0>() == payload.get<0>() &&
56  a.payload.get<1>() == payload.get<1>() &&
57  a.payload.get<2>().hash() == payload.get<2>().hash());
58  }
59 
61 
62  template<class Archive>
63  void serialize(Archive & ar, const unsigned version) {
64  ar & payload.get<0>() & payload.get<1>() & payload.get<2>();
65  }
66 
67  friend std::size_t hash_value(const BigramScore & m) {
68  std::size_t seed = 0;
69  boost::hash_combine(seed, m.payload.get<0>());
70  boost::hash_combine(seed, m.payload.get<1>());
71  boost::hash_combine(seed, m.payload.get<2>().hash());
72  return seed;
73  }
74 
75  boost::tuples::tuple<int, int, action_t> payload;
76 };
77 
78 
79 // Trigram
80 struct TrigramScore {
82 
83  TrigramScore(int feat0, int feat1, int feat2, const action_t& act)
84  : payload(feat0, feat1, feat2, act) {
85  }
86 
87  bool operator == (const TrigramScore & a) const {
88  return (a.payload.get<0>() == payload.get<0>() &&
89  a.payload.get<1>() == payload.get<1>() &&
90  a.payload.get<2>() == payload.get<2>() &&
91  a.payload.get<3>().hash() == payload.get<3>().hash());
92  }
93 
95 
96  template<class Archive>
97  void serialize(Archive & ar, const unsigned version) {
98  ar & payload.get<0>() & payload.get<1>() & payload.get<2>() & payload.get<3>();
99  }
100 
101  friend std::size_t hash_value(const TrigramScore & m) {
102  std::size_t seed = 0;
103  boost::hash_combine(seed, m.payload.get<0>());
104  boost::hash_combine(seed, m.payload.get<1>());
105  boost::hash_combine(seed, m.payload.get<2>());
106  boost::hash_combine(seed, m.payload.get<3>().hash());
107  return seed;
108  }
109 
110  boost::tuples::tuple<int, int, int, action_t> payload;
111 };
112 
116 
117 }
118 
119 }
120 
121 #endif // end for __SR_SCORE_H__
boost::tuples::tuple< int, int, int, action_t > payload
Definition: score.h:110
TrigramScore()
Definition: score.h:81
friend std::size_t hash_value(const BigramScore &m)
Definition: score.h:67
void serialize(Archive &ar, const unsigned version)
Definition: score.h:97
friend std::size_t hash_value(const UnigramScore &m)
Definition: score.h:35
BigramScore(int feat1, int feat2, const action_t &act)
Definition: score.h:50
Definition: action.h:18
bool operator==(const TrigramScore &a) const
Definition: score.h:87
bool operator==(const BigramScore &a) const
Definition: score.h:54
boost::tuples::tuple< int, int, action_t > payload
Definition: score.h:75
void serialize(Archive &ar, const unsigned version)
Definition: score.h:63
Definition: score.h:47
UnigramScore us_t
Definition: score.h:113
Definition: score.h:16
void serialize(Archive &ar, const unsigned version)
Definition: score.h:31
friend std::size_t hash_value(const TrigramScore &m)
Definition: score.h:101
friend class boost::serialization::access
Definition: score.h:60
boost::tuples::tuple< int, action_t > payload
Definition: score.h:42
Definition: score.h:80
friend class boost::serialization::access
Definition: score.h:28
TrigramScore ts_t
Definition: score.h:115
TrigramScore(int feat0, int feat1, int feat2, const action_t &act)
Definition: score.h:83
BigramScore()
Definition: score.h:48
friend class boost::serialization::access
Definition: score.h:94
bool operator==(const UnigramScore &a) const
Definition: score.h:23
UnigramScore(int feat, const action_t &act)
Definition: score.h:19
BigramScore bs_t
Definition: score.h:114
UnigramScore()
Definition: score.h:17