Upload 3 files
Browse files- .gitattributes +1 -0
- IMDB/imdb-002.keras +3 -0
- IMDB/imdb_prediction(flask).py +41 -0
- IMDB/templates/index.html +29 -0
.gitattributes
CHANGED
@@ -34,3 +34,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
imdb-002.keras filter=lfs diff=lfs merge=lfs -text
|
|
|
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
imdb-002.keras filter=lfs diff=lfs merge=lfs -text
|
37 |
+
IMDB/imdb-002.keras filter=lfs diff=lfs merge=lfs -text
|
IMDB/imdb-002.keras
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:856d9433af1a4d677ed11613cad81effd81460a4d1fb469c116ae4d85b5a3c3c
|
3 |
+
size 17628414
|
IMDB/imdb_prediction(flask).py
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from flask import Flask, render_template, request
|
2 |
+
import numpy as np
|
3 |
+
from tensorflow.keras.models import load_model
|
4 |
+
from tensorflow.keras.preprocessing.sequence import pad_sequences
|
5 |
+
from tensorflow.keras.preprocessing.text import tokenizer_from_json
|
6 |
+
import json
|
7 |
+
|
8 |
+
app = Flask(__name__)
|
9 |
+
|
10 |
+
model = load_model('imdb-002.keras')
|
11 |
+
|
12 |
+
with open('D:\Python_vscode\jupyter_notebook\imdb.json') as file:
|
13 |
+
imdb = file.read()
|
14 |
+
token = tokenizer_from_json(imdb)
|
15 |
+
|
16 |
+
def preprocess_text(text, max_length=20):
|
17 |
+
sequ = token.texts_to_sequences([text])
|
18 |
+
pad = pad_sequences(sequ, maxlen = max_length, padding = 'post', truncating = 'post')
|
19 |
+
return pad
|
20 |
+
|
21 |
+
@app.route('/')
|
22 |
+
|
23 |
+
def home():
|
24 |
+
return render_template('index.html')
|
25 |
+
|
26 |
+
@app.route('/predict', methods =['POST'])
|
27 |
+
|
28 |
+
def predict():
|
29 |
+
review = request.form['review']
|
30 |
+
processed_review = preprocess_text(review)
|
31 |
+
|
32 |
+
prediction = model.predict(processed_review)[0][0]
|
33 |
+
if prediction >= 0.5:
|
34 |
+
sentiment = "Positive"
|
35 |
+
else:
|
36 |
+
"Negative"
|
37 |
+
|
38 |
+
return render_template('index.html', review=review, sentiment=sentiment, probability=round(prediction,2))
|
39 |
+
|
40 |
+
if __name__ == '__main__':
|
41 |
+
app.run(debug=True)
|
IMDB/templates/index.html
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="UTF-8">
|
5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6 |
+
<title>Movie Review Sentiment Analysis</title>
|
7 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
|
8 |
+
</head>
|
9 |
+
<body class="bg-light">
|
10 |
+
<div class="container mt-5">
|
11 |
+
<h2 class="text-center">IMDb Sentiment Analysis</h2>
|
12 |
+
<form action="/predict" method="post" class="mt-4">
|
13 |
+
<div class="mb-3">
|
14 |
+
<textarea class="form-control" name="review" rows="4" placeholder="Enter your movie review here " required></textarea>
|
15 |
+
</div>
|
16 |
+
<button type="submit" class="btn btn-primary w-100">Analyze</button>
|
17 |
+
</form>
|
18 |
+
|
19 |
+
{% if review %}
|
20 |
+
<div class="mt-4 p-3 bg-white shadow-sm rounded">
|
21 |
+
<h5>Your Review:</h5>
|
22 |
+
<p>{{ review }}</p>
|
23 |
+
<h5>Sentiment Prediction:</h5>
|
24 |
+
<p class="fw-bold">{{ sentiment }} (Confidence: {{ probability }})</p>
|
25 |
+
</div>
|
26 |
+
{% endif %}
|
27 |
+
</div>
|
28 |
+
</body>
|
29 |
+
</html>
|