TIF_E41211115_Genso_quiz_ba.../app/services/question_generation_service.py

52 lines
1.7 KiB
Python

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