教育领域“知之”大模型--山东大学软件学院2024年项目实训(八)

在大模型生成的回答中会有latex格式的内容,这对回答的可读性造成了很大的影响,所以,我决定对回答中的latex进行转换,最重要利用词典的映射来进行转化。

完整代码如下:

#第一个问题是,输出的是latex格式
import re

# 一个简单的LaTeX到文本替换字典
latex_to_text = {
    '\\alpha': 'α',
    '\\beta': 'β',
    '\\gamma': 'γ',
    '\\delta': 'δ',
    '\\epsilon': 'ε',
    '\\zeta': 'ζ',
    '\\eta': 'η',
    '\\theta': 'θ',
    '\\iota': 'ι',
    '\\kappa': 'κ',
    '\\lambda': 'λ',
    '\\mu': 'μ',
    '\\nu': 'ν',
    '\\xi': 'ξ',
    '\\omicron': 'ο',
    '\\pi': 'π',
    '\\rho': 'ρ',
    '\\sigma': 'σ',
    '\\tau': 'τ',
    '\\upsilon': 'υ',
    '\\phi': 'φ',
    '\\chi': 'χ',
    '\\psi': 'ψ',
    '\\omega': 'ω',
    '\\sin': 'sin',
    '\\cos': 'cos',
    '\\tan': 'tan',
    '\\log': 'log',
    '\\ln': 'ln',
    '\\exp': 'exp',
    '\\sqrt': '√',
    '\\times': '×',
    '\\div': '÷',
    '\\pm': '±',
    '\\neq': '≠',
    '\\leq': '≤',
    '\\geq': '≥',
    '\\infty': '∞',
    '\\sum': '∑',
    '\\prod': '∏',
    '\\int': '∫',
    '\\partial': '∂',
    '\\approx': '≈',
    '\\forall': '∀',
    '\\exists': '∃',
    '\\nabla': '∇',
}

def replace_latex_with_text(latex_expr):
    # 遍历替换字典,并替换LaTeX表达式中的符号
    for latex_symbol, text_symbol in latex_to_text.items():
        latex_expr = latex_expr.replace(latex_symbol, text_symbol)
    return latex_expr

def replace_latex_in_string(input_string):
    # 定义一个正则表达式来匹配LaTeX表达式(这里只匹配$...$内的内容)
    latex_pattern = r'\$(.*?)\$'

    # 查找所有匹配的LaTeX表达式
    matches = re.findall(latex_pattern, input_string)

    # 对于每个匹配的LaTeX表达式,尝试将其替换为文本表示
    for match in matches:
        latex_expr = match
        text_expr = replace_latex_with_text(latex_expr)
        # 使用re.escape确保替换的文本中不包含正则表达式特殊字符
        input_string = re.sub(rf'\${re.escape(latex_expr)}\$', text_expr, input_string)

    return input_string

# 示例使用
latex_string = "这是一个例子:$\\alpha + \\beta = \\sin(x)$ 和 $\\gamma \\approx \\delta$ 是无关的。"
result = replace_latex_in_string(latex_string)
print(result)  # 输出:这是一个例子:α + β = sin(x) 和 γ ≈ δ 是无关的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值