CoolFace
Apppublic

numanBot/Customer_feedback_summarization

sourceHugging Faceupdated 3y agoView on Hugging Face
0likes
inference.py63 linesDownload Raw Back to services
1"""Inference file to get Customer Feedback Summary."""2from transformers import (TFAutoModelForSeq2SeqLM,3      TFAutoModelForSequenceClassification, AutoTokenizer)4from config import (SUMMARY_MODEL_NAME, SCORING_MODEL_NAME,5      HF_HUB_SUMMARY_MODEL_NAME, HF_HUB_SCORING_MODEL_NAME,6      GENERATION_PARAMS, PREFIX)7 8 9summary_tokenizer = AutoTokenizer.from_pretrained(SUMMARY_MODEL_NAME)10scoring_tokenizer = AutoTokenizer.from_pretrained(SCORING_MODEL_NAME)11 12try:13  summary_model = TFAutoModelForSeq2SeqLM.from_pretrained(HF_HUB_SUMMARY_MODEL_NAME)14except:15  summary_model = TFAutoModelForSeq2SeqLM.from_pretrained(SUMMARY_MODEL_NAME)16 17try:18  scoring_model = TFAutoModelForSequenceClassification.from_pretrained(HF_HUB_SCORING_MODEL_NAME)19except:20  scoring_model = TFAutoModelForSequenceClassification.from_pretrained(SCORING_MODEL_NAME)21 22 23def get_annotation_score(text, summary):24  """Annotation score for a generated summary.25    Args:26      text: Appended user review on which summary is generated27          Ex: (Twitter: Notion: User: This is a review.)28      summary: Summary for the customer review29          Ex: (User has given a review.)30 31    Returns:32      annotation_score (float): score according to satisfied guidelines 33  """34  args = (text, summary)35  input_ids = scoring_tokenizer(*args, return_tensors="np")36  annotation_score = round(scoring_model(input_ids).logits.numpy()[0][0], 2)37  return annotation_score38 39 40def get_summary_score(request_body):41  """Customer Feedback Summary for a given review.42    Args:43      request_body: Dictionary containing44          customer: Any one of [Notion, figma, zoom]45          type: Any one of [Appstore/Playstore, Twitter, G2]46          feedback: user review for the customer on (type) platform47 48    Returns:49      Dictionary:50          summary: summarized text51          annotation_score: score according to satisfied guidelines 52  """53  customer = request_body.get("customer", "")54  type = request_body.get("type", "")55  feedback = request_body.get("feedback", "")56  appended_text = ": ".join([type, customer, "User", feedback])57  input_text = PREFIX + appended_text58  input_ids = summary_tokenizer(input_text, return_tensors="tf").input_ids59  outputs = summary_model.generate(input_ids, **GENERATION_PARAMS)60  summarized_text = summary_tokenizer.decode(outputs[0], skip_special_tokens=True)61  annotation_score = get_annotation_score(appended_text, summarized_text)62  return {"summary": summarized_text, "annotation_score": annotation_score}63