كيفية إنشاء REST API التعلم العميق مع Word2Vec وقارورة

من الصعب الحفاظ على الأساليب التقليدية للتنمية عند استخدام نماذج التعلم الآلي المعقدة في الإنتاج. قد يكون التطوير على جهاز كمبيوتر محمول أو جهاز محلي بطيئًا لتدريب نموذج التعلم الآلي لمهندسي التعلم العميق. ونتيجة لذلك ، نستخدم عادةً الأجهزة السحابية مع أجهزة أكثر قوة لتدريب وتشغيل نماذج التعلم الآلي. هذه ممارسة جيدة نظرًا لأننا نجرد العمليات الحسابية المعقدة وبدلاً من ذلك نقدم طلبات AJAX حسب الضرورة. في هذا البرنامج التعليمي ، سوف نجعل نموذج التعلم العميق المدرب مسبقًا المسمى Word2Vec متاحًا للخدمات الأخرى من خلال إنشاء REST API من الألف إلى الياء.

المتطلبات الأساسية

  • نسخة خادم Ubuntu 16.04 مع ذاكرة وصول عشوائي بسعة 4 جيجابايت على الأقل. لأغراض الاختبار والتطوير ، يمكنك اختيار مثيل مع 4 غيغابايت من ذاكرة الوصول العشوائي
  • فهم كيفية استخدام نظام التشغيل Linux لإنشاء / التنقل / تحرير المجلدات والملفات
  • A sudoالمستخدم

ما هي كلمات التضمين؟

يعد تضمين الكلمات تطوراً حديثاً في معالجة اللغات الطبيعية والتعلم العميق الذي أحدث ثورة في كلا المجالين بسبب التقدم السريع. يعد تضمين الكلمات متجهًا بشكل أساسي بحيث يتوافق كل منها مع كلمة واحدة بحيث تعني المتجهات الكلمات. ويمكن إثبات ذلك من خلال ظواهر معينة مثل متجه king - queen = boy - girl. تستخدم ناقلات الكلمات لبناء كل شيء من محركات التوصيات إلى روبوتات الدردشة التي تفهم اللغة الإنجليزية بالفعل.

تضمين الكلمات ليس عشوائيًا. يتم إنشاؤها بواسطة تدريب شبكة عصبية. يأتي أحدث تطبيق قوي لتضمين الكلمات من Google يسمى Word2Vec والذي تم تدريبه من خلال التنبؤ بالكلمات التي تظهر بجوار الكلمات الأخرى في اللغة. على سبيل المثال ، بالنسبة للكلمة "cat"، ستتنبأ الشبكة العصبية بالكلمات "kitten"و "feline". يسمح لنا هذا الحدس للكلمات التي تظهر بالقرب من بعضها البعض بوضعها في مساحة النواقل.

ومع ذلك ، من الناحية العملية ، نميل إلى استخدام النماذج المدربة مسبقًا من الشركات الكبيرة الأخرى مثل Google من أجل وضع نموذج أولي وتبسيط عمليات النشر بسرعة. في هذا البرنامج التعليمي ، سنقوم بتنزيل واستخدام تضمين الكلمات Word2Vec المدرب مسبقًا من Google. يمكننا القيام بذلك عن طريق تشغيل الأمر التالي في دليل العمل الخاص بنا.

wget http://magnitude.plasticity.ai/word2vec/GoogleNews-vectors-negative300.magnitude

تركيب الحزم والقوارير

نموذج تضمين الكلمة الذي نزلناه .magnitudeبتنسيق. يتيح لنا هذا التنسيق الاستعلام عن النموذج بكفاءة باستخدام SQL ، وبالتالي فهو تنسيق التضمين الأمثل لخوادم الإنتاج. نظرًا لأننا بحاجة إلى أن نكون قادرين على قراءة .magnitudeالتنسيق ، فسنقوم بتثبيت pymagnitudeالحزمة. سنقوم أيضًا بتثبيت flaskخدمة توقعات التعلم العميقة التي قام بها النموذج لاحقًا.

pip3 install pymagnitude flask

سنضيفه أيضًا إلى متتبع التبعية الخاص بنا باستخدام الأمر التالي. يؤدي هذا إلى إنشاء ملف مسمى requirements.txtوحفظ مكتبات Python الخاصة بنا حتى نتمكن من إعادة تثبيتها في وقت لاحق.

pip3 freeze > requirements.txt

الاستعلام عن نموذج Word2Vec

للبدء ، سننشئ ملفًا للتعامل مع فتح واستعلام كلمة التضمين.

touch model.py

بعد ذلك ، سنضيف الأسطر التالية model.pyلاستيراد Magnitude.

from pymagnitude import Magnitude
vectors = Magnitude('GoogleNews-vectors-negative300.magnitude')

يمكننا أن نلعب مع pymagnitudeالحزمة ونموذج التعلم العميق باستخدام queryالطريقة ، وتوفير حجة لكلمة.

cat_vector = vectors.query('cat')
print(cat_vector)

بالنسبة إلى جوهر واجهة برمجة التطبيقات لدينا ، سنحدد وظيفة لإرجاع الفرق في المعنى بين كلمتين. هذا هو العمود الفقري لمعظم حلول التعلم العميقة لأشياء مثل محركات التوصية (أي عرض المحتوى بكلمات مماثلة).

يمكننا اللعب بهذه الوظيفة باستخدام الوظائف similarityو most_similar .

print(vectors.similarity("cat", "dog"))
print(vectors.most_similar("cat", topn=100))

نقوم بتطبيق حاسبة التشابه على النحو التالي. سيتم استدعاء هذه الطريقة من قبل Flask API في القسم التالي. لاحظ أن هذه الدالة تُرجع قيمة حقيقية بين 0 و 1.

def similarity(word1, word2):
    return vectors.similarity(word1, word2)

إنشاء REST API

سنقوم بإنشاء خادمنا في ملف مسمى service.pyبالمحتويات التالية. نحن استيراد flaskو requestللتعامل مع قدرات الخادم الخاص بنا، ونحن استيراد similarityمحرك من وحدة كتبنا في وقت سابق.

from flask import Flask, request
from model import similarity

app = Flask(__name__)

@app.route("/", methods=['GET'])
def welcome():
    return "Welcome to our Machine Learning REST API!"

@app.route("/similarity", methods=['GET'])
def similarity_route():
    word1 = request.args.get("word1")
    word2 = request.args.get("word2")
    return str(similarity(word1, word2))

if __name__ == "__main__":
    app.run(port=8000, debug=True)

خادمنا هو عظام عارية إلى حد ما ، ولكن يمكن توسيعه بسهولة عن طريق إنشاء المزيد من المسارات باستخدام @app.routeالديكور.

إجراء مكالمات API

يمكننا تشغيل خادم Flask الخاص بنا عن طريق تشغيل الأوامر التالية لتنشيط بيئتنا الافتراضية ، وتثبيت حزمنا ، وتشغيل ملف Python المرتبط بها.

source venv/bin/activate
pip3 install -r requirements.txt
python3 service.py

سيكون خادمنا متاحًا على localhost:8000. يمكننا الاستعلام عن قاعدة البيانات الخاصة بنا في localhost:8000/similarity?word1=cat&word2=dogوعرض الاستجابة إما في متصفحنا أو من خلال عميل AJAX آخر.



Leave a Comment

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد