Qpsychometric / questionnaire.py
Fadi12's picture
Qpsychometric Space
59a8a7c
from qlatent.qmnli.qmnli import *
from qlatent.qmlm.qmlm import *
from tqdm import tqdm
from qlatent.questionnaire_eval.questionnaire_utils import *
MLM_TYPE = "QMLM"
NLI_TYPE = "QMNLI"
class Questionnaires:
def __init__(self, questionnaires_questions_lists):
self.questionnaires_questions_lists=questionnaires_questions_lists
if self.questionnaires_questions_lists:
self.prepare_questionnaires()
def prepare_questionnaires(self):
"""
Prepares the questionnaires using the Questionnaire object.
Each list consists of class objects of a questionnaire.
All questionnaires are divided into MLM and NLI type for evaluation.
"""
questionnaires : Dict[Literal["QMLM", "QMNLI"], list] = {
MLM_TYPE: {},
NLI_TYPE: {},
}
for questionnaire_questions in self.questionnaires_questions_lists:
questionnaire_name : str = questionnaire_questions[0]()._descriptor["Questionnair"]
if issubclass(questionnaire_questions[0], QMLM):
questionnaire_type: Literal["QMLM", "QMNLI"] = MLM_TYPE
elif issubclass(questionnaire_questions[0], QMNLI):
questionnaire_type: Literal["QMLM", "QMNLI"] = NLI_TYPE
else:
raise ValueError(f"Unknown questionnaire type for {questionnaire_name}")
questionnaire : Questionnaire = Questionnaire.create_questionnaire_from_questions(questionnaire_questions)
questionnaire.questionnaire_type = questionnaire_type
questionnaires[questionnaire_type][questionnaire.name] = questionnaire
self.questionnaires = questionnaires