Word2VecとFlaskを使用してディープラーニングREST APIを作成する方法

本番環境で複雑な機械学習モデルを使用する場合、従来の開発アプローチを維持することは困難です。ラップトップまたはローカルマシンでの開発は、ディープラーニングエンジニア向けの機械学習モデルのトレーニングに時間がかかる場合があります。その結果、私たちは通常、より強力なハードウェアを備えたクラウドマシンを使用して、機械学習モデルのトレーニングと実行の両方を行います。複雑な計算を抽象化し、代わりに必要に応じてAJAXリクエストを行うため、これは良い方法です。このチュートリアルでは、REST APIを一から構築して、事前トレーニング済みのWord2Vecというディープラーニングモデルを他のサービスで利用できるようにします。

前提条件

  • 4GB以上のRAMを備えたUbuntu 16.04サーバーインスタンス。テストと開発の目的で、4GB RAMのインスタンスを選択できます
  • Linuxオペレーティングシステムを使用してフォルダーとファイルを作成/移動/編集する方法の理解
  • sudoユーザー

単語の埋め込みとは何ですか?

単語の埋め込みは、自然言語処理とディープラーニングの最近の発展であり、急速な進歩により両方の分野に革命をもたらしました。単語の埋め込みは、基本的にはベクトルであり、それぞれが単一の単語に対応するため、ベクトルは単語を意味します。これは、のベクトルなどの特定の現象によって示されking - queen = boy - girlます。単語ベクトルは、レコメンデーションエンジンから実際に英語を理解するチャットボットまで、あらゆるものを構築するために使用されます。

単語の埋め込みはランダムではありません。これらは、ニューラルネットワークをトレーニングすることによって生成されます。最近の強力な単語埋め込みの実装は、Word2Vecという名前のGoogleに由来しています。これは、言語内の他の単語の隣に現れる単語を予測することによってトレーニングされます。たとえば、単語の"cat"場合、ニューラルネットワークは単語"kitten"とを予測します"feline"。互いに近くに現れる単語のこの直感は、ベクトル空間にそれらを配置することを可能にします。

ただし、実際には、Googleのような他の大企業の事前トレーニング済みモデルを使用して、プロトタイプを迅速に作成し、導入プロセスを簡略化する傾向があります。このチュートリアルでは、GoogleのWord2Vec事前トレーニング済み単語埋め込みをダウンロードして使用します。これを行うには、作業ディレクトリで次のコマンドを実行します。

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

FlaskおよびMagnitudeパッケージのインストール

ダウンロードした単語埋め込みモデルは、ある.magnitude形式です。この形式により、SQLを使用してモデルに効率的にクエリを実行できるため、運用サーバーに最適な埋め込み形式です。.magnitudeフォーマットを読み取る必要があるため、pymagnitudeパッケージをインストールします。またflask、モデルによって行われたディープラーニング予測を後で提供するためにインストールします。

pip3 install pymagnitude flask

また、次のコマンドを使用して、依存関係トラッカーに追加します。これにより、という名前のファイルが作成され、requirements.txtPythonライブラリが保存されるため、後で再インストールできます。

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の中核として、2つの単語の意味の違いを返す関数を定義します。これは、レコメンデーションエンジンなどのほとんどのディープラーニングソリューションのバックボーンです(つまり、類似した単語でコンテンツを表示する)。

similarityand 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次の内容のファイルにサーバーを作成します。サーバー機能をインポートflaskrequestて処理し、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

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

Ubuntu 14.10へのMcMyAdminのインストール

Ubuntu 14.10へのMcMyAdminのインストール

McMyAdminは、サーバーの管理に使用されるMinecraftサーバーコントロールパネルです。McMyAdminは無料ですが、複数のエディションがあり、一部はパイです

LinuxでTeamTalk Serverをセットアップする

LinuxでTeamTalk Serverをセットアップする

TeamTalkは、ユーザーが高品質のオーディオ/ビデオ会話、テキストチャット、ファイルの転送、および画面の共有を可能にする会議システムです。それは

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Ubuntu 17.04でRbenv、Rails、MariaDB、Nginx、SSL、およびPassengerを使用してRubyをインストールおよび構成する方法

Ubuntu 17.04でRbenv、Rails、MariaDB、Nginx、SSL、およびPassengerを使用してRubyをインストールおよび構成する方法

Ruby on Railsは、プログラマーの生産性を向上させるために開発されたRubyの人気のあるWebフレームワークです。ただし、さまざまな宝石と依存関係を取得する

Vultr VPSにアクセスする方法

Vultr VPSにアクセスする方法

Vultrは、VPSにアクセスして構成、インストール、および使用するためのいくつかの異なる方法を提供します。アクセス認証情報VPS arのデフォルトのアクセス認証情報

CentOS 7、Ubuntu 16.04、Debian 9にGolang 1.8.3をインストールする方法

CentOS 7、Ubuntu 16.04、Debian 9にGolang 1.8.3をインストールする方法

GolangはGoogleが開発したプログラミング言語です。汎用性、シンプルさ、信頼性のおかげで、Golangは最も人気のあるものの1つになりました

Debian、CentOS、およびFreeBSDでSudoを使用する方法

Debian、CentOS、およびFreeBSDでSudoを使用する方法

LinuxおよびUnixのシステム管理者の間では、sudoユーザーを使用してサーバーにアクセスし、コマンドをルートレベルで実行することは非常に一般的です。sudの使用

Ubuntu 16.04 LTSにDokuWikiをインストールする方法

Ubuntu 16.04 LTSにDokuWikiをインストールする方法

別のシステムを使用していますか?DokuWikiは、データベースを必要としないPHPで記述されたオープンソースのWikiプログラムです。データをテキストファイルに保存します。ドクウィク

DebianでのChrootのセットアップ

DebianでのChrootのセットアップ

この記事では、Debianでchroot jailをセットアップする方法を説明します。私はあなたがDebian 7.xを使っていると思います。Debian 6または8を実行している場合、これは機能する可能性があります、bu

DebianにPiVPNをインストールする方法

DebianにPiVPNをインストールする方法

はじめにDebianでVPNサーバーを設定する簡単な方法は、PiVPNを使用することです。PiVPNは、OpenVPNのインストーラーおよびラッパーです。それはあなたのための簡単なコマンドを作成します

Ubuntu 18.04 LTSにCyber​​Panelをインストールして構成する方法

Ubuntu 18.04 LTSにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Ubuntu 16.04 LAMP VPSにBigTree CMSをインストールする方法

Ubuntu 16.04 LAMP VPSにBigTree CMSをインストールする方法

別のシステムを使用していますか?BigTree CMS 4.2は、高速で軽量な無料のオープンソースのエンタープライズグレードのコンテンツ管理システム(CMS)であり、

Debian 9でソースからBrotliをビルドする方法

Debian 9でソースからBrotliをビルドする方法

別のシステムを使用していますか?Brotliは、Gzipよりも圧縮率が高い新しい圧縮方法です。そのソースコードはGithubで公開されています。ティ

PleskサーバーでHTTP / 2を有効にする方法

PleskサーバーでHTTP / 2を有効にする方法

PleskはネイティブのHTTP / 2サポートを備えています。PleskでのHTTP / 2のロールアウトは、他のコンポーネントに比べてはるかに簡単ですが、その導入プロセスには慎重な計画が必要です

FreeBSD 12にosTicketをインストールする方法

FreeBSD 12にosTicketをインストールする方法

別のシステムを使用していますか?osTicketは、オープンソースのカスタマーサポートチケットシステムです。osTicketのソースコードはGithubで公開されています。このチュートリアルでは

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。