示例#1
0
文件: Ngram.cpp 项目: bhaddow/gibbler
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);
  }
}
示例#2
0
 void PrintSampleCollector::collect(Sample& sample)  {
   cout << "Sampled hypothesis: \"";
   sample.GetSampleHypothesis()->ToStream(cout);
   cout << "\"" << "  " << "Feature values: " << sample.GetFeatureValues() << endl;
 }