aabdoo234 commited on
Commit
45eaa63
·
verified ·
1 Parent(s): cfe9d21

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -57
app.py CHANGED
@@ -15,11 +15,11 @@ tokenizer = tokenizer_from_json(tokenizer_data)
15
  max_sequence_length = 500
16
  languages = ["C", "C++", "JAVA", "Python"]
17
 
18
- try:
19
- with open("feedback.json", "r") as f:
20
- feedback_data = json.load(f)
21
- except FileNotFoundError:
22
- feedback_data = []
23
 
24
  def predict_language(code_snippet):
25
  seq = tokenizer.texts_to_sequences([code_snippet])
@@ -29,48 +29,48 @@ def predict_language(code_snippet):
29
  predicted_language = languages[np.argmax(predictions)]
30
  return predicted_language, confidence_scores
31
 
32
- def provide_feedback(code_snippet, predicted_language, feedback, correct_language=None):
33
- global feedback_data
34
-
35
- feedback_entry = {
36
- "code": code_snippet,
37
- "predicted_language": predicted_language,
38
- "feedback": feedback,
39
- "correct_language": correct_language if feedback == "Incorrect" else predicted_language
40
- }
41
- feedback_data.append(feedback_entry)
42
-
43
- # Save feedback to file
44
- with open("feedback.json", "w") as f:
45
- json.dump(feedback_data, f, indent=4)
46
-
47
- if feedback == "Incorrect":
48
- retrain_model()
49
-
50
- return "Thank you for your feedback!"
51
-
52
- def retrain_model():
53
- global model
54
- # Prepare the feedback data (new training data)
55
- if feedback_data.count("Incorrect") < 10: # Minimum 10 incorrect feedbacks required to retrain
56
- return
57
- feedback_texts = [entry["code"] for entry in feedback_data]
58
- feedback_labels = [entry["correct_language"] for entry in feedback_data]
59
-
60
- # Tokenize and pad the new data
61
- seq = tokenizer.texts_to_sequences(feedback_texts)
62
- padded_seq = pad_sequences(seq, maxlen=max_sequence_length, padding='post', truncating='post')
63
-
64
- # Convert labels to categorical (one-hot encoding)
65
- labels = [languages.index(lang) for lang in feedback_labels]
66
- labels = to_categorical(labels, num_classes=len(languages))
67
-
68
- # Retrain the model
69
- model.fit(padded_seq, labels, epochs=2, batch_size=32, verbose=1)
70
- feedback_data = [] # Clear the feedback data after retraining
71
- # Save the retrained model
72
- # model.save("code_language_cnn_retrained.keras")
73
- print("Model retrained")
74
 
75
  # Define Gradio components
76
  def interface_func(code_snippet):
@@ -85,10 +85,10 @@ with gr.Blocks() as demo:
85
  predicted_label = gr.Label(label="Predicted Language")
86
  confidence_output = gr.JSON(label="Confidence Scores")
87
 
88
- feedback_dropdown = gr.Radio(["Correct", "Incorrect"], label="Was the prediction correct?")
89
- correct_language_dropdown = gr.Dropdown(languages, label="If incorrect, select the correct language (optional)")
90
- feedback_button = gr.Button("Submit Feedback")
91
- feedback_message = gr.Label(label="Feedback Status")
92
 
93
  # Prediction workflow
94
  predict_button.click(
@@ -98,11 +98,11 @@ with gr.Blocks() as demo:
98
  )
99
 
100
  # Feedback workflow
101
- feedback_button.click(
102
- provide_feedback,
103
- inputs=[code_input, predicted_label, feedback_dropdown, correct_language_dropdown],
104
- outputs=[feedback_message]
105
- )
106
 
107
  # Launch the interface
108
- demo.launch(share=True)
 
15
  max_sequence_length = 500
16
  languages = ["C", "C++", "JAVA", "Python"]
17
 
18
+ # try:
19
+ # with open("feedback.json", "r") as f:
20
+ # feedback_data = json.load(f)
21
+ # except FileNotFoundError:
22
+ # feedback_data = []
23
 
24
  def predict_language(code_snippet):
25
  seq = tokenizer.texts_to_sequences([code_snippet])
 
29
  predicted_language = languages[np.argmax(predictions)]
30
  return predicted_language, confidence_scores
31
 
32
+ # def provide_feedback(code_snippet, predicted_language, feedback, correct_language=None):
33
+ # global feedback_data
34
+
35
+ # feedback_entry = {
36
+ # "code": code_snippet,
37
+ # "predicted_language": predicted_language,
38
+ # "feedback": feedback,
39
+ # "correct_language": correct_language if feedback == "Incorrect" else predicted_language
40
+ # }
41
+ # feedback_data.append(feedback_entry)
42
+
43
+ # # Save feedback to file
44
+ # with open("feedback.json", "w") as f:
45
+ # json.dump(feedback_data, f, indent=4)
46
+
47
+ # if feedback == "Incorrect":
48
+ # retrain_model()
49
+
50
+ # return "Thank you for your feedback!"
51
+
52
+ # def retrain_model():
53
+ # global model
54
+ # # Prepare the feedback data (new training data)
55
+ # if feedback_data.count("Incorrect") < 10: # Minimum 10 incorrect feedbacks required to retrain
56
+ # return
57
+ # feedback_texts = [entry["code"] for entry in feedback_data]
58
+ # feedback_labels = [entry["correct_language"] for entry in feedback_data]
59
+
60
+ # # Tokenize and pad the new data
61
+ # seq = tokenizer.texts_to_sequences(feedback_texts)
62
+ # padded_seq = pad_sequences(seq, maxlen=max_sequence_length, padding='post', truncating='post')
63
+
64
+ # # Convert labels to categorical (one-hot encoding)
65
+ # labels = [languages.index(lang) for lang in feedback_labels]
66
+ # labels = to_categorical(labels, num_classes=len(languages))
67
+
68
+ # # Retrain the model
69
+ # model.fit(padded_seq, labels, epochs=2, batch_size=32, verbose=1)
70
+ # feedback_data = [] # Clear the feedback data after retraining
71
+ # # Save the retrained model
72
+ # # model.save("code_language_cnn_retrained.keras")
73
+ # print("Model retrained")
74
 
75
  # Define Gradio components
76
  def interface_func(code_snippet):
 
85
  predicted_label = gr.Label(label="Predicted Language")
86
  confidence_output = gr.JSON(label="Confidence Scores")
87
 
88
+ # feedback_dropdown = gr.Radio(["Correct", "Incorrect"], label="Was the prediction correct?")
89
+ # correct_language_dropdown = gr.Dropdown(languages, label="If incorrect, select the correct language (optional)")
90
+ # feedback_button = gr.Button("Submit Feedback")
91
+ # feedback_message = gr.Label(label="Feedback Status")
92
 
93
  # Prediction workflow
94
  predict_button.click(
 
98
  )
99
 
100
  # Feedback workflow
101
+ # feedback_button.click(
102
+ # provide_feedback,
103
+ # inputs=[code_input, predicted_label, feedback_dropdown, correct_language_dropdown],
104
+ # outputs=[feedback_message]
105
+ # )
106
 
107
  # Launch the interface
108
+ demo.launch()