Source code for EduData.DataSet.EdNet.utils

# coding: utf-8
# 2019/12/17 @ tongshiwei

import csv


[docs]def get_question_id(question_str): """ Examples -------- >>> get_question_id("q123") 123 """ return int(question_str.lstrip("q"))
class Judgement(object): def __init__(self, questions_csv): self.question = [None] * (18143 + 1) with open(questions_csv) as f: f.readline() for i, line in enumerate(csv.reader(f, delimiter=",")): _id = self.get_question_id(line[0]) correct_answer = line[3] self.question[_id] = (i, correct_answer) @staticmethod def get_question_id(question_id): if isinstance(question_id, str): question_id = get_question_id(question_id) return question_id def is_correct(self, question_id: (str, int), user_answer: str): question_id = self.get_question_id(question_id) if self.question[question_id] is None: raise ValueError("Unknown question") return True if self.question[question_id][1] == user_answer else False def __call__(self, question_id: str, user_answer: str): question_id = self.get_question_id(question_id) if self.question[question_id] is None: raise ValueError("Unknown question") _id, ground_truth = self.question[question_id] return _id, 1 if ground_truth == user_answer else 0