چگونه می توان API Deep Learning REST را با Word2Vec و Flask ایجاد کرد

استفاده از مدلهای پیچیده یادگیری ماشین در تولید ، حفظ روشهای سنتی برای توسعه دشوار است. توسعه در لپ تاپ یا دستگاه محلی برای آموزش مدل یادگیری ماشین برای مهندسین یادگیری عمیق می تواند کند باشد. در نتیجه ، ما به طور معمول از دستگاه های ابری با سخت افزار قدرتمندتر استفاده می کنیم تا مدل های یادگیری ماشین خود را آموزش داده و اجرا کنیم. این یک عمل خوب است زیرا ما محاسبات پیچیده را انتزاع می کنیم و در عوض درخواست های AJAX را در صورت لزوم می سازیم. در این آموزش ، ما با ساختن یک API REST از سطح زمین به بالا ، یک مدل یادگیری عمیق از پیش آموزش دیده به نام Word2Vec را در اختیار سایر خدمات قرار خواهیم داد.

پیش نیازها

  • نمونه سرور اوبونتو 16.04 با حداقل 4 گیگابایت رم. برای اهداف آزمایش و توسعه می توانید نمونه ای را با رم 4 گیگابایتی انتخاب کنید
  • درک نحوه استفاده از سیستم عامل لینوکس برای ایجاد / حرکت / ویرایش پوشه ها و پرونده ها
  • یک sudoکاربر

کلمات کلیدی چیست؟

تعبیه واژه ها یک پیشرفت اخیر در پردازش زبان طبیعی و یادگیری عمیق است که به دلیل پیشرفت سریع هر دو زمینه را متحول کرده است. تعبیه کلمات در واقع بردارهایی هستند که هر یک با یک کلمه واحد مطابقت دارند به طوری که بردارها به معنی کلمات هستند. این را می توان با پدیده های خاصی مانند بردار برای نشان داد king - queen = boy - girl. بردارهای کلمه ای برای ساختن همه چیز از موتورهای توصیه شده گرفته تا چت بات ها که در واقع زبان انگلیسی را درک می کنند استفاده می شود.

تعبیه کلمات تصادفی نیستند. آنها با آموزش یک شبکه عصبی تولید می شوند. اجرای قدرتمند کلمه اخیر جاسازی شده توسط گوگل به نام Word2Vec است که با پیش بینی کلماتی که در کنار کلمات دیگر در یک زبان قرار دارند آموزش داده می شود. به عنوان مثال ، برای کلمه "cat"، شبکه عصبی کلمات "kitten"و "feline". این شهود کلمات که در کنار یکدیگر ظاهر می شوند به ما امکان می دهد تا آنها را در فضای برداری قرار دهیم.

با این حال ، در عمل ، ما تمایل داریم که از نمونه های از قبل آموزش دیده سایر شرکت های بزرگ مانند Google استفاده کنیم تا سریع نمونه سازی شود و فرآیندهای استقرار را ساده تر کند. در این آموزش تعبیه کلمات از قبل آموزش دیده Word2Vec گوگل را بارگیری و استفاده خواهیم کرد. ما می توانیم این کار را با اجرای دستور زیر در فهرست کار خود انجام دهیم.

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برای وارد کردن بزرگی اضافه خواهیم کرد.

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

ما می توانیم pymagnitudeبا استفاده از queryروش ، با بسته و الگوی یادگیری عمیق بازی کنیم ، یک استدلال برای یک کلمه ارائه دهیم.

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

برای هسته اصلی API ما تابعی را برای بازگشت تفاوت معنی در بین دو کلمه تعریف خواهیم کرد. این ستون فقرات برای اکثر راه حلهای یادگیری عمیق برای مواردی مانند موتورهای توصیه (یعنی نشان دادن محتوا با کلمات مشابه) است.

ما می توانیم با استفاده از 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)

ایجاد یک API REST

ما سرور خود را در پرونده ای به نام 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 خود را با اجرای دستورات زیر اجرا کنیم تا محیط مجازی خود را فعال کنیم ، بسته های خود را نصب کنیم و پرونده پی پایت همراه آن را اجرا کنیم.

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

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

LiteCart یک بستر سبد خرید آزاد و منبع باز است که به زبان های PHP ، jQuery و HTML 5 نوشته شده است. این نرم افزار ساده ، سبک و با کاربرد آسان است.

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.

اشتراک NFS را در Debian تنظیم کنید

اشتراک NFS را در Debian تنظیم کنید

NFS یک سیستم فایل مبتنی بر شبکه است که به رایانه ها اجازه می دهد تا از طریق شبکه رایانه ای به فایلها دسترسی پیدا کنند. این راهنما توضیح می دهد که چگونه می توانید پوشه ها را روی NF قرار دهید

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

هنگام راه اندازی سرور جدید لینوکس ، به روزرسانی سیستم های هسته و سایر بسته ها تا آخرین نسخه پایدار یک روش توصیه شده است. در این مقاله

نحوه نصب Matomo Analytics در Fedora 28

نحوه نصب Matomo Analytics در Fedora 28

با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o

یک سرور TeamTalk را در لینوکس تنظیم کنید

یک سرور TeamTalk را در لینوکس تنظیم کنید

TeamTalk یک سیستم کنفرانس است که به کاربران امکان می دهد مکالمات صوتی / تصویری با کیفیت بالا ، چت متنی ، انتقال فایل ها و صفحه های به اشتراک بگذارند. من

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

Vultr یک ویژگی را فراهم می کند که به شما امکان می دهد با ایجاد یک نمونه جدید ، کلیدهای SSH را از قبل نصب کنید. این اجازه می دهد تا به کاربر root دسترسی داشته باشید ، با این حال ، th

نحوه نصب انجمن NodeBB در FreeBSD 12

نحوه نصب انجمن NodeBB در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB

نصب و راه اندازی ZNC در اوبونتو

نصب و راه اندازی ZNC در اوبونتو

ZNC یک پیشرانه پیشرفته شبکه IRC است که تمام وقت بهم متصل می شود تا مشتری IRC بتواند بدون از دست دادن جلسه گپ قطع یا وصل شود.

نحوه نصب Ranger Terminal File Manager در لینوکس

نحوه نصب Ranger Terminal File Manager در لینوکس

رنجر یک مدیر فایل مبتنی بر خط فرمان است که دارای کلیدهای اتصال VI است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد