Dineflow commited on
Commit
f01947b
·
verified ·
1 Parent(s): 826775d

Update handler.py

Browse files
Files changed (1) hide show
  1. handler.py +56 -54
handler.py CHANGED
@@ -1,54 +1,56 @@
1
- import joblib
2
- import os
3
- import json
4
- import nltk
5
-
6
- # Ensure NLTK data is downloaded
7
- nltk.download('punkt')
8
-
9
- class EndpointHandler:
10
- def __init__(self, model_dir):
11
- self.model_dir = model_dir
12
- self.vectorizer = joblib.load(os.path.join(model_dir, 'vectorizer.joblib'))
13
- self.model = joblib.load(os.path.join(model_dir, 'logistic_classifier.joblib'))
14
-
15
- # Define the custom tokenizer function
16
- self.tokenizer = nltk.word_tokenize
17
-
18
- # Verify that the tokenizer configuration is correct
19
- with open(os.path.join(model_dir, "tokenizer.json"), "r") as file:
20
- tokenizer_config = json.load(file)
21
- if tokenizer_config['tokenizer'] != 'nltk.word_tokenize':
22
- raise ValueError("Tokenizer configuration does not match the expected tokenizer.")
23
-
24
- def predict_rating(self, review):
25
- review_tfidf = self.vectorizer.transform([review])
26
- predicted_rating = self.model.predict(review_tfidf)[0]
27
- return int(predicted_rating)
28
-
29
- def __call__(self, inputs):
30
- try:
31
- inputs_dict = json.loads(inputs)
32
-
33
- if 'review' not in inputs_dict:
34
- return json.dumps({"error": "No valid review provided"})
35
-
36
- review = inputs_dict['review']
37
-
38
- if not review:
39
- return json.dumps({"error": "No valid review provided"})
40
-
41
- predicted_rating = self.predict_rating(review)
42
-
43
- response = {
44
- "review": review,
45
- "predicted_rating": predicted_rating
46
- }
47
-
48
- return json.dumps(response)
49
-
50
- except json.JSONDecodeError:
51
- return json.dumps({"error": "Invalid JSON format"})
52
-
53
- except Exception as e:
54
- return json.dumps({"error": str(e)})
 
 
 
1
+ import nltk
2
+ # Ensure NLTK data is downloaded
3
+ nltk.download('punkt')
4
+
5
+ import joblib
6
+ import os
7
+ import json
8
+
9
+
10
+
11
+ class EndpointHandler:
12
+ def __init__(self, model_dir):
13
+ self.model_dir = model_dir
14
+ self.vectorizer = joblib.load(os.path.join(model_dir, 'vectorizer.joblib'))
15
+ self.model = joblib.load(os.path.join(model_dir, 'logistic_classifier.joblib'))
16
+
17
+ # Define the custom tokenizer function
18
+ self.tokenizer = nltk.word_tokenize
19
+
20
+ # Verify that the tokenizer configuration is correct
21
+ with open(os.path.join(model_dir, "tokenizer.json"), "r") as file:
22
+ tokenizer_config = json.load(file)
23
+ if tokenizer_config['tokenizer'] != 'nltk.word_tokenize':
24
+ raise ValueError("Tokenizer configuration does not match the expected tokenizer.")
25
+
26
+ def predict_rating(self, review):
27
+ review_tfidf = self.vectorizer.transform([review])
28
+ predicted_rating = self.model.predict(review_tfidf)[0]
29
+ return int(predicted_rating)
30
+
31
+ def __call__(self, inputs):
32
+ try:
33
+ inputs_dict = json.loads(inputs)
34
+
35
+ if 'review' not in inputs_dict:
36
+ return json.dumps({"error": "No valid review provided"})
37
+
38
+ review = inputs_dict['review']
39
+
40
+ if not review:
41
+ return json.dumps({"error": "No valid review provided"})
42
+
43
+ predicted_rating = self.predict_rating(review)
44
+
45
+ response = {
46
+ "review": review,
47
+ "predicted_rating": predicted_rating
48
+ }
49
+
50
+ return json.dumps(response)
51
+
52
+ except json.JSONDecodeError:
53
+ return json.dumps({"error": "Invalid JSON format"})
54
+
55
+ except Exception as e:
56
+ return json.dumps({"error": str(e)})