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)
|