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 __ZGEN_BESTFIRST_MODEL_SCORE_H___
2 #define __ZGEN_BESTFIRST_MODEL_SCORE_H___
3 
4 #include <boost/tuple/tuple.hpp>
5 #include <boost/tuple/tuple_comparison.hpp>
6 #include <boost/archive/text_iarchive.hpp>
7 #include <boost/archive/text_oarchive.hpp>
8 
9 namespace ZGen {
10 
11 namespace BestFirst {
12 
13 typedef int UnigramScore;
14 
15 struct BigramScore {
17 
18  BigramScore(int feat1, int feat2)
19  : payload(feat1, feat2) {
20  }
21 
22  bool operator == (const BigramScore & a) const {
23  return (a.payload.get<0>() == payload.get<0>() &&
24  a.payload.get<1>() == payload.get<1>());
25  }
26 
28 
29  template<class Archive>
30  void serialize(Archive & ar, const unsigned version) {
31  ar & payload.get<0>() & payload.get<1>();
32  }
33 
34  friend std::size_t hash_value(const BigramScore & m) {
35  std::size_t seed = 0;
36  boost::hash_combine(seed, m.payload.get<0>());
37  boost::hash_combine(seed, m.payload.get<1>());
38  return seed;
39  }
40 
41  boost::tuples::tuple<int, int> payload;
42 };
43 
44 struct TrigramScore {
46 
47  TrigramScore(int feat0, int feat1, int feat2)
48  : payload(feat0, feat1, feat2) {
49  }
50 
51  bool operator == (const TrigramScore & a) const {
52  return (a.payload.get<0>() == payload.get<0>() &&
53  a.payload.get<1>() == payload.get<1>() &&
54  a.payload.get<2>() == payload.get<2>());
55  }
56 
58 
59  template<class Archive>
60  void serialize(Archive & ar, const unsigned version) {
61  ar & payload.get<0>() & payload.get<1>() & payload.get<2>();
62  }
63 
64  friend std::size_t hash_value(const TrigramScore & m) {
65  std::size_t seed = 0;
66  boost::hash_combine(seed, m.payload.get<0>());
67  boost::hash_combine(seed, m.payload.get<1>());
68  boost::hash_combine(seed, m.payload.get<2>());
69  return seed;
70  }
71 
72  boost::tuples::tuple<int, int, int> payload;
73 };
74 
76 typedef BigramScore bs_t;
78 
79 } // end for namespace BestFirst
80 } // end for namespace ZGen
81 
82 #endif // end for __ZGEN_BESTFIRST_MODEL_SCORE_H___
TrigramScore()
Definition: score.h:45
int UnigramScore
Definition: score.h:13
bool operator==(const TrigramScore &a) const
Definition: score.h:51
friend class boost::serialization::access
Definition: score.h:27
boost::tuples::tuple< int, int, int > payload
Definition: score.h:72
friend std::size_t hash_value(const BigramScore &m)
Definition: score.h:34
BigramScore bs_t
Definition: score.h:76
Definition: score.h:44
TrigramScore(int feat0, int feat1, int feat2)
Definition: score.h:47
Definition: score.h:15
friend std::size_t hash_value(const TrigramScore &m)
Definition: score.h:64
bool operator==(const BigramScore &a) const
Definition: score.h:22
friend class boost::serialization::access
Definition: score.h:57
BigramScore()
Definition: score.h:16
void serialize(Archive &ar, const unsigned version)
Definition: score.h:30
TrigramScore ts_t
Definition: score.h:77
UnigramScore us_t
Definition: score.h:75
BigramScore(int feat1, int feat2)
Definition: score.h:18
boost::tuples::tuple< int, int > payload
Definition: score.h:41
void serialize(Archive &ar, const unsigned version)
Definition: score.h:60