1 #ifndef __ZGEN_BESTFIRST_MODEL_SCORE_MAP_H__
2 #define __ZGEN_BESTFIRST_MODEL_SCORE_MAP_H__
5 #include <boost/unordered_map.hpp>
15 template<
class ScoreType>
19 typedef boost::unordered_map<ScoreType, param_t> map_t;
20 typedef std::function<void(const ScoreContext&, std::vector<ScoreType>&)> extractor_t;
23 ScoreMap(extractor_t _extractor): extractor(_extractor) {}
27 std::vector<ScoreType> features;
28 extractor(ctx, features);
31 for (
int i = 0; i < features.size(); ++ i) {
32 const ScoreType& entry = features[i];
33 typename map_t::const_iterator itx = payload.find(entry);
35 if (itx == payload.end()) {
36 retval += default_return_value;
39 retval += itx->second.w_sum;
41 retval += itx->second.w;
50 std::vector<ScoreType> features;
51 extractor(ctx, features);
53 for (
int i = 0; i < features.size(); ++ i) {
54 const ScoreType& entry = features[i];
55 param_t& param = payload[entry];
56 param.
add(now, scale);
61 for (
typename map_t::iterator itx = payload.begin();
62 itx != payload.end(); ++ itx) {
63 itx->second.flush(now);
67 void save(boost::archive::text_oarchive& oa) {
71 void load(boost::archive::text_iarchive& ia) {
77 extractor_t extractor;
84 #endif // end for __ZGEN_BESTFIRST_MODEL_SCORE_MAP_H__
void update(const ScoreContext &ctx, int now, floatval_t scale=1.)
Definition: score_map.h:49
void add(int now, floatval_t scale)
Definition: param.h:39
ScoreMap(extractor_t _extractor)
Definition: score_map.h:23
void save(boost::archive::text_oarchive &oa)
Definition: score_map.h:67
void flush(int now)
Definition: score_map.h:60
floatval_t score(const ScoreContext &ctx, bool avg, floatval_t default_return_value=0.) const
Definition: score_map.h:25
double floatval_t
Definition: settings.h:24
Definition: score_map.h:16
void load(boost::archive::text_iarchive &ia)
Definition: score_map.h:71
Definition: score_context.h:13