概要
このトピックでは、人工知能レコメンデーション(AIRec)サービスからレコメンデーション結果を取得する方法について説明します。 APIオペレーションを呼び出してレコメンデーション結果を取得する場合、データはJSON形式で返されます。
このトピックの内容は、業界オペレーション版とアルゴリズム設定版のAIRecインスタンスに適用されます。
パラメーター
パラメーター | タイプ | 説明 | 必須 | 備考 |
userId | string | レコメンデーションサービスを必要とするユーザーのID。 | このパラメーターとimeiパラメーターを同時に空にすることはできません。 | ユーザーテーブルにユーザーIDが存在しない場合、パーソナライズされたレコメンデーションを提供できません。 |
imei | string | ユーザーデバイスのID。このIDは、Androidデバイスの国際モバイル機器識別子(IMEI)値、またはiOSデバイスの広告主識別子(IDFA)値です。 | このパラメーターとuserIdパラメーターを同時に空にすることはできません。このパラメーターは、未登録ユーザーに必要です。 | 値は32ビットのメッセージダイジェストアルゴリズム 5(MD5)値である必要があります。 |
returnCount | Integer | 1つのリクエストに対して返されるレコメンデーションエントリの数。 | はい | このパラメーターを 20 に設定することをお勧めします。 |
sceneId | string | アイテムをレコメンドするシナリオのID。 | はい | デフォルト値:1。このパラメーターを、アップロードされたデータに含まれるシナリオIDに設定します。 |
items | string | レコメンデーションサービスタイプが関連レコメンデーションに設定されているシナリオのベンチマークアイテム。 | このパラメーターは、シナリオのレコメンデーションサービスタイプが関連レコメンデーションに設定されている場合にのみ必要です。 | 値はitemId:itemType,itemId:itemTypeの形式である必要があります。 |
ip | string | 最後のログオンに使用されたIPアドレス。 | いいえ | - |
rankOpen | boolean | フィルタリングおよびランキングフェーズでユーザーIDに基づいてパーソナライズランキングを実行するかどうかを指定します。 | いいえ | デフォルト値:true。 |
recType | string | レコメンデーションサービスのタイプ。 | いいえ | 値 hot は人気のあるレコメンデーションを示し、値 rr は関連レコメンデーションを示し、値 gul はユーザーが好む可能性のあるレコメンデーションを示します。 recTypeパラメーターを rr または gul に設定すると、パーソナライズレコメンデーション機能が有効になります。パーソナライズレコメンデーション機能は無効になります。 rankOpenパラメーターをfalseに、recTypeパラメーターをhotに設定した場合のみ。 |
filter | string | レコメンデーションのフィルター条件。 | いいえ | レコメンデーションフィルタリング機能の使用方法の詳細については、「レコメンデーションフィルタリング機能を使用してフィードストリームのフィルタリングをカスタマイズする」をご参照ください。 |
strategy | string | アイテムを先頭に固定し、固定位置でアイテムをレコメンドする機能を有効にするかどうかを指定します。 | いいえ | ページにアクセスするための初期リクエストで strategy パラメーターの値が fixedSlot に設定されている場合、先頭に固定され、固定位置でレコメンドされたアイテムのレコメンデーション結果が返されます。デフォルトでは、レコメンデーションにはデフォルトのアルゴリズムが使用されます。 |
clearExposure | string | 表示されたアイテムに関するレコードをクリアするかどうかを指定します。 | いいえ | clearExposureパラメーターの値をtrueに設定すると、現在のユーザーの表示されたアイテムに関するレコードがクリアされます。ユーザーは表示されたアイテムを表示することができ、AIRecは表示されたアイテムの記録を再び開始します。表示されたアイテムに関するレコードをクリアする必要がない場合は、このパラメーターを空のままにします。 |
サーバー SDK を使用してレコメンデーション結果を取得する場合に発生する可能性のある一般的なエラー
レコメンデーション結果が空になる原因:
1. 特定のリクエストパラメーターの値が無効です。 scene_id パラメーターに指定した値がアップロードされたデータに含まれていることを確認してください。
user_id パラメーターに指定した値がユーザーテーブルに含まれていることを確認してください。 user_id パラメーターに指定した値がユーザーテーブルに存在しない場合は、新しいユーザーが作成されます。
レコメンドされたアイテムの数が、指定されたシナリオでレコメンドできるアイテムの数よりも少ないことを確認してください。
注:サーバー SDK を使用してレコメンデーション結果を取得する場合、最大 50 個のレコメンドアイテムを返すことができます。レコメンデーションサービスタイプが関連レコメンデーションに設定されているシナリオでは、次の図に示すように、既存のアイテムを item_id:item_type の形式で指定する必要があります。
2. レコメンデーション条件を満たすことができるアイテムの数が少ない。その結果、露出ブロック機能が有効になった後、ユーザーにレコメンドできるアイテムがなくなり、レコメンデーション結果が空になります。
サンプルコード
package com.aliyun.airec;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.airec.model.v20181012.RecommendRequest;
import com.aliyuncs.airec.model.v20181012.RecommendResponse;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
public class Recommend {
public static void main(String args[]) {
// Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。セキュリティリスクを回避するために、RAMユーザーを使用してAPI操作を呼び出したり、日常のO&Mを実行することをお勧めします。
// AccessKey IDとAccessKeyシークレットをプロジェクトコードに保存しないことをお勧めします。そうしないと、AccessKeyペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
// この例では、ID検証を実装するために、AccessKey IDとAccessKeyシークレットが環境変数に格納されています。
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultProfile.addEndpoint("cn-hangzhou", "Airec", "airec.cn-hangzhou.aliyuncs.com");
DefaultAcsClient client = new DefaultAcsClient(profile);
RecommendRequest request = new RecommendRequest();
// 以下のパラメーターを設定する必要があります。
request.setInstanceId("airec-xxx");
request.setReturnCount(10);
request.setSceneId("シナリオID");
// 以下のパラメーターの少なくとも1つを報告する必要があります。
request.setUserId("0");
request.setImei("0");
// シナリオのレコメンデーションサービスタイプが関連レコメンデーションに設定されている場合、このパラメーターはオプションです。
//request.setItems("88:article,33:image");
// パーソナライズレコメンデーション機能を無効にする必要がある場合は、rankOpenパラメーターをfalseに、recTypeパラメーターをhotに設定します。
//request.setRankOpen(false);
//request.setRecType("hot");
request.setAcceptFormat(FormatType.JSON);
try {
RecommendResponse response = client.getAcsResponse(request);
for (RecommendResponse.ResultItem item : response.getResult()) {
System.out.println(item.getItemId());
System.out.println(item.getItemType());
System.out.println(item.getTraceId());
System.out.println(item.getTraceInfo());
System.out.println(item.getMatchInfo());
System.out.println(item.getWeight());
System.out.println(item.getPosition());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}データのプッシュとレコメンデーション結果の取得のデモ
詳細については、「airec-demo」をご参照ください。