基于BigDL-LLM库的语文试卷生成器

本文介绍了如何利用大语言模型如ChatGLM3和爬虫技术开发一款工具,自动生成符合高考趋势的语文试卷,包括现代文阅读、古诗文阅读等部分,以提高教学效率,满足不同用户群体(如教育机构、教师、学生和家长)的个性化需求。
摘要由CSDN通过智能技术生成

项目背景

随着科技的发展和大语言模型的普及,人工智能技术在教育领域的应用日益广泛。同时,高考人数的增加导致学生升学压力正在逐步上升,为了提升学生们的成绩,高中教师常常给学生们布置大量的练习。但是寻找并整理这些练习题往往花费教师大量的时间,并且这些习题往往面临着重复率高、质量参次不齐等问题。这些问题不仅降低了教师们的教学效率,也在一定程度上浪费了学生们的时间。随着大语言模型的发展以及BigDL-LLM开源库所带来的本地部署的便利,利用大语言模型一键式地创建符合当下高考趋势的语文试卷能够极大地提升教师的教学效率,从而高效地提升学生的成绩。因此,我们基于BigDL-LLM库和ChatGLM3模型,开发了一款可以一键式生成高中语文试卷的应用。

项目设计

项目概述

用户在使用我们的应用时,只需要简单地输入一些关键词即可生成一份参照《2023年全国普通高校招生考试——语文》的试卷。题目文章选自权威网站,答案和题目完全由ChatGLM大模型生成,试卷排版完全参照高考试卷排版,无需教师干预。教师可以直接得到一份PDF文件,方便打印。基于大语言模型的高中语文试卷生成软件,可为广大师生提供更加便捷、高效的试卷编制服务。本软件致力于提高试卷质量,降低教师工作负担,助力高中语文教学。

技术架构

  • 基于大语言模型ChatGLM3:采用目前先进的大语言模型技术来解析文本,确保题目设置的合理性、逻辑性和创新性。

在我们的应用中,我们使用ChatGLM3模型来生成现代文阅读和古诗文阅读中的题目与答案部分、古诗词默写和语言文字运用部分。我们使用prompt提问方式,经过多次尝试寻找到最优提问方式,可以让ChatGLM模型生成最接近高考出题方式的题目。
其次,我们使用txt文件来存储生成的内容,根据题型分别将它们储存在现代文阅读I题目.txt、现代文阅读II题目.txt、文言文阅读题目.txt、古诗词阅读题目.txt、名言名句默写.txt、语言文字运用I.txt、语言文字运用II.txt、语言文字运用I题目.txt、语言文字运用IxI题目.txt、写作.txt中。
我们利用python按行读取txt文档中的内容并将它们存储到不同的变量中。

prompt方式问答样例:

Q:(2023年新I卷语文第一篇现代文文章)请你帮助我给学生命制一道选择题,设计ABCD4个选项,我会给你一篇文章,请你选取文章中的4个原文中的关键词,你只能根据文章内容谈谈你对这四个关键词的理解,并且请你使用逻辑谬误故意使你对其中一个词语的理解与原文意思不相符合,你需要提供你的理解,并指出你对哪一句话故意使用了逻辑谬误,即给出答案与解析。

A: 好的,我先看看文章,然后给你提供选择题和答案解析。文章中提到的四个关键词是:藜麦、价格上涨、良心危机、竞争性真相。
以下是我对这四个关键词的理解:
A.藜麦:一种营养丰富、不含麸质的谷物,富含镁、铁和蛋白质,被视为地球上最营养均衡的食物之一。由于其独特的营养价值,藜麦受到了全球消费者的青睐。
B.价格上涨:藜麦在全球市场上的需求不断增长,导致其价格不断攀升。这使得一些消费者开始担忧,因为藜麦价格上涨可能会使其成为一种奢侈品,让一些贫困人群难以承受。
C.良心危机:由于藜麦价格上涨,一些媒体开始报道藜麦在产地玻利维亚和秘鲁的消费量下降,以及当地居民生活水平下降的消息。这引起了一些健康饮食者对于是否继续食用藜麦的担忧,从而引发了一场良心危机。
D.竞争性真相:指在沟通中,沟通者可能会根据自己的目的和立场,选择性地呈现事实,从而影响现实。在这个例子中,一些新闻工作者和博主出于担忧贫困人群的利益,引导消费者远离藜麦,这实际上是一种竞争性真相的表现。
现在,我将提供一道选择题,并指出其中哪一句话使用了逻辑谬误。
选择题:以下哪一项关于藜麦的描述是错误的?
A.藜麦是一种营养丰富的食物,受到全球消费者的喜爱。
B.藜麦价格上涨使其成为一种奢侈品,让一些贫困人群难以承受。
C.由于藜麦价格上涨,玻利维亚和秘鲁的藜麦消费量下降,当地居民生活水平下降。
D.藜麦在全球市场上的需求不断增长,导致其价格不断攀升。
答案与解析:选项C是错误的。虽然一些媒体报道了藜麦在产地玻利维亚和秘鲁的消费量下降,以及当地居民生活水平下降的消息,但实际上,根据经济学家的研究,藜麦种植户的家庭支出增长速度是最快的,这意味着藜麦价格上涨并没有导致当地居民生活水平下降。在这里,我使用了逻辑谬误,将藜麦价格上涨与当地居民生活水平下降之间建立了错误的联系。

  • 基于网络爬虫的文本收集:利用爬虫技术从权威网站获取文本内容,确保试卷中文本的质量。

为了保障试卷中的文章质量以及文章多样性,我们根据试卷中文章类型的分类,分别用python网络爬虫从不同的权威网站中爬取相关文章。我们从科普中国、古诗文网等权威网站中获取文章。
在获取文章后,我们将文章文本储存到txt文件中,根据文章类别,我们一共创建现代文阅读I.txt,现代文阅读II.txt,文言文阅读.txt,古诗词阅读.txt这四个文件。
同样,最后我们利用python按行读取txt中的内容并存储到不同的变量中。

 例:爬取古诗文阅读的文章

def __collectPassage4(self, keyword: list):
        # 爬取古诗文阅读的文章
        kind = random.randint(1, 3)
        if kind == 1:
            url = "https://so.gushiwen.cn/gushi/tangshi.aspx"
        elif kind == 2:
            url = "https://so.gushiwen.cn/gushi/sanbai.aspx"
        elif kind == 3:
            url = "https://so.gushiwen.cn/gushi/songsan.aspx"
        poem_urls = []
        html_content = self.__fetch_html(url)
        if html_content:
            poem_urls.extend(self.__extract_poem_urls(html_content))
            sel = random.randint(0, len(poem_urls))
            details = self.__fetch_poem_details(poem_urls[sel])
            with open("Doc/古诗文.txt", "w", encoding='utf-8') as file:
                file.write(details["name"] + '\n')
                file.write(details["author"] + "\n")
                file.write(details["content"] + "\n")
        else:
            print("Failed to fetch or parse HTML content.")

 例:逐行读取现代文阅读I.txt文件

with open('现代文阅读I.txt', 'r', encoding="utf-8") as f1:
    source1 = f1.readline()
    author1 = f1.readline()
    materials1 = f1.readline() + '\\\\'
    while materials1:
        materials1 = materials1 + str(f1.readline()) + '\\\\'
sourceScienceReading = "(摘编自" + author1 + "《" + source1 + "》)"
  • 基于latex的自动排版:利用python中的jinjia2库和subprocess库实现将latex代码在本地生成pdf文档

首先我们在XeLatex中编辑出一份基于2023年语文新高考一卷的语文试卷模板。我们将这份tex文件命名为exam-zh-chinese.tex, 这份tex文件需要一份cls和其他sty文件的支持。由于此模板中含有变量,故不能直接在编译器中生成pdf文件。
其次,我们将tex文件和它的支持文件一同导入python,我们在此过程中运用jinjia2库,使用rendered_template = latex_template.render()命令,它允许我们将大语言模型生成的内容和从网络上爬下来的文章导入到latex模板的相应位置上。例如,在latex模板中,我们将名为materials1的变量放在现代文阅读I的位置上,而通过jinjia2,我们可以将存储在现代文阅读I.txt中的文章导入到materials1的位置。
最后,我们使用subprocess库将tex文件转化为pdf文件,我们采用subprocess.run()命令,让我们编写的代码在cmd中运行,最终通过XeLatex生成pdf文件。

例:用latex模板编译出的2021年语文新一卷高考试题

subprocess部分代码

def compile_tex_to_pdf(tex_file):
    #
    # path = os.path.abspath(tex_file)
    # pdf_file = tex_file.replace('.tex', '.pdf')
    # cmd = ['pip','-v']
    # p = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
    # print(p.communicate()[0])
    # print(f"Successfully converted {tex_file} to {pdf_file} using xelatex")
    # current_directory = os.getcwd()
    # 遍历当前目录下的所有文件
    command = [os.path.join('C:\\texlive\\2023\\bin\\windows', 'xelatex.exe'), tex_file]

    # 执行命令,并将标准输出和标准错误输出捕获到管道中
    try:
        # 使用subprocess.run运行命令
        compilation_result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True)

        # 输出命令执行的结果
        print("Success!")

    except subprocess.CalledProcessError as e:
        # 如果命令执行失败,则打印错误信息
        print(f"Error compiling {filename}:")
        print(e.stderr.decode())

应用方向

我们的应用可以自动生成文章、题目和答案,并且以pdf的格式生成,不需要用户手动排版。所以,我们的应用门槛低,应用方向广泛,可供多种用户使用。

  • 教育机构:为高中学校、培训机构等提供智能化、个性化的语文试卷编制服务,提高教学质量。
  • 教师群体:帮助教师节省试卷编制时间,提高工作效率,专注于教学研究与学生辅导。特别是高三老师,可以有更多的时间为高三学生提供个性化辅导。
  • 学生群体:满足学生的自主复习需求,学生可以根据自身的需求,生成为自己定制的试卷,有针对性的提升自己的语文水平。
  • 家长群体:即使家长没有足够的知识储备与出卷能力,也可以在家利用我们的应用得到一份题型合适配有答案的语文卷,更好的帮助孩子备考。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值