void Josiah::NgramCollector::collect(Sample& sample) { const Hypothesis* h = sample.GetSampleHypothesis(); vector<const Factor*> trans; h->GetTranslation(&trans, 0); for (int ngramstart = -(m_order-1); ngramstart < (int)trans.size(); ++ngramstart) { vector<const Factor*> ngram(m_order); for (int i = ngramstart; i < ngramstart+(int)m_order; ++i) { if (i < 0) { ngram[i-ngramstart] = m_start; } else if (i >= (int)trans.size()) { ngram[i-ngramstart] = m_end; } else { ngram[i-ngramstart] = trans[i]; } } m_counts.insert(ngram); m_ngrams.insert(ngram); } }
void PrintSampleCollector::collect(Sample& sample) { cout << "Sampled hypothesis: \""; sample.GetSampleHypothesis()->ToStream(cout); cout << "\"" << " " << "Feature values: " << sample.GetFeatureValues() << endl; }