code: public POSSample read() throws IOException {
  
      List<String> toks = new ArrayList<String>();
      List<String> tags = new ArrayList<String>();
  
      for (String line = samples.read(); line != null && !line.equals(""); line = samples.read()) {
        String[] parts = line.split("\t");
        if (parts.length != 3) {
          System.err.println("Skipping corrupt line: " + line);
        }
        else {
          toks.add(parts[0]);
          tags.add(parts[1]);
        }
      }
      if (toks.size() > 0) {
        POSSample posSample = new POSSample(toks.toArray(new String[toks.size()]), tags.toArray(new String[tags.size()]));
        //System.err.println(posSample.toString());
        return posSample;
      }
      else {
        return null;
      }
    }
docs: Parses the next sentence and return the next
  {@link POSSample} object.
  
  If an error occurs an empty {@link POSSample} object is returned
  and an warning message is logged. Usually it does not matter if one
  of many sentences is ignored.
  
  TODO: An exception in error case should be thrown.