ホームページ > バックエンド開発 > PHPチュートリアル > 予測とルーメン:映画の推奨アプリの構築

予測とルーメン:映画の推奨アプリの構築

Jennifer Aniston
リリース: 2025-02-15 12:34:12
オリジナル
651 人が閲覧しました

このチュートリアルは、予測とルーメンを使用して映画の推奨アプリを構築することを示しています。 データのインポート、ランダムな映画の選択、推奨の生成、およびエンジンの展開について説明します。

PredictionIO and Lumen: Building a Movie Recommendation App

重要な概念:

    Predictionio&Lumen Integration:
  • このアプリケーションは、推奨のためにPredictionioの機械学習と、効率的なAPI処理のためのLumenの軽量フレームワークを活用しています。 セキュア構成:
  • 環境変数(
  • ファイル)は、予測、TMDB APIキー、およびアプリケーション設定を安全に保存します。 データパイプライン:.envカスタム
  • クラスは、予測のイベントおよびエンジンクライアントとの相互作用を簡素化し、バッチにTMDBデータをインポートし、ElasticSearchで効率的な検索のインデックスを作成します。
  • 推奨事項エンジン:エンジンは、輸入済みの映画データを訓練し、ユーザーインタラクション(いいね/嫌い)から学習して推奨事項を改善します。 Pio
  • ユーザーインターフェイス:
  • ユーザーフレンドリーインターフェイスは、ランダムな映画を表示し、評価を許可し、予測に生成された推奨事項を提示します。
  • 環境のセットアップ:
  • Lumen App Directoryに
  • ファイルを作成します。

プレースホルダーを実際のキーに置き換えることを忘れないでください データインポート(TMDBへのPredictionio&Elasticsearch):

.env

create
<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
create
<?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
(注:関数の実装は、元のものとほぼ同じままですが、明確にするために変数の命名とフォーマットが改善されています。TMDBからの取得、予測にイベントを送信するコアロジック、およびインデックス作成のインデックス作成のコアロジックElasticSearchは変更されていません
$app->middleware([
    Illuminate\Session\Middleware\StartSession::class,
]);
ログイン後にコピー
    ルートを
  1. app/Http/Controllers/AdminController.phpに追加します
<?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

create
  1. app/Http/routes.php
$app->get('/movies/import', 'AdminController@importMovies');
ログイン後にコピー
ルートを追加して

  1. app/Http/Controllers/HomeController.phpおよび
  2. ビュー(オリジナルで提供されているHTML)を作成します。 javaScript(
)もほぼ同じままです。
<?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予測エンジンの展開とトレーニング:
  1. (Predictionio Engine Directory)を変更して、Predictionio App IDと名前を正しく指すようにします。 engine.jsonエンジンの構築:
  2. pio build --verboseエンジンのトレーニング:
  3. pio train --verboseエンジンの展開:
  4. pio deploy --port 8192
  5. 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>
ログイン後にコピー
ログイン後にコピー
結論:

この合理化されたバージョンは、コードの読みやすさと組織を改善しながら、元のチュートリアルの機能を維持しています。 必要なパッケージ(Predictionio SDK、Guzzle、ElasticSearchクライアント、およびフロントエンド用のハンドルバー)をインストールすることを忘れないでください。 オリジナルのFAQセクションは関連性があり、貴重な追加情報を提供します。

以上が予測とルーメン:映画の推奨アプリの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート