Update app.py
Browse files
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
|
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
|
79 |
-
def
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 =
|
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."
|