forked from SaiHariKiran/sentimental_analysis
-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
37 lines (30 loc) · 1.18 KB
/
app.py
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
36
37
from flask import Flask, request, render_template
import joblib
import nltk
from nltk.corpus import stopwords
from sklearn.feature_extraction.text import CountVectorizer
app = Flask(__name__)
# Load the trained model and vectorizer
model = joblib.load('sentiment_model.pkl')
vectorizer = joblib.load('vectorizer.pkl')
nltk.download('stopwords')
stop_words = set(stopwords.words('english'))
def preprocess_text(text):
text = text.lower()
tokens = nltk.word_tokenize(text)
tokens = [word for word in tokens if word.isalpha() and word not in stop_words]
return ' '.join(tokens)
@app.route('/')
def home():
return render_template('index.html')
@app.route('/predict', methods=['POST'])
def predict():
if request.method == 'POST':
text = request.form['text']
preprocessed_text = preprocess_text(text)
vectorized_text = vectorizer.transform([preprocessed_text])
prediction = model.predict(vectorized_text)
sentiment = 'Positive' if prediction == 1 else 'Negative'
return render_template('index.html', prediction_text=f'Sentiment: {sentiment}')
if __name__ == "__main__":
app.run(debug=True)