如何使用Word2Vec和Flask创建深度学习REST API

在生产中使用复杂的机器学习模型时,传统的开发方法难以维护。在笔记本电脑或本地计算机上进行开发可能会很慢,无法为深度学习工程师训练机器学习模型。因此,我们通常会使用具有更强大硬件的云机器来训练和运行我们的机器学习模型。这是一个好习惯,因为我们抽象了复杂的计算,而是根据需要发出AJAX请求。在本教程中,我们将通过从头开始构建REST API,使预训练的深度学习模型Word2Vec可用于其他服务。

先决条件

  • 具有至少4GB RAM的Ubuntu 16.04服务器实例。为了进行测试和开发,您可以选择具有4GB RAM的实例
  • 了解如何使用Linux操作系统创建/导航/编辑文件夹和文件
  • 一个sudo用户

什么是词嵌入?

词嵌入是自然语言处理和深度学习的最新发展,由于快速发展,这已彻底改变了这两个领域。词嵌入本质上是向量,每个向量对应于一个词,因此向量表示这些词。这可以通过某些现象来证明,例如的向量king - queen = boy - girl。单词向量用于构建从推荐引擎到实际理解英语的聊天机器人的所有内容。

单词嵌入不是随机的;它们是通过训练神经网络生成的。最近一种功能强大的词嵌入实现来自Google,名为Word2Vec,它通过预测语言中与其他词相邻的词来进行训练。例如,对于单词"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.txt并保存我们的Python库,以便我们以后可以重新安装它们。

pip3 freeze > requirements.txt

查询Word2Vec模型

首先,我们将创建一个文件来处理单词嵌入的打开和查询。

touch model.py

接下来,我们将添加以下几行model.py以导入Magnitude。

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

pymagnitude通过使用该query方法,我们可以使用包和深度学习模型,为一个单词提供一个参数。

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

对于我们API的核心,我们将定义一个函数来返回两个单词之间的含义差异。这是用于诸如推荐引擎之类的大多数深度学习解决方案的骨干(即显示具有相似词的内容)。

我们可以使用similaritymost_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上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息