Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, HTTPException, Query | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from pydantic import BaseModel | |
| import pandas as pd | |
| import json | |
| from typing import Dict, Any | |
| import dill as pickle | |
| import sys | |
| from Stopwords import filter_review | |
| app = FastAPI() | |
| #Allow CORS for communication with Angular frontend | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| # Load the model and the vectorizer | |
| try: | |
| with open('./model_1_en.pkl', 'rb') as fin: | |
| model_loaded = pickle.load(fin) | |
| except FileNotFoundError: | |
| print("Error: 'model_1_en.pkl' not found.") | |
| try: | |
| with open('./vectorizer.pkl', 'rb') as fin: | |
| vectorizer = pickle.load(fin) | |
| except FileNotFoundError: | |
| print("Error: 'vectorizer.pkl' not found.") | |
| class Review(BaseModel): | |
| review: str | |
| # Helper function to filter and predict review | |
| def get_prediction(text): | |
| processed_text = filter_review(text) | |
| vectorized_text = vectorizer.transform([processed_text]) | |
| prediction = model_loaded.predict(vectorized_text)[0] | |
| return int(prediction) # Convert to int for JSON serialization | |
| # Endpoint to add a new review | |
| def add_review(review: Review): | |
| try: | |
| # Get the prediction for the new review | |
| prediction = get_prediction(review.review) | |
| if (prediction): | |
| predict = "Positivo" | |
| else: | |
| predict = "Negativo" | |
| return {"status": "success", "review": review, "prediction": predict} | |
| except Exception as e: | |
| raise HTTPException(status_code=500, detail=str(e)) |