// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This file is copied from chromium repo:
// //components/assist_ranker/proto/ranker_example.proto
// Contains features required for Ranker model inference and training.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package assist_ranker;

message ExamplePreprocessorConfig {
  // A list of features names for which you want to do special handling if
  // the feature is missing in the RankerExample.
  repeated string missing_features = 1;

  // Boundaries to bucketize a feature.
  message Boundaries { repeated float boundaries = 1; }

  // A map of feature_name to boundaries for bucketizing this feature.
  map<string, Boundaries> bucketizers = 2;

  // A map from feature_fullnames to indices for vectorizing a RankerExample.
  // A feature fullname is defined as:
  //   (1) feature_name if it's bool_value, int64_value or float_value.
  //   (2) a combination of feature_name and feature_value if it's string_value
  //       or i-th element of a string_list.
  map<string, int32> feature_indices = 3;

  // A map from feature name to a float value to normalize the original value.
  // The new feature value is set as float_value of
  // GetFeatureValueAsFloat(feature) / normalizers[feature_name]
  // The specified feature must be convertible to float (e.g. int32 or float).
  map<string, float> normalizers = 4;

  // Features inside this list will be converted to string_value. bool_value,
  // int32_value will be converted by base::NumberToString; string_value will be
  // kept as original; fails for other feature_types.
  repeated string convert_to_string_features = 5;
}
