如何将 spaCy 公开为 REST API?

Ral*_*lph 2 python rest spacy

我有兴趣将 spaCy python 库用于我自己的开源项目。我正在寻找的是基于 REST 的 API。通过公共 REST 接口公开 spaCy API 有什么必要或推荐的方法是什么?我已经查看了spaCy 服务和来自jgontrum的spacy-api-docker 项目。但似乎没有可用的官方 REST API,每个人都必须自己做。如果是这样,将 python spaCy 方法/脚本包装到 REST API 中的最佳方法是什么?似乎是这样的框架猎鹰,拥抱和烧瓶帮我做这个。

但是,这是使用这些框架之一编写我自己的 REST API 服务器的推荐方法,还是我已经监督过并且 spaCy 已经通过 REST API 接口可用?

Seb*_*rez 9

spaCy 与任何框架都没有紧密的联系,因此您可以选择自己喜欢的并使用它。


您可能会考虑的另一个选项是FastAPI。例如,这是一个简单的 spaCy 实体识别 API:

from fastapi import FastAPI
from pydantic import BaseModel
import spacy

nlp_en = spacy.load("en_core_web_sm")
app = FastAPI()


class Data(BaseModel):
    text: str


@app.post("/text/")
def extract_entities(data: Data, lang: str):
    doc_en = nlp_en(data.text)
    ents = []
    for ent in doc_en.ents:
        ents.append({"text": ent.text, "label_": ent.label_})
    return {"message": data.text, "lang": lang, "ents": ents}
Run Code Online (Sandbox Code Playgroud)

自动文档 UI 如下所示:

FastAPI 文档用户界面

免责声明:我创建了 FastAPI,这就是我们目前在 Explosion(spaCy 的创建者)中使用的。