void Pipe::Run() { Parts *parts = CreateParts(); Features *features = CreateFeatures(); vector<double> scores; vector<double> gold_outputs; vector<double> predicted_outputs; timeval start, end; gettimeofday(&start, NULL); if (options_->evaluate()) BeginEvaluation(); reader_->Open(options_->GetTestFilePath()); writer_->Open(options_->GetOutputFilePath()); int num_instances = 0; Instance *instance = reader_->GetNext(); while (instance) { Instance *formatted_instance = GetFormattedInstance(instance); MakeParts(formatted_instance, parts, &gold_outputs); MakeFeatures(formatted_instance, parts, features); ComputeScores(formatted_instance, parts, features, &scores); decoder_->Decode(formatted_instance, parts, scores, &predicted_outputs); Instance *output_instance = instance->Copy(); LabelInstance(parts, predicted_outputs, output_instance); if (options_->evaluate()) { EvaluateInstance(instance, output_instance, parts, gold_outputs, predicted_outputs); } writer_->Write(output_instance); if (formatted_instance != instance) delete formatted_instance; delete output_instance; delete instance; instance = reader_->GetNext(); ++num_instances; } delete parts; delete features; writer_->Close(); reader_->Close(); gettimeofday(&end, NULL); LOG(INFO) << "Number of instances: " << num_instances; LOG(INFO) << "Time: " << diff_ms(end,start); if (options_->evaluate()) EndEvaluation(); }
csConditionEvaluator::TicketEvaluator::~TicketEvaluator() { EndEvaluation(); owner->RecycleEvalState (evalState); }