|
@@ -1,6 +1,6 @@
|
|
|
+import csv
|
|
|
import json
|
|
|
import requests
|
|
|
-import csv
|
|
|
from difflib import SequenceMatcher
|
|
|
from django.utils import timezone
|
|
|
|
|
@@ -22,7 +22,7 @@ def model_inference(text):
|
|
|
intents_rankings = res.get('intent_ranking')
|
|
|
intents = []
|
|
|
for intent in intents_rankings:
|
|
|
- if intent.get('confidence') > 0.2:
|
|
|
+ if intent.get('confidence') > 0.3:
|
|
|
intents.append(intent['name'])
|
|
|
|
|
|
return intents
|
|
@@ -36,3 +36,27 @@ def get_review_actual_intent(review):
|
|
|
if similarity > 0.7:
|
|
|
return c_r.reply_category
|
|
|
return None
|
|
|
+
|
|
|
+
|
|
|
+def do_predict_correctly(review, actual_intent):
|
|
|
+ intents = model_inference(review.comment)
|
|
|
+ return 1 if actual_intent in intents else 0
|
|
|
+
|
|
|
+
|
|
|
+def get_review_report_of_nth_days(days):
|
|
|
+ date = timezone.now() - timezone.timedelta(days=days)
|
|
|
+ reviews = Review.objects.filter(create_time__gte=date, star_rating__gte=4).exclude(comment=None)
|
|
|
+
|
|
|
+ # Write report into a csv
|
|
|
+ with open('review_report.csv', 'w') as file:
|
|
|
+ header_row = ['review', 'reply', 'model_inference', 'actual_class', 'classified']
|
|
|
+ writer = csv.writer(file)
|
|
|
+ writer.writerow(header_row)
|
|
|
+ for rev in reviews:
|
|
|
+ review_text = review.comment
|
|
|
+ reply = review.reply.replied_text
|
|
|
+ model_inference = model_inference(review_text)
|
|
|
+ actual_class = get_review_actual_intent(review)
|
|
|
+ classified = do_predict_correctly(review, actual_class)
|
|
|
+ row = [review_text, reply, model_inference, actual_class, classified]
|
|
|
+ writer.writerow(row)
|