System.out.println("############Process sentence " + sent_id);
start_time = System.currentTimeMillis();
sent_id++;
//if(sent_id>10)break;
HyperGraph hg = dhg_read.readHyperGraph();
if(hg==null)continue;
String orc_sent=null;
double orc_bleu=0;
//System.out.println("read disk hyp: " + (System.currentTimeMillis()-start_time));
time_on_reading += System.currentTimeMillis()-start_time;
start_time = System.currentTimeMillis();
if(orc_extract_nbest){
Object[] res = orc_extractor.oracle_extract_nbest(kbest_extractor, hg, topN, do_ngram_clip_nbest, ref_sent);
orc_sent = (String) res[0];
orc_bleu = (Double) res[1];
}else{
HyperGraph hg_oracle = orc_extractor.oracle_extract_hg(hg, hg.sentLen, lm_order, ref_sent);
orc_sent = ViterbiExtractor.extractViterbiString(p_symbolTable, hg_oracle.goalNode);
orc_bleu = orc_extractor.get_best_goal_cost(hg, orc_extractor.g_tbl_split_virtual_items);
time_on_orc_extract += System.currentTimeMillis()-start_time;
System.out.println("num_virtual_items: " + orc_extractor.g_num_virtual_items + " num_virtual_dts: " + orc_extractor.g_num_virtual_deductions);