|
@@ -7,6 +7,7 @@ from django.conf import settings
|
|
from nlu_job.nlu_utils import clean_text
|
|
from nlu_job.nlu_utils import clean_text
|
|
|
|
|
|
from .models import Review, CustomReply
|
|
from .models import Review, CustomReply
|
|
|
|
+from facebook_app.models import FacebookReview
|
|
|
|
|
|
|
|
|
|
# constants
|
|
# constants
|
|
@@ -23,18 +24,18 @@ def model_inference(text):
|
|
if response.status_code == 200:
|
|
if response.status_code == 200:
|
|
res = response.json()
|
|
res = response.json()
|
|
res_intents = res.get('response').get('intents')
|
|
res_intents = res.get('response').get('intents')
|
|
|
|
+ # print(res_intents)
|
|
intents = []
|
|
intents = []
|
|
- for k, v in res_intents:
|
|
|
|
- if v <= 0.3:
|
|
|
|
|
|
+ for k, v in res_intents.items():
|
|
|
|
+ if float(v) >= 0.3:
|
|
intents.append(k)
|
|
intents.append(k)
|
|
return intents
|
|
return intents
|
|
|
|
|
|
|
|
|
|
-def get_review_actual_intent(review):
|
|
|
|
- actual_reply = review.reply.replied_text
|
|
|
|
|
|
+def get_review_actual_intent(reply):
|
|
for c_r in replies:
|
|
for c_r in replies:
|
|
replied_text = c_r.reply
|
|
replied_text = c_r.reply
|
|
- similarity = SequenceMatcher(None, actual_reply, replied_text).ratio()
|
|
|
|
|
|
+ similarity = SequenceMatcher(None, reply, replied_text).ratio()
|
|
if similarity > 0.7:
|
|
if similarity > 0.7:
|
|
return c_r.reply_category
|
|
return c_r.reply_category
|
|
return None
|
|
return None
|
|
@@ -47,10 +48,10 @@ def do_predict_correctly(review, actual_intent):
|
|
|
|
|
|
def get_review_report_of_nth_days(days):
|
|
def get_review_report_of_nth_days(days):
|
|
date = timezone.now() - timezone.timedelta(days=days)
|
|
date = timezone.now() - timezone.timedelta(days=days)
|
|
- reviews = Review.objects.filter(create_time__gte=date, star_rating__gte=4).exclude(comment=None)
|
|
|
|
|
|
+ reviews = Review.objects.filter(create_time__gte=date, star_rating__gte=4).exclude(comment=None).exclude(reply=None)
|
|
|
|
|
|
# Write report into a csv
|
|
# Write report into a csv
|
|
- with open('review_report.csv', 'w') as file:
|
|
|
|
|
|
+ with open(f'{days}_day_review_report.csv', 'w') as file:
|
|
header_row = ['review', 'reply', 'model_inference', 'actual_class', 'classified']
|
|
header_row = ['review', 'reply', 'model_inference', 'actual_class', 'classified']
|
|
writer = csv.writer(file)
|
|
writer = csv.writer(file)
|
|
writer.writerow(header_row)
|
|
writer.writerow(header_row)
|
|
@@ -58,7 +59,27 @@ def get_review_report_of_nth_days(days):
|
|
review_text = review.comment
|
|
review_text = review.comment
|
|
reply = review.reply.replied_text
|
|
reply = review.reply.replied_text
|
|
model_pred = model_inference(review_text)
|
|
model_pred = model_inference(review_text)
|
|
- actual_class = get_review_actual_intent(review)
|
|
|
|
|
|
+ actual_class = get_review_actual_intent(reply)
|
|
classified = do_predict_correctly(review, actual_class)
|
|
classified = do_predict_correctly(review, actual_class)
|
|
row = [review_text, reply, model_pred, actual_class, classified]
|
|
row = [review_text, reply, model_pred, actual_class, classified]
|
|
writer.writerow(row)
|
|
writer.writerow(row)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def making_dataset():
|
|
|
|
+ google_reviews = Review.objects.all().exclude(comment=None).exclude(reply=None)
|
|
|
|
+ facebook_reviews = FacebookReview.objects.all().exclude(facebookreviewreply=None).exclude(review_text=None)
|
|
|
|
+ with open('review-dataset.csv', 'w') as file:
|
|
|
|
+ header_row = ['review', 'reply', 'class', 'platform']
|
|
|
|
+ writer = csv.writer(file)
|
|
|
|
+ writer.writerow(header_row)
|
|
|
|
+ for review in google_reviews:
|
|
|
|
+ review_text = review.comment
|
|
|
|
+ reply_text = review.reply.replied_text
|
|
|
|
+ label = get_review_actual_intent(reply_text)
|
|
|
|
+ writer.writerow([review_text, reply_text, label, 'google'])
|
|
|
|
+
|
|
|
|
+ for rev in facebook_reviews:
|
|
|
|
+ review_text = rev.review_text
|
|
|
|
+ reply_text = rev.facebookreviewreply.replied_text
|
|
|
|
+ label = get_review_actual_intent(reply_text)
|
|
|
|
+ writer.writerow([review_text, reply_text, label, 'facebook'])
|