Heim > Backend-Entwicklung > PHP-Tutorial > Predictionio und Lumen: Aufbau einer Filmempfehlung App erstellen

Predictionio und Lumen: Aufbau einer Filmempfehlung App erstellen

Jennifer Aniston
Freigeben: 2025-02-15 12:34:12
Original
651 Leute haben es durchsucht

Dieses Tutorial zeigt, dass das Erstellen einer Filmempfehlungs -App mit Predictionio und Lumen erstellt wird. Wir werden Datenimport, zufällige Filmauswahl, Empfehlungsgenerierung und Engine -Bereitstellung behandeln.

PredictionIO and Lumen: Building a Movie Recommendation App

Schlüsselkonzepte:

  • Predictionio & Lumenintegration: Diese Anwendung nutzt das maschinelle Lernen von Predictionio für Empfehlungen und Lumen's Lightweight Framework für eine effiziente API -Behandlung.
  • sichere Konfiguration: Umgebungsvariablen (.env Datei) Speichern Sie die Vorhersage, TMDB -API -Schlüssel und Anwendungseinstellungen sicher.
  • Datenpipeline: Eine benutzerdefinierte Pio -Klasses vereinfacht die Interaktion mit den Ereignis- und Engine -Clients von Predictionio, importieren TMDB -Daten in Stapeln und indizieren sie in Elasticsearch für ein effizientes Abrufen.
  • .
  • Empfehlungsmaschine:
  • Die Motortrachen zu importierten Filmdaten und lernt aus Benutzerinteraktionen (Likes/Abneigungen), um Empfehlungen zu verbessern.
  • Benutzeroberfläche:
  • Eine benutzerfreundliche Schnittstelle zeigt zufällige Filme an, ermöglicht die Bewertung und präsentiert die Empfehlungen für Vorhersagen.

Einrichten der Umgebung:

.env Erstellen Sie eine

-Datei in Ihrem Lumen -App -Verzeichnis mit Folgendes:
<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>
Nach dem Login kopieren
Nach dem Login kopieren

Denken Sie daran, Platzhalter durch Ihre tatsächlichen Schlüssel zu ersetzen.

Datenimport (TMDB bis Predictionio & ElasticSearch):

  1. app/Classes/Pio.php erstellen
  2. :
<?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);
    }
}
Nach dem Login kopieren
  1. bootstrap/app.php Aktivitäten in
  2. :
Aktivieren
$app->middleware([
    Illuminate\Session\Middleware\StartSession::class,
]);
Nach dem Login kopieren
  1. app/Http/Controllers/AdminController.php erstellen
  2. :
<?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) ...
    }
}
Nach dem Login kopieren

importMovies (Hinweis: Die Implementierung der Funktion bleibt weitgehend übereinst Elasticsearch bleibt unverändert.)

  1. app/Http/routes.php Fügen Sie die Route in
  2. :
hinzu
$app->get('/movies/import', 'AdminController@importMovies');
Nach dem Login kopieren

Zeigen Sie zufällige Filme und Aufzeichnung von Benutzeraktionen:

  1. app/Http/Controllers/HomeController.php erstellen
  2. :
<?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) ...
    }
}
Nach dem Login kopieren
  1. app/Http/routes.php Routen in
  2. :
hinzufügen
$app->get('/', 'HomeController@index');
$app->post('/movie/random', 'HomeController@randomMovie');
$app->get('/movies/recommended', 'HomeController@recommendedMovies');
Nach dem Login kopieren
  1. index.blade.php Erstellen Sie die Ansichten recommended_movies.blade.php und main.js (HTML wie im Original angegeben). Das JavaScript (
  2. ) bleibt ebenfalls weitgehend gleich.

Bereitstellung und Schulung der PredictionIO -Engine:

<🎜>
  1. modifizieren engine.json bauen Sie den Motor:
  2. pio build --verbose trainieren Sie den Motor:
  3. pio train --verbose Bereitstellen Sie die Engine:
  4. pio deploy --port 8192
  5. Fügen Sie Cron -Jobs hinzu (passen Sie die Pfade nach Bedarf an):

<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>
Nach dem Login kopieren
Nach dem Login kopieren
Schlussfolgerung:

Diese optimierte Version behält die Funktionalität des ursprünglichen Tutorials und verbessert gleichzeitig die Lesbarkeit und Organisation der Code. Denken Sie daran, die erforderlichen Pakete zu installieren (Predictionio SDK, Guzzle, Elasticsearch -Client und Lenker für die Frontend). Der FAQS -Abschnitt aus dem Original bleibt relevant und liefert wertvolle zusätzliche Informationen.

Das obige ist der detaillierte Inhalt vonPredictionio und Lumen: Aufbau einer Filmempfehlung App erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage