void LayerDataHandler::convert()

in src/doc_data.cpp [131:186]


void LayerDataHandler::convert(
  const ParseResults& example,
  ParseResults& rslt) const {

  rslt.weight = example.weight;
  rslt.LHSTokens.clear();
  rslt.RHSTokens.clear();

  if (args_->trainMode == 0) {
    assert(example.LHSTokens.size() > 0);
    assert(example.RHSFeatures.size() > 0);
    insert(rslt.LHSTokens, example.LHSTokens, args_->dropoutLHS);
    auto idx = rand() % example.RHSFeatures.size();
    insert(rslt.RHSTokens, example.RHSFeatures[idx], args_->dropoutRHS);
  } else {
    assert(example.RHSFeatures.size() > 1);
    if (args_->trainMode == 1) {
      // pick one random rhs as label, the rest becomes lhs features
      auto idx = rand() % example.RHSFeatures.size();
      for (unsigned int i = 0; i < example.RHSFeatures.size(); i++) {
        if (i == idx) {
          insert(rslt.RHSTokens, example.RHSFeatures[i], args_->dropoutRHS);
        } else {
          insert(rslt.LHSTokens, example.RHSFeatures[i], args_->dropoutLHS);
        }
      }
    } else
    if (args_->trainMode == 2) {
      // pick one random rhs as lhs, the rest becomes rhs features
      auto idx = rand() % example.RHSFeatures.size();
      for (unsigned int i = 0; i < example.RHSFeatures.size(); i++) {
        if (i == idx) {
          insert(rslt.LHSTokens, example.RHSFeatures[i], args_->dropoutLHS);
        } else {
          insert(rslt.RHSTokens, example.RHSFeatures[i], args_->dropoutRHS);
        }
      }
    } else
    if (args_->trainMode == 3) {
      // pick one random rhs as input
      auto idx = rand() % example.RHSFeatures.size();
      insert(rslt.LHSTokens, example.RHSFeatures[idx], args_->dropoutLHS);
      // pick another random rhs as label
      unsigned int idx2;
      do {
        idx2 = rand() % example.RHSFeatures.size();
      } while (idx == idx2);
      insert(rslt.RHSTokens, example.RHSFeatures[idx2], args_->dropoutRHS);
    } else
    if (args_->trainMode == 4) {
      // the first one as lhs and the second one as rhs
      insert(rslt.LHSTokens, example.RHSFeatures[0], args_->dropoutLHS);
      insert(rslt.RHSTokens, example.RHSFeatures[1], args_->dropoutRHS);
    }
  }
}