获取实时物品推荐 - Amazon Personalize

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

获取实时物品推荐

您可以通过 Amazon Personalize 控制台 AWS Command Line Interface (AWS CLI)或,从 Amazon Personalize 推荐者那里获得实时商品推荐,或者 AWS SDKs通过定制广告活动获得。

获取物品建议(控制台)

要通过 Amazon Personalize 控制台获取建议,您需要在推荐器(域数据集组)或自定义市场活动的详情页面上提供请求信息。

获得建议
  1. https://console.aws.amazon.com/personalize/家中打开 Amazon Personalize 控制台并登录您的账户。

  2. 选择包含您要使用的市场活动或推荐器的数据集组。

  3. 在导航窗格中,选择市场活动推荐器

  4. 选择目标市场活动或推荐器。

  5. 对于活动,在测试市场活动结果下,根据您使用的食谱输入建议请求详细信息。对于推荐器,选择测试推荐器,然后根据使用案例输入建议请求详细信息。

    如果您在用户登录(匿名用户)之前为其记录了事件,则可以通过提供来自这些事件的 sessionId(就像是其 userId),获取针对此用户的建议。有关为匿名用户记录事件的更多信息,请参阅为匿名用户记录事件

  6. (可选)选择筛选器。有关更多信息,请参阅 筛选建议和用户细分

  7. 如果您使用上下文元数据,请为每个上下文提供数据。对于每个上下文,为 输入元数据字段。对于,输入上下文数据。有关更多信息,请参阅 利用上下文元数据提高建议的相关性

  8. 如果您在市场活动或推荐器的建议中启用了元数据,请为物品数据集列选择要包含在建议结果中的元数据列。有关为市场活动启用元数据的信息,请参阅推荐中的商品元数据。有关为推荐器启用元数据的信息,请参阅在 Amazon Personalize 中为域名推荐者启用推荐中的元数据

  9. 如果您想推广一部分物品,可以选择填写推广字段。有关更多信息,请参阅在实时推荐中推广商品

  10. 选择获得建议。此时,将显示一个包含针对用户推荐的前 25 个物品的表格。如果您使用 User-Personalization-v 2,则每个推荐项目都包含一份将该项目包含在推荐中的原因列表。有关更多信息,请参阅 User-Personalization-v2 的推荐理由

获取物品建议 (AWS CLI)

使用以下代码从市场活动中获得建议。要从推荐器中获得建议,请将 campaign-arn 参数替换为 recommender-arn

指定您想要获得推荐的用户的 ID,以及您的活动或推荐者的亚马逊资源名称 (ARN)。这时,将显示为用户推荐的前 10 个物品的列表。如果您使用 User-Personalization-v 2,则每个推荐项目都包含一份将该项目包含在推荐中的原因列表。有关更多信息,请参阅 User-Personalization-v2 的推荐理由

要更改推荐物品的数量,请更改 numResults 的值。默认值为 25 个物品。最大值为 500 个物品。如果您使用 RELATED _ ITEMS 配方来训练支持该活动的解决方案版本,请将user-id参数替换为item-id并指定项目 ID。

如果您在用户登录(匿名用户)之前为其记录了事件,则可以通过提供来自这些事件的 sessionId(就像是其 userId),获取针对此用户的建议。有关为匿名用户记录事件的更多信息,请参阅为匿名用户记录事件

aws personalize-runtime get-recommendations \ --campaign-arn campaign arn \ --user-id User ID \ --num-results 10

获取物品建议 (AWS SDKs)

以下代码展示了如何通过广告活动为用户获取 Amazon Personalize 推荐 AWS SDKs。要从推荐器中获得建议,请将 campaignArn 参数替换为 recommenderArn

指定您想要获得推荐的用户的 ID,以及您的活动或推荐者的亚马逊资源名称 (ARN)。这时,将显示为用户推荐的前 10 个物品的列表。如果您使用 User-Personalization-v 2,则每个推荐项目都包含一份将该项目包含在推荐中的原因列表。有关更多信息,请参阅 User-Personalization-v2 的推荐理由

要更改推荐物品的数量,请更改 numResults 的值。默认值为 25 个物品。最大值为 500 个物品。如果您使用 RELATED _ ITEMS 配方来训练支持该活动的解决方案版本,请将userId参数替换为itemId并指定项目 ID。

如果您在市场活动或推荐器的建议中启用了元数据,则可以指定要包含在响应中的物品数据集元数据列。有关代码示例,请参阅包括带有推荐的商品元数据 (AWS SDKs)。有关启用元数据的信息,请参阅推荐中的商品元数据

如果您在用户登录(匿名用户)之前为其记录了事件,则可以通过提供来自这些事件的 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();