Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
获取商品推荐 (Amazon SDK)
以下代码示例显示了如何使用 Amazon 软件开发工具包获取商品推荐的不同变体。
获取物品建议
以下代码展示了如何从市场活动中为用户获取 Amazon Personalize 建议。要从推荐器中获得建议,请将 campaignArn
参数替换为 recommenderArn
。
指定要获取建议的用户的 ID 及市场活动或推荐器的 Amazon 资源名称 (ARN)。这时,将显示为用户推荐的前 10 个物品的列表。如果您使用 Userpersonalization-v2,则每件推荐的商品都包含一份将该商品包含在推荐中的原因列表。有关更多信息,请参阅 推荐理由(用户个性化-v2)。
要更改推荐物品的数量,请更改 numResults
的值。默认值为 25 个物品。最大值为 500 个物品。如果您使用 RELATED_ITEMS 食谱来训练支持市场活动的解决方案版本,请将 userId
参数替换为 itemId
并指定物品 ID。
如果您在市场活动或推荐器的建议中启用了元数据,则可以指定要包含在响应中的物品数据集元数据列。有关代码示例,请参阅包括带有建议的物品元数据。有关启用元数据的信息,请参阅推荐中的商品元数据。
如果您在用户登录(匿名用户)之前为其记录了事件,则可以通过提供来自这些事件的 sessionId
(就像是其 userId
),获取针对此用户的建议。有关为匿名用户记录事件的更多信息,请参阅为匿名用户记录事件。
- SDK for Python (Boto3)
-
import boto3
personalizeRt = boto3.client('personalize-runtime')
response = personalizeRt.get_recommendations(
campaignArn = 'Campaign ARN
',
userId = 'User ID
',
numResults = 10
)
print("Recommended items")
for item in response['itemList']:
print (item['itemId'])
- SDK for Java 2.x
-
public static void getRecs(PersonalizeRuntimeClient personalizeRuntimeClient, String campaignArn, String userId) {
try {
GetRecommendationsRequest recommendationsRequest = GetRecommendationsRequest.builder()
.campaignArn(campaignArn)
.numResults(20)
.userId(userId)
.build();
GetRecommendationsResponse recommendationsResponse = personalizeRuntimeClient
.getRecommendations(recommendationsRequest);
List<PredictedItem> items = recommendationsResponse.itemList();
for (PredictedItem item : items) {
System.out.println("Item Id is : " + item.itemId());
System.out.println("Item score is : " + item.score());
}
} catch (AwsServiceException e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
}
- SDK for JavaScript v3
// Get service clients module and commands using ES6 syntax.
import { GetRecommendationsCommand } 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 recommendation request parameters.
export const getRecommendationsParam = {
campaignArn: 'CAMPAIGN_ARN', /* required */
userId: 'USER_ID', /* required */
numResults: 15 /* optional */
}
export const run = async () => {
try {
const response = await personalizeRuntimeClient.send(new GetRecommendationsCommand(getRecommendationsParam));
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_recommendations(
campaignArn = 'Campaign ARN
',
userId = 'User ID
',
numResults = 10
metadataColumns = {
"ITEMS": ['columnNameA
','columnNameB
']
}
)
print("Recommended items")
for item in response['itemList']:
print(item['itemId'])
print(item['metadata'])