Munazz commited on
Commit
4ca93fe
·
verified ·
1 Parent(s): e417dce

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -3
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
- probability = f"Positive Comment: {prob[0][1]*100:.2f}%, Negative Comment: {prob[0][0]*100:.2f}%"
 
 
 
 
 
 
 
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."