File size: 1,511 Bytes
b2f9c3c 0fc39f5 b2f9c3c ade21fe b2f9c3c 874d7b1 b2f9c3c 105b9cf 0fc39f5 ffa5f5d b2f9c3c 0fc39f5 b2f9c3c 86e9506 b2f9c3c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
from sentence_transformers import SentenceTransformer
from fastapi import FastAPI
import pickle
import pandas as pd
from pydantic import BaseModel
from fastapi.middleware.cors import CORSMiddleware
corpus = pickle.load(open("./corpus/all_embeddings.pickle", "rb"))
label_encoder = pickle.load(open("./corpus/label_encoder.pickle", "rb"))
model = SentenceTransformer("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
df = pd.DataFrame(data={"label": pickle.load(open("./corpus/y_all.pickle", "rb"))})
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
class Disease(BaseModel):
id: int
name: str
score: float
@app.get("/")
def greet_json():
return {"Hello": "World!"}
@app.post("/")
async def greet_post():
return {"Hello": "Post World!"}
# @app.post("/", response_model=list[Disease])
# async def predict(query: str):
# query_embedding = model.encode(query).astype('float')
# similarity_vectors = model.similarity(q, all_embeddings)
# scores, indicies = torch.topk(similarity_vectors, k=len(all_embeddings))
# id_ = df.iloc[indicies]
# id_ = df.drop_duplicates("label")
# scores = scores[id_.index]
# diseases = label_encoder.inverse_transform(id_.label.values)
# id_ = id_.label.values
# diseases = [dict("id": value[0], "name": value[1], "score" : value[2]) for value in zip(id_, diseases, scores)]
# return diseases
|