File size: 1,443 Bytes
334b424
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c369fec
334b424
c369fec
334b424
 
 
 
 
 
 
 
 
 
 
 
 
 
c369fec
334b424
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
import joblib
import os
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.decomposition import TruncatedSVD

# Define relative file paths (assuming 'models/' is in the same directory as this script)
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
MODEL_PATH = os.path.join(BASE_DIR, "models", "random_forest_model.pkl")
VECTORIZER_PATH = os.path.join(BASE_DIR, "models", "vectorizer.pkl")
SVD_PATH = os.path.join(BASE_DIR, "models", "svd.pkl")

try:
    # Load the trained model, vectorizer, and SVD transformer
    model = joblib.load(MODEL_PATH)
    vectorizer = joblib.load(VECTORIZER_PATH)
    svd = joblib.load(SVD_PATH)
    print(" Model, vectorizer, and SVD loaded successfully!")
except Exception as e:
    print(f" Error loading model files: {e}")
    exit(1)

def predict_text(text: str) -> dict:
    """Preprocess input text and predict using trained model."""
    try:
        X_tfidf = vectorizer.transform([text])  # Convert to TF-IDF
        X_reduced = svd.transform(X_tfidf)  # Apply dimensionality reduction
        prediction = model.predict(X_reduced)[0]  # Predict label (0 or 1)

        probability = float(model.predict_proba(X_reduced)[0][1])
        print(probability)  # Printing probability

        return {"generated": int(prediction), "probability": probability}
    except Exception as e:
        print(f" Prediction error: {e}")
        return {"generated": -1, "probability": 0.0}