Пример #1
0
Instance *SequenceReader::GetNext() {
  // Fill all fields for the entire sentence.
  vector<vector<string> > sentence_fields;
  string line;
  if (is_.is_open()) {
    while (!is_.eof()) {
      getline(is_, line);
      if (line.length() <= 0) break;
      vector<string> fields;
      StringSplit(line, "\t", &fields);
      sentence_fields.push_back(fields);
    }
  }

  // Sentence length.
  int length = sentence_fields.size();

  // Convert to array of words and tags.
  vector<string> forms(length);
  vector<string> tags(length);

  for(int i = 0; i < length; ++i) {
    const vector<string> &info = sentence_fields[i];
    forms[i] = info[0];
    tags[i] = info[1];
  }

  SequenceInstance *instance = NULL;
  if (length > 0) {
    instance = new SequenceInstance;
    instance->Initialize(forms, tags);
  }

  return static_cast<Instance*>(instance);
}