Spaces:
Sleeping
Sleeping
from huggingface_hub import hf_hub_download | |
import torch | |
from transformers import AutoModelForSequenceClassification as modelSC, AutoTokenizer as token | |
from fastapi import FastAPI | |
from pydantic import BaseModel | |
import os | |
app = FastAPI() | |
os.makedirs("/app/cache", exist_ok=True) | |
model_path = hf_hub_download(repo_id="MienOlle/sentiment_analysis_api", | |
filename="sentimentAnalysis.pth", | |
cache_dir="/app/cache" | |
) | |
modelToken = token.from_pretrained("mdhugol/indonesia-bert-sentiment-classification") | |
model = modelSC.from_pretrained("mdhugol/indonesia-bert-sentiment-classification", num_labels=3) | |
model.load_state_dict(torch.load(model_path, map_location=torch.device("cpu"))) | |
model.eval() | |
class TextInput(BaseModel): | |
text: str | |
def predict(input): | |
inputs = modelToken(input, return_tensors="pt", padding=True, truncation=True, max_length=512) | |
with torch.no_grad(): | |
outputs = model(**inputs) | |
logits = outputs.logits | |
ret = logits.argmax().item() | |
labels = ["positive", "neutral", "negative"] | |
return {labels[ret]} | |
def get_sentiment(data: TextInput): | |
return predict(data.text) | |
if __name__ == "__main__": | |
import uvicorn | |
uvicorn.run(app, host="0.0.0.0", port=7860) |