本文探讨了大模型评估中,模型输出包含LaTeX公式时遇到的解析难题。由于LaTeX解析没有标准方法,即使使用sympy这样的专业库,也难以保证100%的准确率。文章分享了一种通过添加字符串比较检查来缓解此问题的方法,避免了重写语法解析模块或添加人工检查的复杂方案。实验结果表明,该方法能有效提升模型评估的准确性,为大模型评估提供了一种实用的解决方案。
🧪 大模型评估中,当模型输出包含LaTeX公式时,会遇到公式解析的难题,直接影响评估的准确性。
📚 Sympy是一个用于符号数学的Python库,常被用于LaTeX公式的解析和比较,但在实际使用中,即使使用sympy对真值进行解析,也只能达到约94%的准确率,存在一定的解析失败情况。
✅ 通过在代码中添加字符串比较检查,可以有效缓解LaTeX公式解析问题,无需重写语法解析模块或进行人工检查,是一种相对简单且有效的解决方案。
📈 实验数据表明,采用字符串比较检查后,模型评估的准确性得到了显著提升,验证了该方法在实际应用中的有效性。
原创 Hugging Face 2025-05-07 22:00 广东
缓解评估输入中带有 LaTeX 公式场景下的解析问题

这是 大模型评估排障指南 系列文章的第二篇,敬请关注系列文章:
解析 LaTeX 很难。这个问题在评估输出为 的模型时经常会遇到,例如 Hugging Face 的数学评估基准。https://hf.co/datasets/lighteval/MATH
这个基准使用 来表示数学领域的计算和符号。评估难点在于对模型输出与标准答案的解析和比较。 结果表明,解析 没有标准方法。

摘自sympy文档
lm-evaluation 框架使用sympy(一个用于符号数学的 Python 库) 来对 LaTeX 进行解析和比较。 使用 sympy
解析真值 (用真值自身对比测试) 只能得到约 0.94 的准确率。 怎么会是这样呢?后来发现 sympy
无法解析某些 (标准的 ) 表达式。https://github.com/sympy/sympy
例如:
couldn't parse one of [0,1) 或 [0,1), I expected one of these: ']'
[0,1)
~~^
couldn't parse one of (-\iny,-5]\cup[5,\iny) or (-\iny,-5]\cup[5,\iny), I expected something else here
(-\iny,-5]\cup[5,\iny)
~~~~~~^
couldn't parse one of -\frac{1}{{}2x} or -\frac{1}{{}2x}, I don't understand this
-\frac{1}{{}2x}
~~~~~~~~~~~^
如何缓解这个问题?
重写 语法解析模块并在代码中添加必须功能;或者往代码里添加人工检查来提高模型得分。 在几乎陷入问题陷阱之后,我们认为在代码中添加字符串比较检查差不多就能缓解这个问题了。https://github.com/sympy/sympy/blob/master/sympy/parsing/latex/lark/grammar/latex.lark

LM 评估工具修复
结果
修复前后模型 Top 25 对比结果表格如下:
英文原文: https://raw.githubusercontent.com/huggingface/evaluation-guidebook/refs/heads/main/contents/troubleshooting/troubleshooting-math-parsing.md
原文作者: Nathan Habib
译者: SuSung-boy
审校: Adeena








阅读原文
跳转微信打开