Update app.py
Browse files
app.py
CHANGED
@@ -111,18 +111,17 @@ def calculate_sentence_similarity(text1, text2):
|
|
111 |
|
112 |
# Function to compare logic of student and teacher answers
|
113 |
def compare_answers(student_answer, teacher_answer):
|
114 |
-
# Use primarily BERT similarity, and sentence embeddings as a secondary method
|
115 |
bert_similarity = calculate_cosine_similarity(get_bert_embedding(student_answer), get_bert_embedding(teacher_answer))
|
116 |
|
117 |
-
#
|
118 |
sentence_similarity = calculate_sentence_similarity(student_answer, teacher_answer)
|
119 |
|
120 |
-
|
|
|
121 |
return final_similarity
|
122 |
|
123 |
# Function to extract keywords from the model answer
|
124 |
def extract_keywords(text):
|
125 |
-
# Split text into words and count them
|
126 |
return set(text.lower().split())
|
127 |
|
128 |
# Adjust grading based on key terms present in student answer
|
@@ -142,8 +141,8 @@ def evaluate_answer(image, languages, model_answer):
|
|
142 |
# Include keyword similarity
|
143 |
keyword_similarity = check_keywords(student_answer, model_answer)
|
144 |
|
145 |
-
# Combine semantic similarity with keyword presence check
|
146 |
-
combined_similarity = (semantic_similarity + keyword_similarity) /
|
147 |
grade = get_grade(combined_similarity)
|
148 |
feedback = f"Student's answer: {student_answer}\nTeacher's answer: {model_answer}"
|
149 |
badge = assign_badge(grade)
|
|
|
111 |
|
112 |
# Function to compare logic of student and teacher answers
|
113 |
def compare_answers(student_answer, teacher_answer):
|
|
|
114 |
bert_similarity = calculate_cosine_similarity(get_bert_embedding(student_answer), get_bert_embedding(teacher_answer))
|
115 |
|
116 |
+
# Emphasize the importance of BERT similarity
|
117 |
sentence_similarity = calculate_sentence_similarity(student_answer, teacher_answer)
|
118 |
|
119 |
+
# Use a higher weight for BERT similarity
|
120 |
+
final_similarity = (0.8 * bert_similarity + 0.2 * sentence_similarity)
|
121 |
return final_similarity
|
122 |
|
123 |
# Function to extract keywords from the model answer
|
124 |
def extract_keywords(text):
|
|
|
125 |
return set(text.lower().split())
|
126 |
|
127 |
# Adjust grading based on key terms present in student answer
|
|
|
141 |
# Include keyword similarity
|
142 |
keyword_similarity = check_keywords(student_answer, model_answer)
|
143 |
|
144 |
+
# Combine semantic similarity with keyword presence check, emphasizing semantic similarity
|
145 |
+
combined_similarity = (semantic_similarity + (0.5 * keyword_similarity)) / 1.5
|
146 |
grade = get_grade(combined_similarity)
|
147 |
feedback = f"Student's answer: {student_answer}\nTeacher's answer: {model_answer}"
|
148 |
badge = assign_badge(grade)
|