RPC / data_processing /process_utils.py
WNJXYK's picture
Upload 16 files
22c93a7 verified
import regex
from data_processing.answer_extraction import extract_math_answer, strip_string
def process_gsm8k_test(item):
sample = {
"dataset": "gsm8k-cot",
"id": item["id"],
"messages": [
{"role": "user", "content": item["question"]},
{
"role": "assistant",
"content": regex.sub(r"<<[^<>]*>>", "", item["cot"])
+ "\nSo the answer is $\\boxed{"
+ item["answer"].strip()
+ "}$.",
},
],
"answer": item["answer"].replace(",", ""),
}
yield sample
def process_math_test(item):
question = item["problem"]
try:
answer = extract_math_answer(question, item["solution"], task="cot")
except:
return
sample = {
"dataset": "math-cot",
"id": item["id"],
"level": item["level"],
"type": item["type"],
"category": item["category"],
"messages": [
{"role": "user", "content": question},
{
"role": "assistant",
"content": "\n".join(
regex.split(r"(?<=\.) (?=[A-Z])", item["solution"])
),
},
],
"answer": answer,
}
yield sample
def process_math_sat(item):
options = item["options"].strip()
assert "A" == options[0]
options = "(" + options
for ch in "BCDEFG":
if f" {ch}) " in options:
options = regex.sub(f" {ch}\) ", f" ({ch}) ", options)
question = f"{item['question'].strip()}\nWhat of the following is the right choice? Explain your answer.\n{options.strip()}"
messages = [
{"role": "user", "content": question},
{"role": "assistant", "content": item["Answer"]},
]
item = {
"dataset": "math_sat",
"id": item["id"],
"language": "en",
"messages": messages,
"answer": item["Answer"],
}
yield item
def process_ocwcourses(item):
messages = [
{"role": "user", "content": item["problem"].strip()},
{"role": "assistant", "content": item["solution"].strip()},
]
item = {
"dataset": "OCWCourses",
"id": item["id"],
"language": "en",
"messages": messages,
"answer": item["answer"],
}
yield item
def process_mmlu_stem(item):
options = item["options"]
for i, (label, option) in enumerate(zip("ABCD", options)):
options[i] = f"({label}) {str(option).strip()}"
options = ", ".join(options)
question = f"{item['question'].strip()}\nWhat of the following is the right choice? Explain your answer.\n{options}"
messages = [
{"role": "user", "content": question},
{"role": "assistant", "content": item["answer"]},
]
item = {
"dataset": "MMLU-STEM",
"id": item["id"],
"language": "en",
"messages": messages,
"answer": item["answer"],
}
yield item
def process_mgsm_zh(item):
item["answer"] = item["answer"].replace(",", "")
yield item
def process_cmath(item):
item = {
"dataset": "cmath",
"id": item["id"],
"grade": item["grade"],
"reasoning_step": item["reasoning_step"],
"messages": [
{"role": "user", "content": item["question"].strip()},
{"role": "assistant", "content": ""},
],
"answer": item["golden"].strip().replace(",", ""),
}
yield item
def process_agieval_gaokao_math_cloze(item):
item = {
"dataset": "agieval-gaokao-math-cloze",
"id": item["id"],
"messages": [
{"role": "user", "content": item["question"].strip()},
{"role": "assistant", "content": ""},
],
"answer": [strip_string(ans) for ans in item["answer"].strip().split(";")],
}
yield item
def process_agieval_gaokao_mathqa(item):
question = item["question"].strip()
options = []
for option in item["options"]:
option = option.strip()
assert option[0] == "("
assert option[2] == ")"
assert option[1] in "ABCD"
option = f"{option[1]}: {option[3:].strip()}"
options.append(option.strip())
question = f"{question}\n{options}"
item = {
"dataset": "agieval-gaokao-mathqa",
"id": item["id"],
"messages": [
{"role": "user", "content": question},
{"role": "assistant", "content": ""},
],
"answer": item["label"],
}
yield item
def process_agieval_gaokao_mathqa_few_shot_cot_test(item):
question = item["question"].strip().rstrip("\\")
options = " ".join([opt.strip() for opt in item["options"]])
question = f"{question}\n从以下选项中选择: {options}"
item = {
"dataset": "agieval-gaokao-mathqa",
"id": item["id"],
"messages": [
{"role": "user", "content": question},
{"role": "assistant", "content": ""},
],
"answer": item["label"],
}
yield item
def process_minif2f_isabelle(item):
question = f"(*### Problem\n\n{item['informal_statement'].strip()}\n\n### Solution\n\n{item['informal_proof'].strip()} *)\n\nFormal:\n{item['formal_statement'].strip()}"
item = {
"dataset": "minif2f-isabelle",
"id": item["id"],
"messages": [
{"role": "user", "content": question},
{"role": "assistant", "content": ""},
],
"answer": "placeholder",
}
yield item