1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/segmentation_platform/internal/migration/result_migration_utils.h"
#include <string>
#include "components/segmentation_platform/internal/migration/adaptive_toolbar_migration.h"
#include "components/segmentation_platform/internal/migration/binary_classifier_migration.h"
#include "components/segmentation_platform/public/proto/output_config.pb.h"
namespace segmentation_platform::pref_migration_utils {
proto::ClientResult CreateClientResultFromOldResult(
Config* config,
const SelectedSegment& old_result) {
if (GetClassifierTypeForMigration(config->segmentation_key) ==
proto::Predictor::kBinaryClassifier) {
return pref_migration_utils::CreateClientResultForBinaryClassifier(
config, old_result);
} else if (config->segmentation_key == kAdaptiveToolbarSegmentationKey) {
return pref_migration_utils::CreateClientResultForAdaptiveToolbar(
config, old_result);
} else {
NOTREACHED();
}
}
proto::Predictor::PredictorTypeCase GetClassifierTypeForMigration(
const std::string& segmentation_key) {
if (segmentation_key == kAdaptiveToolbarSegmentationKey ||
segmentation_key == kContextualPageActionsKey) {
return proto::Predictor::kMultiClassClassifier;
} else if (segmentation_key == kChromeLowUserEngagementSegmentationKey ||
segmentation_key == kCrossDeviceUserKey ||
segmentation_key == kDeviceSwitcherKey ||
segmentation_key == kFrequentFeatureUserKey ||
segmentation_key == kIntentionalUserKey ||
segmentation_key == kResumeHeavyUserKey ||
segmentation_key == kShoppingUserSegmentationKey) {
return proto::Predictor::kBinaryClassifier;
} else if (segmentation_key == kFeedUserSegmentationKey ||
segmentation_key == kPowerUserKey ||
segmentation_key == kSearchUserKey ||
segmentation_key == kDeviceTierKey ||
segmentation_key == kTabletProductivityUserKey) {
return proto::Predictor::kBinnedClassifier;
}
// This case is reached for non-legacy models, and it is ok to return
// regressor because migration is not required for these cases.
return proto::Predictor::kRegressor;
}
} // namespace segmentation_platform::pref_migration_utils
|