چگونه می توان 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 قرار دهید

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

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

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

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

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

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

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

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

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

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

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

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

تنظیم RethinkDB Cluster On CentOS 7

تنظیم RethinkDB Cluster On CentOS 7

مقدمه RethinkDB یک پایگاه داده NoSQL است که داده ها را به عنوان اسناد JSON ذخیره می کند. این یک زبان پرس و جو بسیار بصری است و از ویژگی های آن معمولا در دسترس است

نحوه ساخت Brotli از Source on Ubuntu 18.04 LTS

نحوه ساخت Brotli از Source on Ubuntu 18.04 LTS

با استفاده از یک سیستم متفاوت؟ Brotli یک روش فشرده سازی جدید با نسبت فشرده سازی بهتر از GZIP است. کد منبع آن در این Githu به صورت عمومی میزبانی می شود

با استفاده از نمایش های MySQL در Debian 7

با استفاده از نمایش های MySQL در Debian 7

مقدمه MySQL دارای یک ویژگی عالی است که به عنوان بازدید شناخته می شود. نمایش نمایش داده شد. برای یک سؤال طولانی مدت از آنها فکر کنید. در این راهنما ،

غیرفعال یا محدود کردن ورود ریشه از طریق SSH در لینوکس

غیرفعال یا محدود کردن ورود ریشه از طریق SSH در لینوکس

اجازه ورود به سیستم ریشه در SSH معمولاً یک روش امنیتی ضعیف در کل صنعت فناوری تلقی می شود. درعوض ، می توانید اداری حساس را انجام دهید

نحوه نصب نسخه باز Vtiger CRM در CentOS 7

نحوه نصب نسخه باز Vtiger CRM در CentOS 7

Vtiger CRM یک نرم افزار محبوب مدیریت ارتباط با مشتری است که می تواند به بنگاهها در رشد فروش ، ارائه خدمات به مشتری و افزایش سود کمک کند. من

نحوه نصب DokuWiki در اوبونتو 16.04 LTS

نحوه نصب DokuWiki در اوبونتو 16.04 LTS

با استفاده از یک سیستم متفاوت؟ DokuWiki یک برنامه ویکی منبع باز است که به زبان پی اچ پی نوشته شده است و به پایگاه داده نیاز ندارد. این داده ها را در پرونده های متنی ذخیره می کند. DokuWik

راه اندازی یک Chroot در دبیان

راه اندازی یک Chroot در دبیان

در این مقاله به شما می آموزد که چگونه زندان دزدگیر را در دبیان تنظیم کنید. تصور می کنم از Debian 7.x استفاده می کنید. اگر دبیان 6 یا 8 را اجرا کردید ، ممکن است این کار کند

نحوه نصب PiVPN در Debian

نحوه نصب PiVPN در Debian

مقدمه یک راه آسان برای راه اندازی سرور VPN در دبیان با PiVPN است. PiVPN نصب و بسته بندی OpenVPN است. این دستورات ساده را برای شما ایجاد می کند

Nginx ، Wordpress را نصب کنید و رمزگذاری را در چند دقیقه با EasyEngine روی Debian 8 یا Ubuntu 16.04 نصب کنید

Nginx ، Wordpress را نصب کنید و رمزگذاری را در چند دقیقه با EasyEngine روی Debian 8 یا Ubuntu 16.04 نصب کنید

EasyEngine (ee) ابزاری پایتون است که به شما امکان می دهد سایت های وردپرس خود را به راحتی و به صورت خودکار مدیریت کنید. با استفاده از EasyEngine ، شما مجبور به dea نیستید

نحوه نصب و پیکربندی CyberPanel در Ubuntu 18.04 LTS

نحوه نصب و پیکربندی CyberPanel در Ubuntu 18.04 LTS

با استفاده از یک سیستم متفاوت؟ مقدمه CyberPanel یکی از اولین صفحه کنترل در بازار است که هم منبع باز است و هم از OpenLiteSpeed ​​استفاده می کند. چی

نحوه ساخت Brotli از Source on Debian 9

نحوه ساخت Brotli از Source on Debian 9

با استفاده از یک سیستم متفاوت؟ Brotli یک روش فشرده سازی جدید با نسبت فشرده سازی بهتر از Gzip است. کد منبع آن در Github به صورت عمومی میزبانی می شود. تی

نحوه نصب کاناپه CMS 2.0 بر روی یک VPS CentOS 7 LAMP

نحوه نصب کاناپه CMS 2.0 بر روی یک VPS CentOS 7 LAMP

با استفاده از یک سیستم متفاوت؟ Couch CMS یک سیستم مدیریت محتوای منبع ساده و انعطاف پذیر ، آزاد و منبع باز (CMS) است که به طراحان وب اجازه می دهد تا طراحی کنند.

ایجاد یک سرور Teamspeak 3 در اوبونتو 14 64 بیتی

ایجاد یک سرور Teamspeak 3 در اوبونتو 14 64 بیتی

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

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