1 #ifndef __ZGEN_SHIFTREDUCE_MODEL_SCORE_MAP_H__
2 #define __ZGEN_SHIFTREDUCE_MODEL_SCORE_MAP_H__
10 namespace ShiftReduce {
12 template<
class ScoreType>
16 typedef boost::unordered_map<ScoreType, param_t> map_t;
17 typedef std::vector<ScoreType> cache_t;
18 typedef std::function<void(const ScoreContext&, const Action&, cache_t&)> extractor_t;
21 ScoreMap(extractor_t _extractor): extractor(_extractor) {}
34 bool avg,
floatval_t default_return_value = 0.) {
36 extractor(ctx, act, cache);
39 for (
int i = 0; i < cache.size(); ++ i) {
40 const ScoreType& entry = cache[i];
41 typename map_t::const_iterator itx = payload.find(entry);
42 if (itx != payload.end()) {
44 ret += itx->second.w_sum;
64 extractor(ctx, act, cache);
65 for (
int i = 0; i < cache.size(); ++ i) {
66 const ScoreType& entry = cache[i];
67 param_t& param = payload[entry];
68 param.
add(now, scale);
78 for (
typename map_t::iterator itx = payload.begin();
79 itx != payload.end(); ++ itx) {
80 itx->second.flush(now);
90 void save(boost::archive::text_oarchive& oa) {
99 void load(boost::archive::text_iarchive& ia) {
106 extractor_t extractor;
113 #endif // end for __ZGEN_SHIFTREDUCE_MODEL_SCORE_MAP_H__
Definition: score_context.h:47
void add(int now, floatval_t scale)
Definition: param.h:39
void update(const ScoreContext &ctx, const Action &act, int now, floatval_t scale=1.)
Definition: score_map.h:61
void save(boost::archive::text_oarchive &oa)
Definition: score_map.h:90
ScoreMap(extractor_t _extractor)
Definition: score_map.h:21
double floatval_t
Definition: settings.h:24
void flush(int now)
Definition: score_map.h:77
void load(boost::archive::text_iarchive &ia)
Definition: score_map.h:99
Definition: score_map.h:13
floatval_t score(const ScoreContext &ctx, const Action &act, bool avg, floatval_t default_return_value=0.)
Definition: score_map.h:33