Garvitj commited on
Commit
4d02758
·
verified ·
1 Parent(s): c3e8f96

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -10
app.py CHANGED
@@ -1,5 +1,4 @@
1
  import os
2
- import difflib
3
  from groq import Groq
4
  import gradio as gr
5
  from transformers import pipeline
@@ -57,7 +56,7 @@ def extract_text_from_image(filepath: str, languages: List[str]):
57
  def get_embedding(text):
58
  return model1.encode(text, convert_to_tensor=True)
59
 
60
- # Calculate similarity between two texts using cosine similarity
61
  def calculate_similarity(text1, text2):
62
  embedding1 = get_embedding(text1)
63
  embedding2 = get_embedding(text2)
@@ -75,13 +74,21 @@ def assign_badge(grade):
75
  else:
76
  return "Keep Improving Badge 💪"
77
 
78
- # Generate visual feedback by comparing answers
79
- def generate_visual_feedback(student_answer, model_answer):
80
- diff = difflib.ndiff(student_answer.split(), model_answer.split())
81
- highlighted_diff = ' '.join(
82
- [f"**{word}**" if word.startswith('-') else word for word in diff if not word.startswith('?')]
83
- )
84
- return highlighted_diff
 
 
 
 
 
 
 
 
85
 
86
  # Categorize feedback into clarity, completeness, and accuracy
87
  def detailed_feedback(similarity_score):
@@ -113,7 +120,7 @@ def evaluate_answer(image, languages, model_answer):
113
  similarity_score = calculate_similarity(student_answer, model_answer)
114
  grade = get_grade(similarity_score)
115
  feedback = f"Student's answer: {student_answer}\nTeacher's answer: {model_answer}"
116
- visual_feedback = generate_visual_feedback(student_answer, model_answer)
117
  badge = assign_badge(grade)
118
  detailed_feedback_msg = detailed_feedback(similarity_score)
119
  prompt = f"The student got grade: {grade} when the student's answer is: {student_answer} and the teacher's answer is: {model_answer}. Justify the grade given to the student."
 
1
  import os
 
2
  from groq import Groq
3
  import gradio as gr
4
  from transformers import pipeline
 
56
  def get_embedding(text):
57
  return model1.encode(text, convert_to_tensor=True)
58
 
59
+ # Calculate similarity between two texts focusing on sequence
60
  def calculate_similarity(text1, text2):
61
  embedding1 = get_embedding(text1)
62
  embedding2 = get_embedding(text2)
 
74
  else:
75
  return "Keep Improving Badge 💪"
76
 
77
+ # Generate sequence-based feedback
78
+ def generate_sequence_feedback(student_answer, model_answer):
79
+ student_words = student_answer.split()
80
+ model_words = model_answer.split()
81
+ common_sequences = []
82
+
83
+ for i in range(len(student_words)):
84
+ sequence = ' '.join(student_words[i:i+3]) # Compare sequences of 3 words at a time
85
+ if sequence in model_answer:
86
+ common_sequences.append(f"**{sequence}**")
87
+ else:
88
+ common_sequences.append(sequence)
89
+
90
+ highlighted_feedback = ' '.join(common_sequences)
91
+ return highlighted_feedback
92
 
93
  # Categorize feedback into clarity, completeness, and accuracy
94
  def detailed_feedback(similarity_score):
 
120
  similarity_score = calculate_similarity(student_answer, model_answer)
121
  grade = get_grade(similarity_score)
122
  feedback = f"Student's answer: {student_answer}\nTeacher's answer: {model_answer}"
123
+ visual_feedback = generate_sequence_feedback(student_answer, model_answer)
124
  badge = assign_badge(grade)
125
  detailed_feedback_msg = detailed_feedback(similarity_score)
126
  prompt = f"The student got grade: {grade} when the student's answer is: {student_answer} and the teacher's answer is: {model_answer}. Justify the grade given to the student."