PHP للتعلم الآلي: خرافة أم حقيقة؟
\n\nاعتاد العديد من المطورين على الاعتقاد بأن التعلم الآلي هو حكر على Python أو R أو Julia. ومع ذلك، في الممارسة العملية، يمكن استخدام PHP، على الرغم من سمعته كلغة "ويب"، لحل مشاكل التعلم الآلي، خاصة في سياق التكامل مع تطبيقات الويب الحالية. في هذه المقالة، سنحلل الإمكانيات الحقيقية لـ PHP في التعلم الآلي، ونعرض أمثلة على الكود باستخدام المكتبات الشائعة، ونتحدث بصراحة عن القيود.
\n\nالمكتبات الرئيسية للتعلم الآلي في PHP
\n\nالنظام البيئي لـ PHP للتعلم الآلي ليس غنياً مثل نظام Python، لكن العديد من المكتبات الناضجة تستحق الاهتمام.
\n\nPHP-ML (php-ml/php-ml)
\nهذه هي المكتبة الأكثر شيوعاً للتعلم الآلي في PHP. توفر خوارزميات كلاسيكية: التصنيف، الانحدار، التجميع، القواعد الترابطية، وحتى الشبكات العصبية.
\n\nrequire_once __DIR__ . '/vendor/autoload.php';\n\nuse Phpml\\Classification\\KNearestNeighbors;\nuse Phpml\\Dataset\\ArrayDataset;\nuse Phpml\\Metric\\Accuracy;\n\n// بيانات التدريب: [الطول، العرض] -> التصنيف (0 - قطة، 1 - كلب)\n$samples = [[1, 2], [2, 3], [3, 4], [5, 6], [6, 7], [7, 8]];\n$labels = [0, 0, 0, 1, 1, 1];\n\n$classifier = new KNearestNeighbors($k = 3);\n$classifier->train($samples, $labels);\n\n// التنبؤ لعينة جديدة\n$prediction = $classifier->predict([4, 5]);\necho "التصنيف المتوقع: " . ($prediction == 0 ? "قطة" : "كلب") . PHP_EOL;\n\n// تقييم الدقة\n$testSamples = [[2.5, 3.5], [6.5, 7.5]];\n$testLabels = [0, 1];\n$predictions = $classifier->predict($testSamples);\n$accuracy = Accuracy::score($testLabels, $predictions);\necho "الدقة: " . ($accuracy * 100) . "%" . PHP_EOL;\n\n\nRubix ML (rubix/ml)
\nمكتبة أكثر حداثة وتقدماً مع دعم التعلم العميق، الشبكات العصبية، طرق التجميع، وخطوط أنابيب البيانات. على عكس PHP-ML، فإن Rubix ML قيد التطوير النشط ولديه وثائق على مستوى المؤسسات.
\n\nrequire_once __DIR__ . '/vendor/autoload.php';\n\nuse Rubix\\ML\\Classifiers\\KNearestNeighbors;\nuse Rubix\\ML\\Datasets\\Labeled;\nuse Rubix\\ML\\CrossValidation\\Reports\\AggregateReport;\nuse Rubix\\ML\\CrossValidation\\Reports\\ConfusionMatrix;\nuse Rubix\\ML\\CrossValidation\\Reports\\MulticlassBreakdown;\n\n// إنشاء مجموعة بيانات\n$samples = [\n [1.2, 2.3, 0.8],\n [3.4, 5.6, 1.2],\n [7.8, 9.0, 3.4],\n [2.1, 4.3, 1.5],\n];\n$labels = ['A', 'B', 'A', 'B'];\n\n$dataset = new Labeled($samples, $labels);\n\n// تدريب المصنف\n$estimator = new KNearestNeighbors(3);\n$estimator->train($dataset);\n\n// التنبؤ\n$predictions = $estimator->predict([\n [2.0, 3.0, 1.0],\n [6.0, 8.0, 2.5],\n]);\n\necho "التوقعات: " . implode(', ', $predictions) . PHP_EOL;\n\n// التقييم\n$report = new AggregateReport([\n new MulticlassBreakdown(),\n new ConfusionMatrix(),\n]);\n$results = $report->generate($predictions, ['A', 'B']);\nprint_r($results);\n\n\nالإمكانيات العملية لـ PHP للتعلم الآلي
\n\nفي الممارسة العملية، يمكن أن يكون PHP مفيداً في السيناريوهات التالية:
\n\n- \n
- دمج التعلم الآلي في تطبيقات الويب الحالية — إذا كان لديك بالفعل موقع على Laravel أو Symfony، يمكنك إضافة نماذج تصنيف أو انحدار بسيطة دون إعادة كتابة الواجهة الخلفية. \n
- معالجة النصوص البسيطة — تحليل المشاعر، مرشحات البريد العشوائي، تصنيف الأخبار. \n
- أنظمة التوصية — التصفية التعاونية بناءً على بيانات المشتريات أو المشاهدات. \n
- الكشف عن الحالات الشاذة والمراقبة — اكتشاف السلوك غير المعتاد للمستخدمين في الوقت الفعلي. \n
مثال لمرشح بريد عشوائي بسيط باستخدام PHP-ML:
\n\nuse Phpml\\Classification\\NaiveBayes;\nuse Phpml\\FeatureExtraction\\TfIdfTransformer;\nuse Phpml\\Tokenization\\WhitespaceTokenizer;\nuse Phpml\\FeatureExtraction\\