如何将 spaCy 公开为 REST API?
How to expose spaCy as a REST API?
我有兴趣将 spaCy python 库用于我自己的开源项目。我要搜索的是基于 REST 的 API。通过通用 REST 接口公开 spaCy API 有什么必要或推荐的方法是什么?我已经查看了 spaCy services and the spacy-api-docker project form jgontrum. But it seems there is no offical REST API available and everyone have to do it by himself. If so, what is the best way to wrap a python spaCy method/script into a REST API? There seems to be frameworks like falcon, hug and flask 以帮助我完成此操作。
但是,使用这些框架之一编写我自己的 REST API 服务器是否是推荐的方法,或者是否有一些我已经监督并且 spaCy 已经可以通过 REST API 接口使用的方法?
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}
自动文档 UI 如下所示:
免责声明:我创建了 FastAPI,这就是我们目前在 Explosion(spaCy 的创建者)中使用的东西。
我有兴趣将 spaCy python 库用于我自己的开源项目。我要搜索的是基于 REST 的 API。通过通用 REST 接口公开 spaCy API 有什么必要或推荐的方法是什么?我已经查看了 spaCy services and the spacy-api-docker project form jgontrum. But it seems there is no offical REST API available and everyone have to do it by himself. If so, what is the best way to wrap a python spaCy method/script into a REST API? There seems to be frameworks like falcon, hug and flask 以帮助我完成此操作。
但是,使用这些框架之一编写我自己的 REST API 服务器是否是推荐的方法,或者是否有一些我已经监督并且 spaCy 已经可以通过 REST API 接口使用的方法?
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}
自动文档 UI 如下所示:
免责声明:我创建了 FastAPI,这就是我们目前在 Explosion(spaCy 的创建者)中使用的东西。