Package joshua.discriminative.bleu_approximater

Source Code of joshua.discriminative.bleu_approximater.NbestReader

package joshua.discriminative.bleu_approximater;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;

import joshua.util.Regex;
import joshua.util.io.LineReader;

public class NbestReader {
 
  private LineReader nbestFileReader;
  private String lastStringForPreviousSentence = null;
 
  private boolean hasNext = true;
 
  private static Logger logger = Logger.getLogger(NbestReader.class.getSimpleName());
 
  public NbestReader(String nbestFile){
    try{
      this.nbestFileReader = new LineReader(nbestFile);
    }catch  (IOException e) {
      logger.severe("cannot opne file " + nbestFile);
      System.exit(0);
    }
  }
 
  public List<String> next() {
    List<String> nbest = new ArrayList<String>();
    if(lastStringForPreviousSentence!=null)
      nbest.add(lastStringForPreviousSentence);
   
    try {
      int oldSentID = -1;
      String line =null;
      while (true) {
        if(nbestFileReader.hasNext())
          line = nbestFileReader.next();
        else{//no more line to read
          this.hasNext = false;
          try{
            nbestFileReader.close();
          } catch  (IOException e) {
            logger.severe("cannot close file");
            System.exit(0);
          }
          break;
        }
       
        String[] fds = Regex.threeBarsWithSpace.split(line);
        int newSentID = Integer.parseInt(fds[0]);
     
        if (oldSentID != -1 && oldSentID != newSentID) {
          lastStringForPreviousSentence = line;
          break;
        }
        oldSentID = newSentID;
        nbest.add(line);
      }
    } finally {     
    } 
    return nbest;
  }
 
  public boolean hasNext(){
    return this.hasNext;
  }
}
TOP

Related Classes of joshua.discriminative.bleu_approximater.NbestReader

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.