|
|
|
|
|
from fastapi import FastAPI |
|
from pydantic import BaseModel |
|
from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline |
|
|
|
app = FastAPI() |
|
|
|
|
|
model_name = "gyesibiney/Sentiment-review-analysis-roberta-3" |
|
model = AutoModelForSequenceClassification.from_pretrained(model_name) |
|
tokenizer = AutoTokenizer.from_pretrained(model_name) |
|
|
|
|
|
sentiment = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer) |
|
|
|
|
|
class SentimentRequest(BaseModel): |
|
text: str |
|
|
|
|
|
class SentimentResponse(BaseModel): |
|
sentiment: str |
|
score: float |
|
|
|
|
|
@app.post("/sentiment/") |
|
async def analyze_sentiment(request: SentimentRequest): |
|
input_text = request.text |
|
result = sentiment(input_text) |
|
sentiment_label = result[0]["label"] |
|
sentiment_score = result[0]["score"] |
|
|
|
if sentiment_label == "LABEL_1": |
|
sentiment_label = "positive" |
|
elif sentiment_label == "LABEL_0": |
|
sentiment_label = "neutral" |
|
else: |
|
sentiment_label = "negative" |
|
|
|
return SentimentResponse(sentiment=sentiment_label.capitalize(), score=sentiment_score) |
|
|
|
if __name__ == "__main__": |
|
import uvicorn |
|
uvicorn.run(app, host="0.0.0.0", port=8000) |
|
|