获取个性化排名 (AWS SDK) - Amazon Personalize

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

获取个性化排名 (AWS SDK)

以下代码示例显示了如何使用 AWS SDK 获得个性化排名的不同变体。

获取个性化排名

以下代码展示了如何为用户获取个性化排名。指定用户的 ID 和要为用户排名的物品 ID 列表。物品 ID 必须位于您用于训练解决方案版本的数据中。这将返回已排名的建议列表。Amazon Personalize 会将列表中的第一个物品视为用户最感兴趣的物品。

SDK for Python (Boto3)
import boto3 personalizeRt = boto3.client('personalize-runtime') response = personalizeRt.get_personalized_ranking( campaignArn = "Campaign arn", userId = "UserID", inputList = ['ItemID1','ItemID2'] ) print("Personalized Ranking") for item in response['personalizedRanking']: print (item['itemId'])
SDK for Java 2.x
public static List<PredictedItem> getRankedRecs(PersonalizeRuntimeClient personalizeRuntimeClient, String campaignArn, String userId, ArrayList<String> items) { try { GetPersonalizedRankingRequest rankingRecommendationsRequest = GetPersonalizedRankingRequest.builder() .campaignArn(campaignArn) .userId(userId) .inputList(items) .build(); GetPersonalizedRankingResponse recommendationsResponse = personalizeRuntimeClient.getPersonalizedRanking(rankingRecommendationsRequest); List<PredictedItem> rankedItems = recommendationsResponse.personalizedRanking(); int rank = 1; for (PredictedItem item : rankedItems) { System.out.println("Item ranked at position " + rank + " details"); System.out.println("Item Id is : " + item.itemId()); System.out.println("Item score is : " + item.score()); System.out.println("---------------------------------------------"); rank++; } return rankedItems; } catch (PersonalizeRuntimeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return null; }
SDK for JavaScript v3
// Get service clients module and commands using ES6 syntax. import { GetPersonalizedRankingCommand } from "@aws-sdk/client-personalize-runtime"; import { personalizeRuntimeClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeRuntimeClient = new PersonalizeRuntimeClient({ region: "REGION"}); // Set the ranking request parameters. export const getPersonalizedRankingParam = { campaignArn: "CAMPAIGN_ARN", /* required */ userId: 'USER_ID', /* required */ inputList: ["ITEM_ID_1", "ITEM_ID_2", "ITEM_ID_3", "ITEM_ID_4"] } export const run = async () => { try { const response = await personalizeRuntimeClient.send(new GetPersonalizedRankingCommand(getPersonalizedRankingParam)); console.log("Success!", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

在个性化排名中包含物品元数据

如果您在市场活动的建议中启用了元数据,则可以指定要包含在响应中的物品数据集元数据列。有关启用元数据的信息,请参阅推荐中的商品元数据

以下代码示例显示了如何在请求个性化排名时指定元数据列。

import boto3 personalizeRt = boto3.client('personalize-runtime') response = personalizeRt.get_personalized_ranking( campaignArn = "Campaign arn", userId = "UserID", inputList = ['ItemID1','ItemID2'], metadataColumns = { "ITEMS": ['columnNameA','columnNameB'] } ) print("Personalized Ranking") for item in response['personalizedRanking']: print (item['itemId']) print (item['metadata'])

使用上下文元数据获得个性化排名

使用以下代码,根据上下文元数据获取个性化排名。对于 context,对于每个键值对,提供元数据字段作为键,提供上下文数据作为值。在以下示例代码中,键为 DEVICE,值为 mobile phone。替换这些值,将 Campaign ARNUser ID 替换为您自己的值。此外,将 inputList 更改为用于训练解决方案的数据中的物品 ID 列表。Amazon Personalize 会将列表中的第一个物品视为用户最感兴趣的物品。

import boto3 personalizeRt = boto3.client('personalize-runtime') response = personalizeRt.get_personalized_ranking( campaignArn = "Campaign ARN", userId = "User ID", inputList = ['ItemID1', 'ItemID2'], context = { 'DEVICE': 'mobile phone' } ) print("Personalized Ranking") for item in response['personalizedRanking']: print(item['itemId'])