التعلم الآلي في PHP: المكتبات والأدوات
تقليديًا، يرتبط التعلم الآلي (ML) بلغات مثل Python أو R أو Julia. ومع ذلك، فإن PHP، كونها واحدة من أكثر اللغات شيوعًا لتطوير الويب، تمتلك أيضًا نظامًا بيئيًا لتنفيذ خوارزميات ML. على الرغم من أن PHP لا تتمتع بنفس الأداء أو وفرة المكتبات منخفضة المستوى (مثل NumPy أو TensorFlow)، إلا أنه توجد حلول ناضجة للعديد من المهام العملية - التصنيف، الانحدار، التجميع، العمل مع الشبكات العصبية. في هذه المقالة، سنستعرض ثلاث مكتبات رئيسية للتعلم الآلي في PHP: PHP-ML، Rubix ML و Keras-PHP.
1. PHP-ML (PHP Machine Learning)
PHP-ML هي المكتبة الأكثر شهرة واستقرارًا للتعلم الآلي في PHP. لا تتطلب تبعيات خارجية، وهي مكتوبة بالكامل بلغة PHP وتوفر مجموعة واسعة من الخوارزميات. المكتبة مثالية للتعلم، النمذجة الأولية، ودمج ML في تطبيقات الويب.
الإمكانيات الرئيسية:
- التصنيف: بايز البسيط (Naive Bayes)، SVM (بناءً على LibSVM)، أقرب الجيران (k-NN)، أشجار القرار.
- الانحدار: الانحدار الخطي، انحدار المتجهات الداعمة (SVR)، انحدار k-NN.
- التجميع: k-المتوسطات (k-Means)، DBSCAN، التجميع الهرمي.
- مقاييس التقييم: الدقة، الاستدعاء، مقياس F1، مصفوفة الارتباك (confusion matrix).
- المعالجة المسبقة للبيانات: التطبيع، التوحيد القياسي، ترميز السمات الفئوية.
مثال: تدريب مصنف لتحديد المشاعر في النص
use Phpml\\Classification\\NaiveBayes;use Phpml\\FeatureExtraction\\TfIdfTransformer;use Phpml\\Tokenization\\WhitespaceTokenizer;
// بيانات التدريب$samples = [ 'فيلم رائع', 'فيلم سيء', 'أعجبني كثيرًا', 'ممل وغبي'];$labels = ['positive', 'negative', 'positive', 'negative'];
// تحويل النص إلى متجهات رقمية$tokenizer = new WhitespaceTokenizer();$transformer = new TfIdfTransformer();
// إنشاء وتدريب النموذج$classifier = new NaiveBayes();$classifier->train($samples, $labels);
// التنبؤ$prediction = $classifier->predict(['قصة مثيرة']);echo $prediction; // positive2. Rubix ML
Rubix ML هي مكتبة أكثر حداثة وتقدمًا، تركز على الأداء العالي والمرونة. تدعم العمل مع مجموعات البيانات الكبيرة من خلال المولدات (lazy loading)، ولديها نظام خطوط أنابيب مدمج وتكامل مع TensorFlow عبر NDArray. على عكس PHP-ML، تتطلب Rubix ML إصدار PHP 7.4+ وتستخدم إضافات مثل intl و mbstring.
الميزات الرئيسية:
- الشبكات العصبية: المدركات متعددة الطبقات (MLP) مع دعم وظائف التنشيط المختلفة (ReLU، Sigmoid، Softmax).
- خطوط الأنابيب: دمج عدة خطوات (التطبيع، الترميز، التدريب) في مسار واحد.
- العمل مع البيانات المتناثرة: خوارزميات فعالة للمصفوفات الكبيرة.
- التصور: أدوات مدمجة لرسم الرسوم البيانية (عبر SVG).
- حفظ وتحميل النماذج: التسلسل إلى JSON أو تنسيق PHP المتسلسل.
مثال: الانحدار للتنبؤ بسعر السكن
use Rubix\\ML\\Regressors\\Ridge;use Rubix\\ML\\Datasets\\Labeled;use Rubix\\ML\\Transformers\\NumericStringConverter;
// تحميل البيانات (افترض CSV)$dataset = Labeled::fromIterator(new \\ArrayIterator([ ['area' => 120, 'rooms' => 3, 'price' => 150000], ['area' => 80, 'rooms' => 2, 'price' => 90000], ['area' => 200, 'rooms' => 4, 'price' =&g