获取实时物品推荐 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

获取实时物品推荐

您可以通过 Amazon Personalize 控制台 Amazon Command Line Interface (Amazon CLI)或,从 Amazon Personalize 推荐者那里获得实时商品推荐,或者 Amazon 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 的推荐理由

获取物品建议 (Amazon 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

获取物品建议 (Amazon SDKs)

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

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

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

如果您在市场活动或推荐器的建议中启用了元数据,则可以指定要包含在响应中的物品数据集元数据列。有关代码示例,请参阅包括带有推荐的商品元数据 (Amazon 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();