Update app.py
Browse files
app.py
CHANGED
@@ -8,6 +8,7 @@ from typing import List
|
|
8 |
import torch
|
9 |
from transformers import BertTokenizer, BertModel
|
10 |
import torch.nn.functional as F
|
|
|
11 |
|
12 |
# Load pre-trained models
|
13 |
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
|
@@ -23,6 +24,9 @@ system_prompt = {
|
|
23 |
"content": "You are a useful assistant. You reply with efficient answers."
|
24 |
}
|
25 |
|
|
|
|
|
|
|
26 |
async def chat_groq(message, history):
|
27 |
messages = [system_prompt]
|
28 |
for msg in history:
|
@@ -99,12 +103,26 @@ def calculate_sentence_similarity(text1, text2):
|
|
99 |
embedding2 = sentence_model.encode(text2, convert_to_tensor=True)
|
100 |
return util.pytorch_cos_sim(embedding1, embedding2).item()
|
101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
def compare_answers(student_answer, teacher_answer):
|
103 |
bert_similarity = calculate_cosine_similarity(get_bert_embedding(student_answer), get_bert_embedding(teacher_answer))
|
104 |
sentence_similarity = calculate_sentence_similarity(student_answer, teacher_answer)
|
105 |
-
|
106 |
# Use a higher weight for BERT similarity
|
107 |
-
|
|
|
|
|
|
|
|
|
|
|
108 |
return final_similarity
|
109 |
|
110 |
def extract_keywords(text):
|
|
|
8 |
import torch
|
9 |
from transformers import BertTokenizer, BertModel
|
10 |
import torch.nn.functional as F
|
11 |
+
import language_tool_python # Import LanguageTool for grammar checking
|
12 |
|
13 |
# Load pre-trained models
|
14 |
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
|
|
|
24 |
"content": "You are a useful assistant. You reply with efficient answers."
|
25 |
}
|
26 |
|
27 |
+
# Initialize grammar checker
|
28 |
+
tool = language_tool_python.LanguageTool('en-US')
|
29 |
+
|
30 |
async def chat_groq(message, history):
|
31 |
messages = [system_prompt]
|
32 |
for msg in history:
|
|
|
103 |
embedding2 = sentence_model.encode(text2, convert_to_tensor=True)
|
104 |
return util.pytorch_cos_sim(embedding1, embedding2).item()
|
105 |
|
106 |
+
def check_grammar(student_answer):
|
107 |
+
# Check grammar using LanguageTool
|
108 |
+
matches = tool.check(student_answer)
|
109 |
+
errors = len(matches)
|
110 |
+
|
111 |
+
# Apply a penalty based on the number of grammar errors
|
112 |
+
penalty = 1 - min(0.1 * errors, 0.5) # Maximum penalty is 50%
|
113 |
+
return penalty
|
114 |
+
|
115 |
def compare_answers(student_answer, teacher_answer):
|
116 |
bert_similarity = calculate_cosine_similarity(get_bert_embedding(student_answer), get_bert_embedding(teacher_answer))
|
117 |
sentence_similarity = calculate_sentence_similarity(student_answer, teacher_answer)
|
118 |
+
|
119 |
# Use a higher weight for BERT similarity
|
120 |
+
semantic_similarity = (0.75 * bert_similarity + 0.25 * sentence_similarity)
|
121 |
+
|
122 |
+
# Apply grammar penalty
|
123 |
+
grammar_penalty = check_grammar(student_answer)
|
124 |
+
final_similarity = semantic_similarity * grammar_penalty
|
125 |
+
|
126 |
return final_similarity
|
127 |
|
128 |
def extract_keywords(text):
|