التعلم الآلي باستخدام TypeScript: نظرة عامة على المكتبات الرئيسية
\n\nTypeScript - وهي إضافة ثابتة الكتابة فوق JavaScript - تُستخدم بشكل متزايد في المشاريع المتعلقة بالتعلم الآلي (ML). بفضل الكتابة الصارمة، وقابلية قراءة الكود المحسّنة، والدعم الممتاز من بيئات التطوير المتكاملة (IDE)، يتيح TypeScript إنشاء تطبيقات ML موثوقة تعمل في كل من المتصفح والخادم (Node.js). في هذه المقالة، سنستعرض المكتبات الرئيسية للتعلم الآلي باستخدام TypeScript، وإمكانياتها، وسنقدم أمثلة عملية.
\n\n1. TensorFlow.js - الرائد في التعلم الآلي باستخدام TypeScript
\n\nTensorFlow.js هو نسخة من إطار العمل الشهير TensorFlow مخصصة لـ JavaScript و TypeScript. يتيح تشغيل نماذج التعلم الآلي مباشرة في المتصفح أو على Node.js دون الحاجة إلى بنية تحتية للخادم. تدعم المكتبة جميع المراحل الرئيسية للتعلم الآلي: تحميل النماذج المدربة مسبقًا، تدريب نماذج جديدة، الاستدلال (التنبؤ)، وحتى الضبط الدقيق (fine-tuning).
\n\nالتثبيت:
\nnpm install @tensorflow/tfjs\nnpm install @tensorflow/tfjs-node # لـ Node.js (مع تسريع)\n\nمثال: تصنيف الصور باستخدام النموذج المدرب مسبقًا MobileNet
\nimport * as tf from '@tensorflow/tfjs';\nimport { loadGraphModel } from '@tensorflow/tfjs-converter';\n\nasync function classifyImage(imageElement: HTMLImageElement) {\n // تحميل النموذج المدرب مسبقًا MobileNet\n const model = await loadGraphModel(\n 'https://tfhub.dev/google/tfjs-model/imagenet/mobilenet_v2_100_224/classification/3/default/1'\n );\n\n // تحويل الصورة إلى موتر (tensor)\n const tensor = tf.browser.fromPixels(imageElement)\n .resizeNearestNeighbor([224, 224])\n .toFloat()\n .expandDims();\n\n // الحصول على التنبؤ\n const prediction = model.predict(tensor) as tf.Tensor;\n const topK = tf.topk(prediction, 3);\n const indices = await topK.indices.data();\n const values = await topK.values.data();\n\n console.log('أفضل 3 تنبؤات:', indices, values);\n}\n\n// الاستخدام\nconst img = document.getElementById('myImage') as HTMLImageElement;\nclassifyImage(img);\n\nTensorFlow.js مثالي لمهام الرؤية الحاسوبية، ومعالجة النصوص (NLP)، والسلاسل الزمنية. في TypeScript، تحصل على الإكمال التلقائي لجميع الطرق، مما يسرع عملية التطوير بشكل كبير.
\n\n2. ML5.js - واجهة سهلة للتعلم الآلي الإبداعي
\n\nML5.js مبني على TensorFlow.js، لكنه يقدم واجهة برمجة تطبيقات (API) أبسط وأعلى مستوى. هذه المكتبة موجهة للفنانين والمصممين والمطورين الذين يرغبون في إضافة وظائف التعلم الآلي بسرعة دون التعمق في الرياضيات. تدعم ML5.js مهامًا مثل تصنيف الصور، واكتشاف الكائنات، وتوليد النصوص، وتحليل الصوت، وغيرها الكثير.
\n\nالتثبيت:
\nnpm install ml5\n\nمثال: اكتشاف الكائنات باستخدام COCO-SSD
\nimport ml5 from 'ml5';\n\nasync function detectObjects(videoElement: HTMLVideoElement) {\n // تحميل نموذج اكتشاف الكائنات\n const objectDetector = await ml5.objectDetector('cocossd');\n\n // تنفيذ الكشف على الفيديو\n const results = await objectDetector.detect(videoElement);\n\n results.forEach((obj: any) => {\n console.log(`الكائن: ${obj.label}, الثقة: ${obj.confidence.toFixed(2)}`);\n console.log(`الإحداثيات: x=${obj.x}, y=${obj.y}, العرض=${obj.width}, الارتفاع=${obj.height}`);\n });\n}\n\n// الاستخدام مع كاميرا الويب\nconst video = document.getElementById('webcam') as HTMLVideoElement;\nnavigator.mediaDevices.getUserMedia({ video: true })\n .then(stream => { video.srcObject = stream; })\n .then(() => detectObjects(video));\n\nML5.js ممتازة للنماذج الأولية، والمشاريع التعليمية، والتركيبات التفاعلية. في TypeScript، يمكنك تعريف أنواع لنتائج الكشف، مما يجع