|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
from math_verify.errors import TimeoutException
|
|
|
from math_verify.metric import math_metric
|
|
|
from math_verify.parser import ExprExtractionConfig, LatexExtractionConfig
|
|
|
except ImportError:
|
|
|
print("To use Math-Verify, please install it first by running `pip install math-verify`.")
|
|
|
|
|
|
|
|
|
def compute_score(model_output: str, ground_truth: str, timeout_score: float = 0) -> bool:
|
|
|
verify_func = math_metric(
|
|
|
gold_extraction_target=(LatexExtractionConfig(),),
|
|
|
pred_extraction_target=(ExprExtractionConfig(), LatexExtractionConfig()),
|
|
|
)
|
|
|
ret_score = 0.0
|
|
|
|
|
|
|
|
|
ground_truth_boxed = "\\boxed{" + ground_truth + "}"
|
|
|
try:
|
|
|
ret_score, _ = verify_func([ground_truth_boxed], [model_output])
|
|
|
except Exception:
|
|
|
pass
|
|
|
except TimeoutException:
|
|
|
ret_score = timeout_score
|
|
|
|
|
|
return ret_score
|
|
|
|