瀏覽代碼

Add a management command to export model pred report in a CSV file

Mohidul Islam 5 年之前
父節點
當前提交
6dc3180f9d
共有 2 個文件被更改,包括 27 次插入12 次删除
  1. 16 0
      review/management/commands/model_report.py
  2. 11 12
      review/model_pred_report.py

+ 16 - 0
review/management/commands/model_report.py

@@ -0,0 +1,16 @@
+from django.core.management.base import BaseCommand
+from review.model_pred_report import get_review_report_of_nth_days
+
+
+class Command(BaseCommand):
+
+    help = 'Make a CSV report of model prediction.'
+
+    def add_arguments(self, parser):
+        parser.add_argument('days', type=str, nargs='+',
+                            help='Numbers of days report you want')
+
+    def handle(self, *args, **options):
+        days = int(options['days'][0])
+        get_review_report_of_nth_days(days)
+        self.stdout.write(self.style.SUCCESS(f'Model report of last {days} days has been exported.'))

+ 11 - 12
review/model_pred_report.py

@@ -24,7 +24,6 @@ def model_inference(text):
     for intent in intents_rankings:
         if intent.get('confidence') > 0.3:
             intents.append(intent['name'])
-
     return intents
 
 
@@ -49,14 +48,14 @@ def get_review_report_of_nth_days(days):
 
     # 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)
+        header_row = ['review', 'reply', 'model_inference', 'actual_class', 'classified']
+        writer = csv.writer(file)
+        writer.writerow(header_row)
+        for review in reviews:
+            review_text = review.comment
+            reply = review.reply.replied_text
+            model_pred = model_inference(review_text)
+            actual_class = get_review_actual_intent(review)
+            classified = do_predict_correctly(review, actual_class)
+            row = [review_text, reply, model_pred, actual_class, classified]
+            writer.writerow(row)