// DRAGNN data proto. See go/dragnn-design for more information.

syntax = "proto2";

package syntaxnet.dragnn;

// A fixed sparse bag of features in DRAGNN. The id, weight, and description
// fields are all aligned if present (ie, any of these that are non-empty should
// have the same # items). If weight is omitted, 1.0 is used.
//
// These features as interepreted as multiple firings of a single feature
// template: e.g., for a single focus word, a bag of ngrams.
message FixedFeatures {
  repeated uint64 id = 1;
  repeated float weight = 2;

  // string-valued description of each *feature value*. (Only used for
  // debugging.)
  repeated string value_name = 3;

  // string-valued name of feature. (Only used for debugging.)
  optional string feature_name = 4;
}

// A feature in DRAGNN thats link a component to another or a component to
// itself recurrently. If batch_idx or beam_idx are omitted, 0 is used.
message LinkFeatures {
  // Index into the {step x batch x beam} activations workspace generated by
  // the previous computation.
  optional int64 batch_idx = 1;
  optional int64 beam_idx = 2;
  optional int64 step_idx = 3;

  // Values in the original feature space. This is ignored in TensorFlow.
  optional int64 feature_value = 4;

  // string-valued name of feature. (Only used for debugging.)
  optional string feature_name = 5;
}
