from app.repositories import ( NERSRLRepository, QuestionGenerationRepository, AnswerGenerationRepository, ) import re class QuestionGenerationService: def __init__( self, ner_srl_repository: NERSRLRepository, question_generate_repository: QuestionGenerationRepository, answer_generate_repository: AnswerGenerationRepository, ): self._ner_srl_repository = ner_srl_repository self._question_generation_repository = question_generate_repository self._answer_generation_repository = answer_generate_repository def createQuizAutomate(self, sentence: str): # Gunakan regex untuk split hanya pada titik yang diikuti spasi atau akhir kalimat, # dan bukan bagian dari angka (contoh: 19.00 tidak dipisah) split_pattern = r"\.(?=\s|$)(?!\d)" # split sentence using regex sentences = [s.strip() for s in re.split(split_pattern, sentence) if s.strip()] results = [] for s in sentences: result = self._ner_srl_repository.predict_sentence(s) question = self._question_generation_repository.predict_question( context=s, ner=result["ner"], tokens=result["tokens"], srl=result["srl"], q_type=1, ) answer = self._answer_generation_repository.predict_answer( context=s, question=question, ner=result["ner"], tokens=result["tokens"], srl=result["srl"], q_type=1, ) results.append({"qustion": question, "answer": answer}) return results