AI時代的網站與手機App建置與開發Part15 - 建立具推薦功能的ASP.NET Core MVC網站

 ·       摘要

在這一篇文章中, 我們將要使用ML.NET程式庫建立的機器學習模型, 建立預測股票價格的網站..

·       Controller加入新的Action函式

請編輯專案的HomeController控制器,HomeController控制器加入以下兩個PredictMovieRating函式, 第一個PredictMovieRating函式用來建立預測電影評論的資料輸入頁面, 第二個PredictMovieRating函式負責呼叫MLModel類別的Predict函式, 依據使用者輸入的電影相關資料預測電影的評論分數, 再將呼叫的結果轉換成JSON格式並傳回給呼叫者, 如下:

public IActionResult PredictMovieRating()

{

return View();

}

[HttpPost]

public JsonResult PredictMovieRating(MLModel.ModelInput modelInput)

{

    MLModel.ModelOutput predictionResult = MLModel.Predict(modelInput);

    return Json(predictionResult);

}

做好之後請使用滑鼠右鍵點選專案中名稱為HomeController的控制器的第一個PredictMovieRating函式, 執行[新增檢視]功能, PredictMovieRating函式加入名稱為PredictMovieRating的檢視, 並把PredictMovieRating檢視編輯成以下的樣子, 支援使用者輸入電影評論的相關資訊, 以便預測電影評論分數:

<h3>電影評論預估資料</h3>

<br />

<div class="container">

    <div class="form-group">

        <label class="form-label">User Id:</label>

        <input id="userId" value="1" class="form-control" />

    </div>

    <div class="form-group">

        <label class="form-label">Movie Id:</label>

        <input id="movieId" value="3" class="form-control" />

    </div>

    <div class="form-group">

        <button id="predict" class="btn btn-success">預測</button>

    </div>

</div>

@section Scripts

{

    <script>

        var baseAddress = "https://localhost:7073";      //MVC網站的網址

        $("#predict").on("click", function () {//處理button被按下引發的click事件

            var input = {                   //準備電影評論預估資料

                userId:$("#userId").val(),

                movieId:$("#movieId").val(),

            };

            $.ajax({                    //發送ajax呼叫

                type:"post",

                url: `${baseAddress}/Home/PredictMovieRating`,

                data: input,

            }).done(function (data) {           //處理呼叫成功收到的結果

                //alert(JSON.stringify(data));

                alert(`評論分數:${(data["score"]).toFixed(2)}`)

            }).fail(function (err) {            //處理呼叫發生的錯誤

                alert(err.statusText);

            });

        });

    </script>

}

·       }解析電影評論預估的結果

呼叫MLModel類別的Predict函式會得到MLModel.ModelOutput類別型態的結果的結果, 呼叫結果中名稱為score的屬性的內容值即為電影評論的預測值.:

·       於網站的導覽列加入填寫貸款申請表的超連結

請開啟專案根目錄下, [Views | Shared]資料夾中的_Layout.cshtml,

<ul class="navbar-nav flex-grow-1">

元素中加入以下的超連結:

<li class="nav-item">

   <a class="nav-link text-dark" asp-area="" asp-controller="Home"                        asp-action="PredictMovieRating">電影評論預估</a>

</li>

做好之後執行ASP.NET Core MVC網站專案, 點選導覽列中剛加入的[電影評論預估]連結, 填寫妥使用者編號和欲預估的電影編號等資料, 按下[預測], 就會看類似圖1的結果:

1: 叫用ML.NET程式庫建立的機器學習模型預測電影評論分數的畫面

·       商品推薦

在本文的範例中, 電影評論的預估分數即商品推薦的分數, 我們可以設立標準值, 假如電影評論的預估分數超過4.5, 則該電影屬於強烈推薦等級, 假如電影評論的預估分數超過4.0, 但是低於4.5, 則該電影屬於推薦等級, 假如電影評論的預估分數超過3.0, 但是低於4.0, 則該電影屬於中度推薦等級, 如果電影評論的預估分數超過3.0, 則該電影屬於不推薦等級. 有興趣的讀者也可以搜集旅館的住論評論資料, 餐廳的用餐評論資料, 或是參考[Public Datasets For Recommender Systems]提供的有用資料集, 再利用ML.NET程式庫建立旅館住宿推薦系統或餐廳的用餐推薦系統, 建立好用的推薦系統, 提升生活情趣與品質.

留言

這個網誌中的熱門文章

AI時代的網站與手機App建置與開發Part27 - ML.NET與物件偵測

AI時代的網站與手機App建置與開發Part28 - 使用YOLO模型進行物件偵測

AI時代的網站與手機App建置與開發Part24 - ML.NET與圖片異常偵測