Si të krijoni një API REST të mësimit të thellë me Word2Vec dhe Flask

Qasjet tradicionale të zhvillimit janë të vështira për t'u ruajtur kur përdoren modele komplekse të mësimit të makinerive në prodhim. Zhvillimi në një laptop ose makineri lokale mund të jetë i ngadalshëm për të trajnuar modelin e mësimit të makinës për inxhinierët e të mësuarit të thellë. Si rezultat, ne zakonisht përdorim makina cloud me pajisje më të fuqishme për të trajnuar dhe drejtuar modelet tona të mësimit të makinerive. Kjo është praktikë e mirë pasi ne abstraktojmë llogaritjet komplekse dhe në vend të kësaj bëjmë kërkesa AJAX sipas nevojës. Në këtë tutorial, ne do të vëmë në dispozicion të shërbimeve të tjera një model të para-trajnuar të mësimit të thellë të quajtur Word2Vec duke ndërtuar një API REST nga themeli.

Parakushtet

  • Një shembull i serverit Ubuntu 16.04 me të paktën 4 GB RAM. Për qëllime testimi dhe zhvillimi, mund të zgjidhni një shembull me 4 GB RAM
  • Kuptimi se si të përdoret sistemi operativ Linux për të krijuar/naviguar/redaktuar dosje dhe skedarë
  • Një sudopërdorues

Çfarë janë futjet e fjalëve?

Përfshirja e fjalëve është një zhvillim i fundit në përpunimin e gjuhës natyrore dhe mësimin e thellë që ka revolucionarizuar të dyja fushat për shkak të përparimit të shpejtë. Përfshirjet e fjalëve janë në thelb vektorë që secili korrespondon me një fjalë të vetme në mënyrë që vektorët të nënkuptojnë fjalët. Kjo mund të demonstrohet nga disa dukuri të tilla si vektori për king - queen = boy - girl. Vektorët e fjalëve përdoren për të ndërtuar gjithçka, nga motorët e rekomandimeve te robotët e bisedës që në fakt kuptojnë gjuhën angleze.

Përfshirjet e fjalëve nuk janë të rastësishme; ato krijohen duke trajnuar një rrjet nervor. Një zbatim i fuqishëm i fundit i futjes së fjalëve vjen nga Google me emrin Word2Vec i cili është trajnuar duke parashikuar fjalët që shfaqen pranë fjalëve të tjera në një gjuhë. Për shembull, për fjalën "cat", rrjeti nervor do të parashikojë fjalët "kitten"dhe "feline". Kjo intuitë e fjalëve që shfaqen pranë njëra-tjetrës na lejon t'i vendosim ato në hapësirën vektoriale.

Megjithatë, në praktikë, ne priremi të përdorim modelet e para-trajnuara të korporatave të tjera të mëdha si Google, në mënyrë që të prototipojmë shpejt dhe të thjeshtojmë proceset e vendosjes. Në këtë tutorial ne do të shkarkojmë dhe përdorim futjet e fjalëve të para-trajnuara të Google Word2Vec. Ne mund ta bëjmë këtë duke ekzekutuar komandën e mëposhtme në drejtorinë tonë të punës.

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

Instalimi i paketave Flask dhe Magnitude

Modeli i ngulitjes së fjalëve që kemi shkarkuar është në një .magnitudeformat. Ky format na lejon të kërkojmë modelin në mënyrë efikase duke përdorur SQL, dhe për këtë arsye është formati optimal i ngulitjes për serverët e prodhimit. Meqenëse duhet të jemi në gjendje të lexojmë .magnitudeformatin, do ta instalojmë pymagnitudepaketën. Ne gjithashtu do të instalojmë flaskpër të shërbyer më vonë parashikimet e mësimit të thellë të bëra nga modeli.

pip3 install pymagnitude flask

Ne gjithashtu do ta shtojmë atë në gjurmuesin tonë të varësisë me komandën e mëposhtme. Kjo krijon një skedar të quajtur requirements.txtdhe ruan bibliotekat tona Python në mënyrë që ne t'i riinstalojmë ato në një kohë të mëvonshme.

pip3 freeze > requirements.txt

Kërkimi i modelit Word2Vec

Për të filluar, ne do të krijojmë një skedar për të trajtuar hapjen dhe kërkimin e futjeve të fjalëve.

touch model.py

Më pas, ne do të shtojmë rreshtat e mëposhtëm për model.pytë importuar Magnitude.

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

Ne mund të luajmë me pymagnitudepaketën dhe modelin e të mësuarit të thellë duke përdorur querymetodën, duke ofruar një argument për një fjalë.

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

Për thelbin e API-së tonë, ne do të përcaktojmë një funksion për të kthyer ndryshimin në kuptim midis dy fjalëve. Kjo është shtylla kurrizore për shumicën e zgjidhjeve të të mësuarit të thellë për gjëra të tilla si motorët e rekomandimeve (dmth. shfaqja e përmbajtjes me fjalë të ngjashme).

Ne mund të luajmë me këtë funksion duke përdorur funksionet similaritydhe most_similar .

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

Ne zbatojmë kalkulatorin e ngjashmërisë si më poshtë. Kjo metodë do të thirret nga API Flask në seksionin tjetër. Vini re se ky funksion kthen një vlerë reale midis 0 dhe 1.

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

Krijimi i një API REST

Ne do të krijojmë serverin tonë në një skedar të quajtur service.pyme përmbajtjen e mëposhtme. Ne importojmë flaskdhe requestpër të trajtuar aftësitë e serverit tonë dhe importojmë similaritymotorin nga moduli që kemi shkruar më parë.

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)

Serveri ynë është mjaft i zhveshur, por mund të zgjerohet lehtësisht duke krijuar më shumë rrugë duke përdorur @app.routedekoruesin.

Kryerja e thirrjeve API

Ne mund të ekzekutojmë serverin tonë Flask duke ekzekutuar komandat e mëposhtme për të aktivizuar mjedisin tonë virtual, për të instaluar paketat tona dhe për të ekzekutuar skedarin e lidhur Python.

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

Serveri ynë do të jetë i disponueshëm në localhost:8000. Ne mund të kërkojmë në bazën tonë të të dhënave localhost:8000/similarity?word1=cat&word2=dogdhe ta shohim përgjigjen ose në shfletuesin tonë ose përmes një klienti tjetër AJAX.

Lëreni një koment

Ngritja e makinave: Aplikimet në botën reale të AI

Ngritja e makinave: Aplikimet në botën reale të AI

Inteligjenca Artificiale nuk është në të ardhmen, është këtu në të tashmen Në këtë blog Lexoni se si aplikacionet e inteligjencës artificiale kanë ndikuar në sektorë të ndryshëm.

Sulmet DDOS: Një përmbledhje e shkurtër

Sulmet DDOS: Një përmbledhje e shkurtër

A jeni edhe ju viktimë e Sulmeve DDOS dhe jeni konfuz në lidhje me metodat e parandalimit? Lexoni këtë artikull për të zgjidhur pyetjet tuaja.

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

Ju mund të keni dëgjuar se hakerët fitojnë shumë para, por a keni menduar ndonjëherë se si i fitojnë ato para? Le te diskutojme.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Dëshironi të shihni shpikjet revolucionare nga Google dhe se si këto shpikje ndryshuan jetën e çdo njeriu sot? Më pas lexoni në blog për të parë shpikjet nga Google.

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

Koncepti i makinave vetë-drejtuese për të dalë në rrugë me ndihmën e inteligjencës artificiale është një ëndërr që e kemi prej kohësh. Por, pavarësisht nga disa premtime, ato nuk shihen askund. Lexoni këtë blog për të mësuar më shumë…

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Ndërsa Shkenca evoluon me një ritëm të shpejtë, duke marrë përsipër shumë nga përpjekjet tona, rriten edhe rreziqet për t'iu nënshtruar një Singulariteti të pashpjegueshëm. Lexoni, çfarë mund të thotë singulariteti për ne.

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Lexoni blogun për të njohur shtresat e ndryshme në arkitekturën e të dhënave të mëdha dhe funksionalitetet e tyre në mënyrën më të thjeshtë.

Evolucioni i ruajtjes së të dhënave - Infografik

Evolucioni i ruajtjes së të dhënave - Infografik

Metodat e ruajtjes së të dhënave kanë evoluar mund të jenë që nga lindja e të dhënave. Ky blog mbulon evolucionin e ruajtjes së të dhënave në bazë të një infografike.

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

Në këtë botë të drejtuar nga dixhitali, pajisjet inteligjente të shtëpisë janë bërë një pjesë thelbësore e jetës. Këtu janë disa përfitime të mahnitshme të pajisjeve shtëpiake inteligjente se si ato e bëjnë jetën tonë të vlefshme dhe më të thjeshtë.

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Së fundmi Apple lëshoi ​​macOS Catalina 10.15.4 një përditësim shtesë për të rregulluar problemet, por duket se përditësimi po shkakton më shumë probleme që çojnë në bricking të makinerive mac. Lexoni këtë artikull për të mësuar më shumë