summaryrefslogtreecommitdiff
path: root/training/dtrain/kbestget.h
diff options
context:
space:
mode:
authorChris Dyer <redpony@gmail.com>2013-08-08 13:32:44 -0700
committerChris Dyer <redpony@gmail.com>2013-08-08 13:32:44 -0700
commit951e7daa9539ffe640f9421897c374f786af53e7 (patch)
tree321898257090cc623fa7ea10d81b8e83126a5a0b /training/dtrain/kbestget.h
parentf4a3a2547316ca5d31366e6808858fe94981415c (diff)
parentaf2b10dd036aa0088cfef108c1c9713b7e2d9f8f (diff)
Merge pull request #24 from pks/master
current dtrain version
Diffstat (limited to 'training/dtrain/kbestget.h')
-rw-r--r--training/dtrain/kbestget.h66
1 files changed, 1 insertions, 65 deletions
diff --git a/training/dtrain/kbestget.h b/training/dtrain/kbestget.h
index dd8882e1..85252db3 100644
--- a/training/dtrain/kbestget.h
+++ b/training/dtrain/kbestget.h
@@ -1,76 +1,12 @@
#ifndef _DTRAIN_KBESTGET_H_
#define _DTRAIN_KBESTGET_H_
-#include "kbest.h" // cdec
-#include "sentence_metadata.h"
-
-#include "verbose.h"
-#include "viterbi.h"
-#include "ff_register.h"
-#include "decoder.h"
-#include "weights.h"
-#include "logval.h"
-
-using namespace std;
+#include "kbest.h"
namespace dtrain
{
-typedef double score_t;
-
-struct ScoredHyp
-{
- vector<WordID> w;
- SparseVector<double> f;
- score_t model;
- score_t score;
- unsigned rank;
-};
-
-struct LocalScorer
-{
- unsigned N_;
- vector<score_t> w_;
-
- virtual score_t
- Score(vector<WordID>& hyp, vector<WordID>& ref, const unsigned rank, const unsigned src_len)=0;
-
- void Reset() {} // only for approx bleu
-
- inline void
- Init(unsigned N, vector<score_t> weights)
- {
- assert(N > 0);
- N_ = N;
- if (weights.empty()) for (unsigned i = 0; i < N_; i++) w_.push_back(1./N_);
- else w_ = weights;
- }
-
- inline score_t
- brevity_penalty(const unsigned hyp_len, const unsigned ref_len)
- {
- if (hyp_len > ref_len) return 1;
- return exp(1 - (score_t)ref_len/hyp_len);
- }
-};
-
-struct HypSampler : public DecoderObserver
-{
- LocalScorer* scorer_;
- vector<WordID>* ref_;
- unsigned f_count_, sz_;
- virtual vector<ScoredHyp>* GetSamples()=0;
- inline void SetScorer(LocalScorer* scorer) { scorer_ = scorer; }
- inline void SetRef(vector<WordID>& ref) { ref_ = &ref; }
- inline unsigned get_f_count() { return f_count_; }
- inline unsigned get_sz() { return sz_; }
-};
-////////////////////////////////////////////////////////////////////////////////
-
-
-
-
struct KBestGetter : public HypSampler
{
const unsigned k_;