我正在创建教育应用程序,用户可以使用 LaTeX 回答问题,并且遇到了在某些情况下字符串相等不起作用的情况,尽管用户在结果意义上的回答是正确的。
例如正确答案是\frac{e+1}{4}
,而 usr 回答的\frac{1+e}{4}
意思是正确答案,那么我们如何比较这两个 LaTeX 字符串是否含义相等?
答案1
您可以使用 Python 的 Sympy 库,它有一个实验性的 LaTeX 解析器要比较表示是否相等,您必须使用函数,.equals()
因为==
执行原始对象比较,并且只有当两个对象相等时才会返回 true。
>>> from sympy.parsing.latex import parse_latex
>>> expr1 = parse_latex(r"\frac{e+1}{4}")
>>> expr2 = parse_latex(r"\frac{1+e}{4}")
>>> expr1.equals(expr2)
True
>>> expr3 = parse_latex(r"\frac{e+4-3}{4}")
>>> expr1.equals(expr3)
True
>>> expr4 = parse_latex(r"0.25(e+1)")
>>> expr1.equals(expr4)
True
>>> expr5 = parse_latex(r"(1+e)\cdot 4^{-1}")
>>> expr1.equals(expr5)
True
>>> expr6 = parse_latex(r"(\frac{4}{1+e})^{-1}")
>>> expr1.equals(expr6)
True