Dineflow commited on
Commit
eff95d2
·
verified ·
1 Parent(s): ceb0659

Update handler.py

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