Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -13,11 +13,11 @@ rf_model = joblib.load('best_rf_model.pkl')
|
|
| 13 |
vectorizer = joblib.load('vectorizer.pkl')
|
| 14 |
|
| 15 |
# Define the function to predict sentiment
|
| 16 |
-
def predict_sentiment(review_text, model_name):
|
| 17 |
# Preprocess the review text using the same vectorizer used during training
|
| 18 |
transformed_text = vectorizer.transform([review_text]) # This is sparse matrix
|
| 19 |
|
| 20 |
-
# Convert sparse matrix to dense (necessary for SVM)
|
| 21 |
transformed_text_dense = transformed_text.toarray() # Convert sparse matrix to dense array
|
| 22 |
|
| 23 |
# Choose model based on the dropdown selection
|
|
@@ -33,8 +33,16 @@ def predict_sentiment(review_text, model_name):
|
|
| 33 |
# Make predictions and get probabilities
|
| 34 |
if hasattr(model, 'predict_proba'):
|
| 35 |
prob = model.predict_proba(transformed_text_dense) # Use dense matrix here
|
|
|
|
| 36 |
sentiment = model.predict(transformed_text_dense)[0]
|
| 37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
else:
|
| 39 |
sentiment = model.predict(transformed_text_dense)[0]
|
| 40 |
probability = "Model does not support probability estimation."
|
|
|
|
| 13 |
vectorizer = joblib.load('vectorizer.pkl')
|
| 14 |
|
| 15 |
# Define the function to predict sentiment
|
| 16 |
+
def predict_sentiment(review_text, model_name, positive_threshold=0.6):
|
| 17 |
# Preprocess the review text using the same vectorizer used during training
|
| 18 |
transformed_text = vectorizer.transform([review_text]) # This is sparse matrix
|
| 19 |
|
| 20 |
+
# Convert sparse matrix to dense (necessary for SVM and other models)
|
| 21 |
transformed_text_dense = transformed_text.toarray() # Convert sparse matrix to dense array
|
| 22 |
|
| 23 |
# Choose model based on the dropdown selection
|
|
|
|
| 33 |
# Make predictions and get probabilities
|
| 34 |
if hasattr(model, 'predict_proba'):
|
| 35 |
prob = model.predict_proba(transformed_text_dense) # Use dense matrix here
|
| 36 |
+
sentiment_prob = prob[0][1] # Probability of positive sentiment
|
| 37 |
sentiment = model.predict(transformed_text_dense)[0]
|
| 38 |
+
|
| 39 |
+
# Apply threshold to determine sentiment class
|
| 40 |
+
if sentiment_prob >= positive_threshold:
|
| 41 |
+
sentiment_class = "Positive"
|
| 42 |
+
probability = f"Positive Comment: {sentiment_prob*100:.2f}%, Negative Comment: {(1-sentiment_prob)*100:.2f}%"
|
| 43 |
+
else:
|
| 44 |
+
sentiment_class = "Negative"
|
| 45 |
+
probability = f"Positive Comment: {sentiment_prob*100:.2f}%, Negative Comment: {(1-sentiment_prob)*100:.2f}%"
|
| 46 |
else:
|
| 47 |
sentiment = model.predict(transformed_text_dense)[0]
|
| 48 |
probability = "Model does not support probability estimation."
|