首页 >后端开发 >php教程 >预测和管腔:构建电影推荐应用程序

预测和管腔:构建电影推荐应用程序

Jennifer Aniston
Jennifer Aniston原创
2025-02-15 12:34:12689浏览

>本教程演示了使用预测和管腔构建电影推荐应用程序。 我们将介绍数据导入,随机的电影选择,推荐生成和引擎部署。

>

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中的启用会话:
<code class="language-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);
    }
}</code>
  1. 创建bootstrap/app.php
<code class="language-php">$app->middleware([
    Illuminate\Session\Middleware\StartSession::class,
]);</code>
  1. (注意:app/Http/Controllers/AdminController.php函数的实现与原始的实现基本相同,但具有改进的可变命名和格式以提高清晰度。 Elasticsearch保持不变。)
<code class="language-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) ...
    }
}</code>

添加路由importMovies

  1. >显示随机电影和记录用户操作:app/Http/routes.php
<code class="language-php">$app->get('/movies/import', 'AdminController@importMovies');</code>
创建

  1. app/Http/Controllers/HomeController.php中的添加路由:
<code class="language-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) ...
    }
}</code>
  1. 创建app/Http/routes.php>和
  2. 视图(原件中提供的html)。 JavaScript(
)也基本保持不变。
<code class="language-php">$app->get('/', 'HomeController@index');
$app->post('/movie/random', 'HomeController@randomMovie');
$app->get('/movies/recommended', 'HomeController@recommendedMovies');</code>
>
  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