You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SymPy等库从任意文本中提取基础数学表达式

从自然语言段落提取基础数学表达式的可行方案

首先明确:纯SymPy本身没有内置的文本片段提取能力,但你可以用「规则预筛选+SymPy语法校验」的启发式方案实现需求,对格式规整的纯文本表达式准确率很高。

具体实现可以拆为三步:

  • 第一步:从输入文本中切取候选片段
    先基于字符特征圈定可能的表达式范围:优先匹配包含=、四则运算符、幂符号^、括号、单个英文字母变量的连续字符串,跳过中文字符、标点等自然语言内容。你举的例子中,就能先定位到「为」和「,」之间的(x^2/a^2) + (y^2/b^2) = 1作为待校验候选。
  • 第二步:用SymPy做合法性校验
    SymPy的parse_expr方法可以校验字符串是否为合法的数学表达式,注意要先做幂运算符兼容处理:SymPy默认用**表示幂,而普通文本里常用^,需要先做替换。示例代码如下:
    from sympy import parse_expr, SympifyError
    
    def check_math_expr(candidate_str):
        # 兼容普通文本的幂符号写法
        processed = candidate_str.replace('^', '**')
        try:
            parse_expr(processed)
            return True
        except SympifyError:
            return False
    
    调用这个方法校验第一步切出的候选,返回True的就是符合要求的数学表达式。
  • 第三步:补充边界规则优化准确率
    可以额外加过滤规则减少误判:比如排除长度过短的片段、排除仅含数字的片段、排除类似「(1)」「(a)」的序号类带括号内容,要求表达式至少包含1个变量和1个运算符。

这个方案的局限性是仅支持格式规整的纯文本数学表达式,如果你需要处理LaTeX格式、自然语言描述的表达式(比如“x与y的和等于5”),还需要额外加对应的前置解析模块。

内容的提问来源于stack exchange,提问作者Gokul NC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:09:04