Переглянути джерело

write model prediction report into csv file

Mohidul Islam 5 роки тому
батько
коміт
9c21505520
1 змінених файлів з 26 додано та 2 видалено
  1. 26 2
      review/model_pred_report.py

+ 26 - 2
review/model_pred_report.py

@@ -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)