import pandas as pd import random from transformers import pipeline class ToeicVocabularyApp: def __init__(self, data_path): self.data_path = data_path self.df = pd.read_csv(data_path) self.settings = { "num_questions": 10, "study_mode": ["Flashcard", "Trắc nghiệm", "Thử thách tốc độ", "Ôn tập theo chủ đề", "Kiểm tra"], "time_limit": 30, # in seconds "selected_topics": [] } self.classifier = pipeline("zero-shot-classification", model="facebook/bart-large-mnli") self.topics = ["Kinh tế", "Du lịch", "Giao tiếp", "Công nghệ", "Giáo dục"] def update_settings(self, setting_name, value): if setting_name in self.settings: self.settings[setting_name] = value def add_vocabulary(self, word, meaning, topic=None): new_entry = {"Từ vựng": word, "Nghĩa": meaning, "Chủ đề": topic if topic else ""} self.df = self.df.append(new_entry, ignore_index=True) self.df.to_csv(self.data_path, index=False) def modify_vocabulary(self, index, word=None, meaning=None, topic=None): if word: self.df.at[index, "Từ vựng"] = word if meaning: self.df.at[index, "Nghĩa"] = meaning if topic: self.df.at[index, "Chủ đề"] = topic self.df.to_csv(self.data_path, index=False) def generate_question(self, mode): if mode == "Trắc nghiệm": questions = [] for _ in range(self.settings["num_questions"]): correct_row = self.df.sample(1).iloc[0] wrong_answers = self.df[self.df["Từ vựng"] != correct_row["Từ vựng"]]["Nghĩa"].sample(3).tolist() options = [correct_row["Nghĩa"]] + wrong_answers random.shuffle(options) question = { "question": correct_row["Từ vựng"], "options": options, "correct_answer": correct_row["Nghĩa"] } questions.append(question) return questions elif mode == "Ôn tập theo chủ đề": # Placeholder for topic-based review pass # Add other modes as needed def use_guide(self): return "Guide text will be added here." def run_mode(self, mode): if mode == "Hướng dẫn sử dụng": return self.use_guide() elif mode in ["Flashcard", "Trắc nghiệm", "Thử thách tốc độ", "Ôn tập theo chủ đề", "Kiểm tra"]: return self.generate_question(mode) else: return "Invalid mode selected." # Example of usage if __name__ == "__main__": app = ToeicVocabularyApp('toeic_vocabulary.csv') app.update_settings('num_questions', 5) print(app.run_mode('Trắc nghiệm'))