styles.py 3.66 KB
Newer Older
lintangsutawika's avatar
lintangsutawika committed
1
2
3
import string
from functools import partial

lintangsutawika's avatar
lintangsutawika committed
4

lintangsutawika's avatar
lintangsutawika committed
5
6
def doc_to_text_base(alphabet, style, doc):

lintangsutawika's avatar
lintangsutawika committed
7
    choices = doc["choices"]
lintangsutawika's avatar
lintangsutawika committed
8
9
10
11
12
13
14
15
16
    num = len(choices)

    letter_list = [style.format(letter) for letter in alphabet[0:num]]

    if "\t" in style:
        choice_string = "{}{}"
    else:
        choice_string = "{} {}"

lintangsutawika's avatar
lintangsutawika committed
17
    doc_to_text = "\n".join(
lintangsutawika's avatar
lintangsutawika committed
18
        [
lintangsutawika's avatar
lintangsutawika committed
19
            "Question: " + doc["question"].strip()
lintangsutawika's avatar
lintangsutawika committed
20
        ]
lintangsutawika's avatar
lintangsutawika committed
21
22
        + [" ".join(choice_string.format(i, j) for i, j in zip(letter_list, choices))]
        + ["Answer:"]
lintangsutawika's avatar
lintangsutawika committed
23
24
25
26
    )

    return doc_to_text

lintangsutawika's avatar
lintangsutawika committed
27

lintangsutawika's avatar
lintangsutawika committed
28
29
# Full continuation
def choice_A(doc):
lintangsutawika's avatar
lintangsutawika committed
30
    return doc["choices"]
lintangsutawika's avatar
lintangsutawika committed
31

lintangsutawika's avatar
lintangsutawika committed
32
33
def answer_A(doc):
    return doc["choices"][doc["answer"]]
lintangsutawika's avatar
lintangsutawika committed
34

lintangsutawika's avatar
lintangsutawika committed
35
36
37
# Letters only
def choice_B(alphabet, style, doc):

lintangsutawika's avatar
lintangsutawika committed
38
    choices = doc["choices"]
lintangsutawika's avatar
lintangsutawika committed
39
40
41
42
    num = len(choices)

    letter_list = [style.format(letter) for letter in alphabet[0:num]]
    if "\t" in style:
lintangsutawika's avatar
lintangsutawika committed
43
        letter_list = [letter.replace("\t", "") for letter in letter_list]
lintangsutawika's avatar
lintangsutawika committed
44
45
46

    return letter_list

lintangsutawika's avatar
lintangsutawika committed
47
48
49
50
51
52
53
54
55
56
def answer_B(alphabet, style, doc):

    choices = doc["choices"]
    num = len(choices)

    letter_list = [style.format(letter) for letter in alphabet[0:num]]
    if "\t" in style:
        letter_list = [letter.replace("\t", "") for letter in letter_list]

    return letter_list[doc["answer"]]
lintangsutawika's avatar
lintangsutawika committed
57

lintangsutawika's avatar
lintangsutawika committed
58
59
60
# Letters + Full continuation
def choice_C(alphabet, style, doc):

lintangsutawika's avatar
lintangsutawika committed
61
    choices = doc["choices"]
lintangsutawika's avatar
lintangsutawika committed
62
63
64
65
    num = len(choices)

    letter_list = [style.format(letter) for letter in alphabet[0:num]]
    if "\t" not in style:
lintangsutawika's avatar
lintangsutawika committed
66
67
68
        letter_list = [letter + " " for letter in letter_list]

    return [letter + choice for letter, choice in zip(letter_list, choices)]
lintangsutawika's avatar
lintangsutawika committed
69

lintangsutawika's avatar
lintangsutawika committed
70
71
72
73
74
75
76
77
78
79
80
def answer_C(alphabet, style, doc):

    choices = doc["choices"]
    num = len(choices)

    letter_list = [style.format(letter) for letter in alphabet[0:num]]
    if "\t" not in style:
        letter_list = [letter + " " for letter in letter_list]

    return [letter + choice for letter, choice in zip(letter_list, choices)][doc["answer"]]

lintangsutawika's avatar
lintangsutawika committed
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98

template_01 = partial(doc_to_text_base, string.ascii_lowercase, "({})")
choice_01a = choice_A
choice_01b = partial(choice_B, string.ascii_lowercase, "({})")
choice_01c = partial(choice_C, string.ascii_lowercase, "({})")
template_02 = partial(doc_to_text_base, string.ascii_lowercase, "{})")
choice_02a = choice_A
choice_02b = partial(choice_B, string.ascii_lowercase, "{})")
choice_02c = partial(choice_C, string.ascii_lowercase, "{})")
template_03 = partial(doc_to_text_base, string.ascii_lowercase, "{}.")
choice_03a = choice_A
choice_03b = partial(choice_B, string.ascii_lowercase, "{}.")
choice_03c = partial(choice_C, string.ascii_lowercase, "{}.")
template_04 = partial(doc_to_text_base, string.ascii_lowercase, "{}\t")
choice_04a = choice_A
choice_04b = partial(choice_B, string.ascii_lowercase, "{}\t")
choice_04c = partial(choice_C, string.ascii_lowercase, "{}\t")
template_05 = partial(doc_to_text_base, string.ascii_uppercase, "({})")
lintangsutawika's avatar
lintangsutawika committed
99
target_05a = answer_A
lintangsutawika's avatar
lintangsutawika committed
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
choice_05a = choice_A
choice_05b = partial(choice_B, string.ascii_uppercase, "({})")
choice_05c = partial(choice_C, string.ascii_uppercase, "({})")
template_06 = partial(doc_to_text_base, string.ascii_uppercase, "{})")
choice_06a = choice_A
choice_06b = partial(choice_B, string.ascii_uppercase, "{})")
choice_06c = partial(choice_C, string.ascii_uppercase, "{})")
template_07 = partial(doc_to_text_base, string.ascii_uppercase, "{}.")
choice_07a = choice_A
choice_07b = partial(choice_B, string.ascii_uppercase, "{}.")
choice_07c = partial(choice_C, string.ascii_uppercase, "{}.")
template_08 = partial(doc_to_text_base, string.ascii_uppercase, "{}\t")
choice_08a = choice_A
choice_08b = partial(choice_B, string.ascii_uppercase, "{}\t")
choice_08c = partial(choice_C, string.ascii_uppercase, "{}\t")