forked from AMontgomerie/question_generator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun_qg.py
73 lines (66 loc) · 2.17 KB
/
run_qg.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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)
# taken from https://stackoverflow.com/questions/15008758/parsing-boolean-values-with-argparse
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()