コード例 #1
0
ファイル: RecommendationApp.cs プロジェクト: rezikun/MyBot
        /// <summary>
        /// Creates a model, upload catalog and usage file and trigger a build.
        /// Returns the Build ID of the trained build.
        /// </summary>
        /// <param name="recommender">Wrapper that maintains API key</param>
        /// <param name="modelId">The model Id</param>
        public static string CreateModel(string modelName)
        {
            string modelId;

            ModelInfo modelInfo = reco.CreateModel(modelName, "Bot");

            modelId = modelInfo.Id;

            return(modelId);
        }
コード例 #2
0
ファイル: SampleApp.cs プロジェクト: wi5nia/2016-Oct-L2
        /// <summary>
        /// Creates a model, upload catalog and usage file and trigger a build.
        /// Returns the Build ID of the trained build.
        /// </summary>
        /// <param name="recommender">Wrapper that maintains API key</param>
        /// <param name="modelId">The model Id</param>
        public static string CreateModel(string modelName)
        {
            string modelId;

            Console.WriteLine("Creating a new model {0}...", modelName);
            ModelInfo modelInfo = recommender.CreateModel(modelName, "Parts Unlimited Store");

            modelId = modelInfo.Id;
            Console.WriteLine("Model '{0}' created with ID: {1}", modelName, modelId);
            return(modelId);
        }
コード例 #3
0
        /// <summary>
        /// 1) Builds a recommendations model and upload catalog and usage data
        /// 2) Triggers a model build and monitor the build operation status
        /// 3) Sets the build as the active build for the model.
        /// 4) Requests item recommendations
        /// 5) Requests user recommendations
        /// </summary>
        public static void Main(string[] args)
        {
            // Initialize helper with username and API key.
            var    recommender = new RecommendationsApiWrapper(AccountKey, BaseUri);
            string modelId     = string.Empty;

            try
            {
                if (String.IsNullOrEmpty(AccountKey))
                {
                    Console.WriteLine("Please enter your API key to run this sample.");
                    Console.ReadKey();
                    return;
                }

                // Create a new model.
                Console.WriteLine("Creating a new model {0}...", ModelName);
                ModelInfo modelInfo = recommender.CreateModel(ModelName, "Sample model");
                modelId = modelInfo.Id;
                Console.WriteLine("Model '{0}' created with ID: {1}", ModelName, modelId);

                // Import data to the model.
                var resourcesDir = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Resources");
                Console.WriteLine("Importing catalog files...");
                foreach (string catalog in Directory.GetFiles(resourcesDir, "catalog*.csv"))
                {
                    var catalogFile = new FileInfo(catalog);
                    recommender.UploadCatalog(modelId, catalogFile.FullName, catalogFile.Name);
                }

                Console.WriteLine("Importing usage data...");
                foreach (string usage in Directory.GetFiles(resourcesDir, "usage*.csv"))
                {
                    var usageFile = new FileInfo(usage);
                    recommender.UploadUsage(modelId, usageFile.FullName, usageFile.Name);
                }


                // Trigger a recommendation build.
                string operationLocationHeader;
                Console.WriteLine("Triggering build for model '{0}'. \nThis will take a few minutes...", modelId);
                var buildId = recommender.CreateRecommendationsBuild(modelId, "build of " + DateTime.UtcNow.ToString("yyyyMMddHHmmss"),
                                                                     enableModelInsights: false,
                                                                     operationLocationHeader: out operationLocationHeader);

                // Monitor the build and wait for completion.
                Console.WriteLine("Monitoring build {0}", buildId);
                var buildInfo = recommender.WaitForBuildCompletion(operationLocationHeader);
                Console.WriteLine("Build {0} ended with status {1}.\n", buildId, buildInfo.Status);

                if (String.Compare(buildInfo.Status, "Succeeded", StringComparison.OrdinalIgnoreCase) != 0)
                {
                    Console.WriteLine("Build {0} did not end successfully, the sample app will stop here.", buildId);
                    Console.WriteLine("Press any key to end");
                    Console.ReadKey();
                    return;
                }

                // Waiting  in order to propagate the model updates from the build...
                Console.WriteLine("Waiting for 40 sec for propagation of the built model...");
                Thread.Sleep(TimeSpan.FromSeconds(40));

                // The below api is more meaningful when you want to give a certain build id to be an active build.
                // Currently this app has a single build which is already active.
                Console.WriteLine("Setting build {0} as active build.", buildId);
                recommender.SetActiveBuild(modelId, buildId);

                // Now we are ready to get recommendations!

                // Get item to item recommendations. (I2I)
                Console.WriteLine();
                Console.WriteLine("Getting Item to Item Recommendations for The Piano Man's Daughter");
                const string itemIds  = "6485200";
                var          itemSets = recommender.GetRecommendations(modelId, buildId, itemIds, 6);
                if (itemSets.RecommendedItemSetInfo != null)
                {
                    foreach (RecommendedItemSetInfo recoSet in itemSets.RecommendedItemSetInfo)
                    {
                        foreach (var item in recoSet.Items)
                        {
                            Console.WriteLine("Item id: {0} \n Item name: {1} \t (Rating  {2})", item.Id, item.Name, recoSet.Rating);
                        }
                    }
                }
                else
                {
                    Console.WriteLine("No recommendations found.");
                }

                // Now let's get a user recommendation (U2I)
                Console.WriteLine();
                Console.WriteLine("Getting User Recommendations for User:"******"142256";
                itemSets = recommender.GetUserRecommendations(modelId, buildId, userId, 6);
                if (itemSets.RecommendedItemSetInfo != null)
                {
                    foreach (RecommendedItemSetInfo recoSet in itemSets.RecommendedItemSetInfo)
                    {
                        foreach (var item in recoSet.Items)
                        {
                            Console.WriteLine("Item id: {0} \n Item name: {1} \t (Rating  {2})", item.Id, item.Name, recoSet.Rating);
                        }
                    }
                }
                else
                {
                    Console.WriteLine("No recommendations found.");
                }

                Console.WriteLine("Press any key to end");
                Console.ReadKey();
            }
            finally
            {
                // Uncomment the line below if you wish to delete the model.
                // Note that you can have up to 10 models at any time.
                // You may have up to 20 builds per model.
                //recommender.DeleteModel(modelId);
            }
        }