

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 개인 맞춤형 순위 받기(AWS SDK)
<a name="get-personalized-rankings-sdk"></a>

다음 코드 샘플은 AWS SDK를 사용하여 개인 맞춤형 순위를 받을 방법을 다양하게 보여줍니다.

**Topics**
+ [개인 맞춤형 순위 받기](#personalized-ranking-sdk-sample)
+ [개인 맞춤형 순위에 항목 메타데이터 포함](#getting-personalized-ranking-with-metadata-sdk)
+ [상황별 메타데이터를 사용하여 개인 맞춤형 순위 받기](#personalized-ranking-contextual-metadata-example)

## 개인 맞춤형 순위 받기
<a name="personalized-ranking-sdk-sample"></a>

다음 코드는 사용자의 개인 맞춤형 순위를 받는 방법을 보여줍니다. 사용자 ID와 사용자에 대해 순위를 매길 항목 ID의 목록을 지정합니다. 항목 ID는 솔루션 버전을 학습시키는 데 사용한 데이터에 포함되어야 합니다. 순위가 지정된 추천의 목록이 반환됩니다. 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();
```

------

## 개인 맞춤형 순위에 항목 메타데이터 포함
<a name="getting-personalized-ranking-with-metadata-sdk"></a>

캠페인에 대한 추천에서 메타데이터를 활성화한 경우, 응답에 포함할 항목 데이터 세트 메타데이터 열을 지정할 수 있습니다. 메타데이터 활성화에 대한 자세한 내용은 [추천에서 항목 메타데이터](campaigns.md#create-campaign-return-metadata) 섹션을 참조하세요.

다음 코드 샘플은 개인 맞춤형 순위 요청의 일부로 메타데이터 열을 지정하는 방법을 보여줍니다.

```
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'])
```

## 상황별 메타데이터를 사용하여 개인 맞춤형 순위 받기
<a name="personalized-ranking-contextual-metadata-example"></a>

컨텍스트 메타데이터를 기반으로 개인 맞춤형 순위를 받으려면 다음 코드를 사용합니다. `context`의 경우, 각 키-값 쌍에 대해 메타데이터 필드를 키로 제공하고 컨텍스트 데이터를 값으로 제공합니다. 다음 샘플 코드에서는 키가 `DEVICE`이고 값은 `mobile phone`입니다. 이들 값과 `Campaign ARN`및 `User ID`를 사용자의 값으로 바꿉니다. `inputList`을 솔루션을 학습시키는 데 사용한 데이터에 들어 있는 항목 ID의 목록으로 변경합니다. 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'])
```