首頁 > 後端開發 > php教程 > 預測和管腔:構建電影推薦應用程序

預測和管腔:構建電影推薦應用程序

Jennifer Aniston
發布: 2025-02-15 12:34:12
原創
651 人瀏覽過

>本教程演示了使用預測和管腔構建電影推薦應用程序。 我們將介紹數據導入,隨機的電影選擇,推薦生成和引擎部署。

>

PredictionIO and Lumen: Building a Movie Recommendation App

密鑰概念:

  • >預測和管腔集成:此應用程序利用了預測的機器學習,並為有效的API處理提供了建議的輕量級框架。
  • 安全配置:環境變量(文件)安全存儲預測,TMDB API鍵和應用程序設置。 > .env>
  • 數據管道:
  • >自定義類簡化了與預測事件和引擎客戶端的互動,在批處理中導入TMDB數據,並在Elasticsearch中索引它以進行有效的檢索。 > Pio>
  • 推薦引擎:引擎在進口電影數據上進行培訓,並從用戶互動(喜歡/不喜歡)中學習以提高建議。
  • >用戶界面:>用戶友好的接口顯示隨機電影,允許評分,並提出了預測的建議。
  • 設置環境:>
  • >在Lumen App目錄中創建A
文件,

記住用您的實際鍵代替佔位符。

.env數據導入(tmdb to predictionio&Elasticsearch):

<code>APP_ENV=local
APP_DEBUG=true
APP_KEY=your-unique-key  // Generate using `php artisan key:generate`

PIO_KEY=your-pio-app-key
TMDB_KEY=your-tmdb-api-key

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=database</code>
登入後複製
登入後複製
>

創建

  1. app/Classes/Pio.php中的啟用會話:
<?php namespace App\Classes;

use predictionio\EventClient;
use predictionio\EngineClient;

class Pio {
    public function eventClient() {
        $key = env('PIO_KEY');
        $server = 'http://127.0.0.1:7070';
        return new EventClient($key, $server);
    }

    public function predictionClient() {
        $server = 'http://127.0.0.1:8192';
        return new EngineClient($server);
    }
}
登入後複製
  1. 創建bootstrap/app.php
$app->middleware([
    Illuminate\Session\Middleware\StartSession::class,
]);
登入後複製
  1. (注意:app/Http/Controllers/AdminController.php函數的實現與原始的實現基本相同,但具有改進的可變命名和格式以提高清晰度。 Elasticsearch保持不變。)
<?php namespace App\Http\Controllers;

use Laravel\Lumen\Routing\Controller as BaseController;
use App\Classes\Pio;
use GuzzleHttp\Client;
use Elasticsearch\Client as ElasticsearchClient;

class AdminController extends BaseController {
    public function importMovies(Pio $pio) {
        // ... (Import logic as described in the original, but using more concise variable names and improved formatting) ...
    }
}
登入後複製

添加路由importMovies

  1. >顯示隨機電影和記錄用戶操作:app/Http/routes.php
$app->get('/movies/import', 'AdminController@importMovies');
登入後複製
創建

  1. app/Http/Controllers/HomeController.php中的添加路由:
<?php namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Laravel\Lumen\Routing\Controller as BaseController;
use App\Classes\Pio;
use Elasticsearch\Client as ElasticsearchClient;

class HomeController extends BaseController {
    public function index(Pio $pio) {
        // ... (Session setup and view rendering as in the original) ...
    }

    public function randomMovie(Request $request, Pio $pio) {
        // ... (Random movie selection and user action recording logic as in the original) ...
    }

    public function recommendedMovies(Pio $pio) {
        // ... (Recommendation retrieval and view rendering logic as in the original) ...
    }
}
登入後複製
  1. 創建app/Http/routes.php>和
  2. 視圖(原件中提供的html)。 JavaScript(
)也基本保持不變。
$app->get('/', 'HomeController@index');
$app->post('/movie/random', 'HomeController@randomMovie');
$app->get('/movies/recommended', 'HomeController@recommendedMovies');
登入後複製
>
  1. index.blade.php>部署和訓練預測引擎:recommended_movies.blade.phpmain.js>
    1. 修改engine.json(在您的預測引擎目錄中)正確地指向您的預測應用程序ID和名稱。
    2. 構建引擎:pio build --verbose
    3. 訓練引擎:pio train --verbose
    4. >部署引擎:pio deploy --port 8192

    添加cron作業(根據需要調整路徑):

    <code>APP_ENV=local
    APP_DEBUG=true
    APP_KEY=your-unique-key  // Generate using `php artisan key:generate`
    
    PIO_KEY=your-pio-app-key
    TMDB_KEY=your-tmdb-api-key
    
    CACHE_DRIVER=file
    SESSION_DRIVER=file
    QUEUE_DRIVER=database</code>
    登入後複製
    登入後複製

    結論:

    這個簡化的版本在改善代碼可讀性和組織的同時,保持原始教程的功能。 請記住要安裝必要的軟件包(預測SDK,Guzzle,Elasticsearch客戶端和前端的車把)。 原始的FAQ部分仍然相關,並提供了有價值的其他信息。

    以上是預測和管腔:構建電影推薦應用程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板