機器學習無所不在-推薦影片、標記影像,現在甚至將新聞文章分類。想像一下如果您可以在 PHP 中做到這一點!透過 Rubix ML,您可以以簡單易懂的方式將機器學習的強大功能引入 PHP。本指南將引導您建立一個簡單的新聞分類器,將文章分類為「體育」或「技術」等類別。最後,您將擁有一個工作分類器,可以根據新文章的內容預測其類別。
這個專案非常適合想要使用 PHP 進行機器學習的初學者,您可以按照 GitHub 上的完整程式碼進行操作。
Rubix ML 是一個 PHP 機器學習函式庫,它將 ML 工具和演算法引入 PHP 友善的環境中。無論您從事分類、迴歸、聚類,甚至自然語言處理,Rubix ML 都能滿足您的需求。它允許您加載和預處理資料、訓練模型並評估效能——所有這些都在 PHP 中進行。
Rubix ML 支援廣泛的機器學習任務,例如:
讓我們深入了解如何使用 Rubix ML 在 PHP 中建立簡單的新聞分類器!
我們將首先使用 Rubix ML 設定一個新的 PHP 專案並配置自動載入。
建立一個新的專案目錄並導航到其中:
mkdir NewsClassifier cd NewsClassifier
確保您已安裝 Composer,然後透過執行以下命令將 Rubix ML 新增至您的專案:
composer require rubix/ml
要從專案的 src 目錄自動載入類,請開啟或建立composer.json 檔案並新增以下配置:
{ "autoload": { "psr-4": { "NewsClassifier\": "src/" } }, "require": { "rubix/ml": "^2.5" } }
這告訴 Composer 自動載入 NewsClassifier 命名空間下 src 資料夾中的任何類別。
新增自動載入設定後,執行下列指令重新產生 Composer 的自動載入器:
mkdir NewsClassifier cd NewsClassifier
您的專案目錄應如下所示:
composer require rubix/ml
在 src/ 中,建立一個名為 Classification.php 的檔案。該文件將包含訓練模型和預測新聞類別的方法。
{ "autoload": { "psr-4": { "NewsClassifier\": "src/" } }, "require": { "rubix/ml": "^2.5" } }
此分類類別包含以下方法:
在 src/ 中建立一個名為 train.php 的腳本來訓練模型。
composer dump-autoload
執行此腳本來訓練模型:
NewsClassifier/ ├── src/ │ ├── Classification.php │ └── train.php ├── storage/ ├── vendor/ ├── composer.json └── composer.lock
如果成功,您將看到:
<?php namespace NewsClassifier; use Rubix\ML\Classifiers\KNearestNeighbors; use Rubix\ML\Datasets\Labeled; use Rubix\ML\Datasets\Unlabeled; use Rubix\ML\PersistentModel; use Rubix\ML\Pipeline; use Rubix\ML\Tokenizers\Word; use Rubix\ML\Transformers\TfIdfTransformer; use Rubix\ML\Transformers\WordCountVectorizer; use Rubix\ML\Persisters\Filesystem; class Classification { private $modelPath; public function __construct($modelPath) { $this->modelPath = $modelPath; } public function train() { // Sample data and corresponding labels $samples = [ ['The team played an amazing game of soccer'], ['The new programming language has been released'], ['The match between the two teams was incredible'], ['The new tech gadget has been launched'], ]; $labels = [ 'sports', 'technology', 'sports', 'technology', ]; // Create a labeled dataset $dataset = new Labeled($samples, $labels); // Set up the pipeline with a text transformer and K-Nearest Neighbors classifier $estimator = new Pipeline([ new WordCountVectorizer(10000, 1, 1, new Word()), new TfIdfTransformer(), ], new KNearestNeighbors(4)); // Train the model $estimator->train($dataset); // Save the model $this->saveModel($estimator); echo "Training completed and model saved.\n"; } private function saveModel($estimator) { $persister = new Filesystem($this->modelPath); $model = new PersistentModel($estimator, $persister); $model->save(); } public function predict(array $samples) { // Load the saved model $persister = new Filesystem($this->modelPath); $model = PersistentModel::load($persister); // Predict categories for new samples $dataset = new Unlabeled($samples); return $model->predict($dataset); } }
在 src/ 中建立另一個腳本,predict.php,根據訓練的模型對新文章進行分類。
<?php require __DIR__ . '/../vendor/autoload.php'; use NewsClassifier\Classification; // Define the model path $modelPath = __DIR__ . '/../storage/model.rbx'; // Initialize the Classification object $classifier = new Classification($modelPath); // Train the model and save it $classifier->train();
運行預測腳本對樣本進行分類:
php src/train.php
輸出應顯示每個範例文字及其預測類別。
透過本指南,您已經使用 Rubix ML 在 PHP 中成功建立了一個簡單的新聞分類器!這展示了 PHP 如何比您想像的更通用,為文字分類、推薦系統等任務引入機器學習功能。此專案的完整程式碼可在 GitHub 上取得。
嘗試不同的演算法或資料來擴展分類器。誰知道 PHP 可以進行機器學習?現在你知道了。
快樂編碼!
以上是PHP 中的機器學習:使用 Rubix ML 建立新聞分類器的詳細內容。更多資訊請關注PHP中文網其他相關文章!