summaryrefslogtreecommitdiff
path: root/dtrain/pairsampling.h
diff options
context:
space:
mode:
authorPatrick Simianer <p@simianer.de>2011-09-25 21:43:57 +0200
committerPatrick Simianer <p@simianer.de>2011-09-25 21:43:57 +0200
commit9fe6d978313f742477863ff42b9158cf2f55414f (patch)
tree468a1009193b6122eb3fb3941a026b53e3c201a0 /dtrain/pairsampling.h
parent43e7ecdca09f4125346f64d45e44f440ac964421 (diff)
kbest, ksampler refactoring
Diffstat (limited to 'dtrain/pairsampling.h')
-rw-r--r--dtrain/pairsampling.h48
1 files changed, 17 insertions, 31 deletions
diff --git a/dtrain/pairsampling.h b/dtrain/pairsampling.h
index a8521485..2e4ab155 100644
--- a/dtrain/pairsampling.h
+++ b/dtrain/pairsampling.h
@@ -8,47 +8,33 @@ namespace dtrain
{
-struct Pair
-{
- SparseVector<double> first, second;
- size_t first_rank, second_rank;
- double first_score, second_score;
-};
-
inline void
-sample_all_pairs(Samples* kb, vector<Pair> &training)
+sample_all_pairs(vector<ScoredHyp>* s, vector<pair<ScoredHyp,ScoredHyp> > &training)
{
- for (size_t i = 0; i < kb->GetSize()-1; i++) {
- for (size_t j = i+1; j < kb->GetSize(); j++) {
- Pair p;
- p.first = kb->feats[i];
- p.second = kb->feats[j];
- p.first_rank = i;
- p.second_rank = j;
- p.first_score = kb->scores[i];
- p.second_score = kb->scores[j];
+ for (size_t i = 0; i < s->size()-1; i++) {
+ for (size_t j = i+1; j < s->size(); j++) {
+ pair<ScoredHyp,ScoredHyp> p;
+ p.first = (*s)[i];
+ p.second = (*s)[j];
training.push_back(p);
- } // j
- } // i
+ }
+ }
}
inline void
-sample_rand_pairs(Samples* kb, vector<Pair> &training, MT19937* prng)
+sample_rand_pairs(vector<ScoredHyp>* s, vector<pair<ScoredHyp,ScoredHyp> > &training,
+ MT19937* prng)
{
- for (size_t i = 0; i < kb->GetSize()-1; i++) {
- for (size_t j = i+1; j < kb->GetSize(); j++) {
+ for (size_t i = 0; i < s->size()-1; i++) {
+ for (size_t j = i+1; j < s->size(); j++) {
if (prng->next() < .5) {
- Pair p;
- p.first = kb->feats[i];
- p.second = kb->feats[j];
- p.first_rank = i;
- p.second_rank = j;
- p.first_score = kb->scores[i];
- p.second_score = kb->scores[j];
+ pair<ScoredHyp,ScoredHyp> p;
+ p.first = (*s)[i];
+ p.second = (*s)[j];
training.push_back(p);
}
- } // j
- } // i
+ }
+ }
}