46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
import sys
|
|
import json
|
|
import os
|
|
import argparse
|
|
|
|
sys.set_int_max_str_digits(0)
|
|
|
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
|
|
|
from data.human_eval import HumanEvalReader
|
|
from post_processors.code.evaluator import HumanEvaluator
|
|
from post_processors.code.clean import standard_cleaner
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--input_file", type=str)
|
|
args = parser.parse_args()
|
|
|
|
reader = HumanEvalReader()
|
|
data = reader()
|
|
|
|
id2output = {}
|
|
with open(args.input_file, "r", encoding="utf-8")as f:
|
|
for line in f:
|
|
item = json.loads(line)
|
|
pred = standard_cleaner(item["completion"])
|
|
id2output[item["task_id"]] = {
|
|
"pred": pred,
|
|
"response": item["completion"],
|
|
}
|
|
|
|
for item in data:
|
|
item["pred"] = id2output[item["task_id"]]["pred"]
|
|
item["test_cases"] = item["test"]
|
|
item["id"] = item["task_id"]
|
|
|
|
evaluator = HumanEvaluator()
|
|
predictions, metrics = evaluator(data, num_workers=24)
|
|
|
|
print(metrics)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|