| import argparse |
| import numpy as np |
| from questiongenerator import QuestionGenerator |
| from questiongenerator import print_qa |
|
|
| def main(): |
| parser = argparse.ArgumentParser() |
| parser.add_argument( |
| "--text_dir", |
| default=None, |
| type=str, |
| required=True, |
| help="The text that will be used as context for question generation.", |
| ) |
| parser.add_argument( |
| "--model_dir", |
| default=None, |
| type=str, |
| help="The folder that the trained model checkpoints are in.", |
| ) |
| parser.add_argument( |
| "--num_questions", |
| default=10, |
| type=int, |
| help="The desired number of questions to generate.", |
| ) |
| parser.add_argument( |
| "--answer_style", |
| default="all", |
| type=str, |
| help="The desired type of answers. Choose from ['all', 'sentences', 'multiple_choice']", |
| ) |
| parser.add_argument( |
| "--show_answers", |
| default='True', |
| type=parse_bool_string, |
| help="Whether or not you want the answers to be visible. Choose from ['True', 'False']", |
| ) |
| parser.add_argument( |
| "--use_qa_eval", |
| default='True', |
| type=parse_bool_string, |
| help="Whether or not you want the generated questions to be filtered for quality. Choose from ['True', 'False']", |
| ) |
| args = parser.parse_args() |
|
|
| with open(args.text_dir, 'r') as file: |
| text_file = file.read() |
|
|
| qg = QuestionGenerator(args.model_dir) |
|
|
| qa_list = qg.generate( |
| text_file, |
| num_questions=int(args.num_questions), |
| answer_style=args.answer_style, |
| use_evaluator=args.use_qa_eval |
| ) |
| print_qa(qa_list, show_answers=args.show_answers) |
|
|
| |
| def parse_bool_string(s): |
| if isinstance(s, bool): |
| return s |
| if s.lower() in ('yes', 'true', 't', 'y', '1'): |
| return True |
| elif s.lower() in ('no', 'false', 'f', 'n', '0'): |
| return False |
| else: |
| raise argparse.ArgumentTypeError('Boolean value expected.') |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|