如何使用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

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 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。