Bagaimana Membuat API REST Learning Deep Dengan Word2Vec dan Flask

Pendekatan tradisional terhadap pembangunan sukar dijaga apabila menggunakan model pembelajaran mesin kompleks dalam pengeluaran. Pembangunan pada komputer riba atau mesin tempatan boleh menjadi lambat untuk melatih model pembelajaran mesin untuk jurutera pembelajaran yang mendalam. Hasilnya, kami biasanya menggunakan mesin cloud dengan perkakasan yang lebih kuat untuk melatih dan menjalankan model pembelajaran mesin kami. Ini adalah amalan yang baik kerana kita mengira pengiraan yang kompleks dan sebaliknya membuat permintaan AJAX seperti yang diperlukan. Dalam tutorial ini, kami akan membuat model pembelajaran mendalam yang terdahulu yang dinamakan Word2Vec tersedia untuk perkhidmatan lain dengan membina API REST dari bawah ke atas.

Prasyarat

  • Contoh pelayan Ubuntu 16.04 dengan sekurang-kurangnya 4GB RAM. Untuk tujuan pengujian dan pengembangan, anda dapat memilih instance dengan RAM 4GB
  • Memahami cara menggunakan sistem operasi Linux untuk membuat / menavigasi / mengedit folder dan fail
  • Seorang sudopengguna

Apakah Penyataan Kata?

Penyisipan kata adalah perkembangan baru-baru ini dalam pemrosesan bahasa semula jadi dan pembelajaran mendalam yang telah merevolusikan kedua bidang kerana kemajuan yang pesat. Penyisipan kata pada dasarnya adalah vektor yang masing-masing sesuai dengan satu kata sehingga vektor bermaksud perkataan. Ini dapat ditunjukkan oleh fenomena tertentu seperti vektor untuk king - queen = boy - girl. Vektor kata digunakan untuk membina segalanya dari mesin cadangan hingga bot sembang yang benar-benar memahami bahasa Inggeris.

Perkahwinan perkataan tidak rawak; ia dijana dengan melatih rangkaian saraf. Pelaksanaan embedding perkataan berkuasa baru-baru ini datang dari Google bernama Word2Vec yang dilatih dengan meramalkan kata-kata yang muncul di sebelah kata-kata lain dalam bahasa. Sebagai contoh, untuk perkataan "cat", rangkaian saraf akan meramalkan perkataan "kitten"dan "feline". Intuisi kata-kata yang muncul berhampiran satu sama lain membolehkan kita meletakkannya di ruang vektor.

Walau bagaimanapun, dalam praktiknya, kita cenderung menggunakan model pra-terlatih syarikat-syarikat besar lain seperti Google untuk mempercepatkan prototaip dan mempermudah proses penyebaran. Dalam tutorial ini, kami akan memuat turun dan menggunakan perkahwinan perkataan Word2Vec Google yang terlatih. Kita boleh melakukan ini dengan menjalankan arahan berikut dalam direktori kerja kami.

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

Memasang Flask dan Pakej Magnitud

Model embedding perkataan yang dimuat turun kami dalam .magnitudeformat. Format ini membolehkan kami untuk mengkaji model dengan cekap menggunakan SQL, dan oleh itu format penyemakan optimum untuk pelayan pengeluaran. Oleh kerana kita perlu membaca .magnitudeformat, kita akan memasang pymagnitudepakej tersebut. Kami juga akan memasang flaskuntuk kemudian menyampaikan ramalan pembelajaran mendalam yang dibuat oleh model.

pip3 install pymagnitude flask

Kami juga akan menambahnya kepada pelacak pergantungan kami dengan arahan berikut. Ini mewujudkan fail bernama requirements.txtdan menyelamatkan perpustakaan Python kami supaya kami boleh memasangnya semula pada masa akan datang.

pip3 freeze > requirements.txt

Meminta Model Word2Vec

Untuk memulakan, kami akan membuat fail untuk mengendalikan pembukaan dan pertanyaan perkahwinan perkataan.

touch model.py

Seterusnya, kami akan menambah garisan berikut model.pyuntuk mengimport magnitud.

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

Kita boleh bermain-main dengan pymagnitudepakej dan model pembelajaran mendalam dengan menggunakan querykaedah ini, memberikan hujah untuk satu perkataan.

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

Untuk inti API kami, kami akan menentukan fungsi untuk mengembalikan perbezaan makna antara dua perkataan. Ini adalah tulang belakang bagi kebanyakan penyelesaian pembelajaran mendalam untuk perkara seperti mesin cadangan (iaitu menunjukkan kandungan dengan perkataan yang serupa).

Kita boleh bermain-main dengan fungsi ini dengan menggunakan similaritydan most_similar fungsi.

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

Kami melaksanakan kalkulator keserupaan seperti berikut. Kaedah ini akan dipanggil oleh Flask API di bahagian seterusnya. Perhatikan bahawa fungsi ini mengembalikan nilai sebenar antara 0 dan 1.

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

Mewujudkan API REST

Kami akan membuat pelayan kami dalam fail bernama service.pydengan kandungan berikut. Kami mengimport flaskdan requestmengendalikan keupayaan pelayan kami dan kami mengimport similarityenjin dari modul yang kami tulis sebelum ini.

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)

Pelayan kami agak tulang yang telanjang, tetapi dengan mudah boleh dilanjutkan dengan membuat lebih banyak laluan menggunakan @app.routepenghias.

Membuat Panggilan API

Kami boleh menjalankan pelayan Flask kami dengan menjalankan arahan berikut untuk mengaktifkan persekitaran maya kami, memasang pakej kami, dan menjalankan fail Python yang berkaitan.

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

Pelayan kami akan tersedia di localhost:8000. Kami boleh menanyakan pangkalan data kami localhost:8000/similarity?word1=cat&word2=dogdan melihat respons sama ada dalam pelayar kami atau melalui klien AJAX yang lain.



Leave a Comment

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut