CN117931879A - 一种习题自动生成方法、装置、电子设备及存储介质 - Google Patents
一种习题自动生成方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117931879A CN117931879A CN202410155221.XA CN202410155221A CN117931879A CN 117931879 A CN117931879 A CN 117931879A CN 202410155221 A CN202410155221 A CN 202410155221A CN 117931879 A CN117931879 A CN 117931879A
- Authority
- CN
- China
- Prior art keywords
- target
- algorithm
- grammar
- generating
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 104
- 238000003860 storage Methods 0.000 title claims abstract description 33
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 354
- 230000006870 function Effects 0.000 claims description 116
- 150000001875 compounds Chemical class 0.000 claims description 64
- 238000012545 processing Methods 0.000 claims description 48
- 230000003993 interaction Effects 0.000 claims description 27
- 238000013329 compounding Methods 0.000 claims description 22
- 239000002131 composite material Substances 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 14
- 230000008569 process Effects 0.000 description 43
- 239000010410 layer Substances 0.000 description 34
- 238000010586 diagram Methods 0.000 description 29
- 230000014509 gene expression Effects 0.000 description 21
- 238000004458 analytical method Methods 0.000 description 18
- 235000019580 granularity Nutrition 0.000 description 18
- 230000004044 response Effects 0.000 description 16
- 230000002776 aggregation Effects 0.000 description 14
- 238000004220 aggregation Methods 0.000 description 14
- 238000013515 script Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 238000013459 approach Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000007547 defect Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000013508 migration Methods 0.000 description 4
- 230000005012 migration Effects 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 238000000354 decomposition reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000001965 increasing effect Effects 0.000 description 3
- 239000002346 layers by function Substances 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000011835 investigation Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241001632422 Radiola linoides Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种习题自动生成方法、装置、电子设备及存储介质,该方法包括:获取目标题目类型;确定与所述目标题目类型对应的目标习题生成算法、目标规则集合及目标常量集合;其中,所述目标规则表示生成所述目标题目类型的习题需符合的规则,所述目标常量表示描述所述目标题目类型的参数、数据或符号;根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成目标题目类型的至少一个习题和/或所述至少一个习题的解答信息;呈现所述至少一个习题和/或所述至少一个习题的解答信息。通过本公开,能够自动生成海量多样化习题,满足不同学生的个性化需求。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种习题自动生成方法、装置、电子设备及存储介质。
背景技术
在教育教学过程中,练习题是帮助学生快速熟悉、掌握学科基础理论方法和重难点知识的有效工具,有着降低学习成本、巩固学习成果的积极意义。在学习过程中,尤其是大学生学习过程中,由于理解能力、学习习惯等方面的差异,不同学生对习题存在个性化需求,教师很难在不造成额外负担的情况下,为所有学生提供满足需求的习题。因此,主动获取习题成为学生掌握和巩固知识的一个重要手段。现有技术中,学生通过从教材及习题集中获取固定习题,无法满足学生的个性化需求。
发明内容
有鉴于此,本公开提出了一种习题自动生成方法、装置、系统、电子设备、存储介质及计算机程序产品。
根据本公开的一方面,提供了一种习题自动生成方法,包括:
获取目标题目类型;
确定与所述目标题目类型对应的目标习题生成算法、目标规则集合及目标常量集合;其中,所述目标规则表示生成所述目标题目类型的习题需符合的规则,所述目标常量表示描述所述目标题目类型的参数、数据或符号;
根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述目标题目类型的至少一个习题和/或所述至少一个习题的解答信息;
呈现所述至少一个习题和/或所述至少一个习题的解答信息。
在一种可能的实现方式中,所述方法还包括:
获取目标难度和/或目标特性;所述目标特性表示习题中所体现的知识点特性;
所述根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述目标题目类型的至少一个习题和/或所述至少一个习题的解答信息,包括:
根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,在所述目标难度和/或目标特性的约束下,生成所述至少一个习题和/或所述至少一个习题的解答信息。
在一种可能的实现方式中,所述目标题目类型具有:可描述性、可判定性、可扩展性中的一项或多项;其中,所述可描述性表示通过所述目标规则集合和/或所述目标常量集合描述所述目标题目类型的习题,其中,所述目标规则集合及所述目标常量集合均包含有限个元素;所述可判定性表示所述目标题目类型的习题存在有限个解答信息;所述可扩展性表示所述目标规则集合和/或所述目标常量集合中的元素可变。
在一种可能的实现方式中,所述目标题目类型包括:计算机编译相关课程中的题目类型;所述目标规则包括至少一个文法及至少一个经典算法,其中,所述经典算法表示所述计算机编译相关课程中用于对文法进行处理的算法;
所述目标习题生成算法包括文法复合算法及子算法调度算法,所述文法复合算法用于对多个种子文法进行复合生成复合文法;所述子算法调度算法用于确定对所述复合文法进行处理的经典算法;
所述根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述目标题目类型的至少一个习题和/或所述至少一个习题的解答信息,包括:
通过所述文法复合算法,基于所述目标规则集合及所述目标常量集合,对种子文法集合进行复合处理,得到目标复合文法;
通过所述子算法调度算法,在多个候选经典算法中,确定与所述目标题目类型对应的目标经典算法;并采用所述目标经典算法对所述目标复合文法进行处理,生成所述至少一个习题和/或所述至少一个习题的解答信息。
在一种可能的实现方式中,所述通过所述文法复合算法,基于所述目标规则集合及所述目标常量集合,对种子文法集合进行复合处理,得到目标复合文法,包括:
通过所述文法复合算法以产生式连接的方式,基于所述目标规则集合及所述目标常量集合,对所述种子文法集合中的至少一个种子文法进行复合处理,生成所述目标复合文法。
在一种可能的实现方式中,所述目标题目类型包括:数据库相关课程中SQL语句题目类型;所述目标规则包括SQL语法;
所述目标习题生成算法包括SQL语句生成算法;所述SQL语句生成算法用于生成在目标关系上可执行的SQL语句;
所述根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述目标题目类型的至少一个习题和/或所述至少一个习题的解答信息,包括:
在关系集合中选取所述目标关系;
通过所述SQL语句生成算法,基于所述目标规则集合,生成在所述目标关系上可执行的多个子句,并将所述目标常量集合带入到所述多个子句中;
通过拼接所述多个子句,生成所述至少一个习题和/或所述至少一个习题的解答信息。
在一种可能的实现方式中,所述目标特性包括:关系连接算法;所述关系连接算法用于确定第一关系与第二关系之间的目标连接方式;所述多个子句包括基于所述目标连接方式生成的子句。
在一种可能的实现方式中,所述目标题目类型包括:数据库相关课程中范式问题题目类型;所述目标规则集合包括范式问题的定义;
所述目标习题生成算法包括函数依赖集生成算法;所述函数依赖集生成算法用于获取不满足范式问题的函数依赖集;
所述根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述目标题目类型的至少一个习题和/或所述至少一个习题的解答信息,包括:
通过所述函数依赖集生成算法,基于所述目标规则集合及所述目标常量集合,确定不满足范式问题的目标函数依赖集;
基于目标关系及所述目标函数依赖集,生成所述至少一个习题和/或所述至少一个习题的答案。
在一种可能的实现方式中,所述确定不满足范式问题的目标函数依赖集,包括:
遍历所述目标关系中的属性组合,确定候选函数依赖集;
在所述候选函数依赖集中,选取不满足范式问题的目标函数依赖子集,得到所述目标函数依赖集。
根据本公开的另一方面,提供了一种习题自动生成装置,包括:
交互模块,用于获取目标题目类型;
生成模块,用于确定与所述目标题目类型对应的目标习题生成算法、目标规则集合及目标常量集合;其中,所述目标规则表示生成所述目标题目类型的习题需符合的规则,所述目标常量表示描述所述目标题目类型的参数、数据或符号;
所述生成模块,还用于根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述目标题目类型的至少一个习题和/或所述至少一个习题的解答信息;
所述交互模块,用于呈现所述至少一个习题和/或所述至少一个习题的解答信息。
根据本公开的另一方面,提供了一种习题自动生成系统,包括:上述一种习题生成装置。
根据本公开的另一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述习题自动生成方法。
根据本公开的另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述习题自动生成方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述习题自动生成方法。
通过本公开实施例,获取目标题目类型;确定与目标题目类型对应的目标习题生成算法、目标规则集合及目标常量集合;根据目标习题生成算法、目标规则集合及目标常量集合,生成至少一个习题和/或至少一个习题的解答信息;呈现至少一个习题和/或至少一个习题的解答信息。其中,所述目标规则表示生成所述目标题目类型的习题需符合的规则,所述目标常量表示描述所述目标题目类型的参数、数据或符号;目标规则集合及目标常量集合中元素的数量及种类可以灵活配置,从而能够自动生成海量的多样化习题;作为一个示例,还可以给出习题的参考答案和解答过程,这种低成本获取优质习题的途径,能有力地推动信息化教育发展和教育创新。用户可以根据自身需求选择目标题目类型,作为一个示例,还可以选择目标难度和/或目标特性,从而可以生成针对性强、易于上手、可控性强的习题,满足不同学生的个性化需求。其中,针对性强表示生成的每道习题涉及的知识点指向性强;易于上手表示消除了学生自己搜集习题的麻烦,能够在课后用较少的时间进行查缺补漏;可控性强表示学生可以通过提供的习题参数自主控制想要练习的题目类型及难度等。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的一种习题生成系统的结构示意图。
图2示出根据本公开一实施例的一种习题生成系统10的结构示意图。
图3示出根据本公布一实施例的用户交互层101的交互流程图。
图4示出根据本公开一实施例的《汇编与编译原理》核心算法的流程示意图。
图5示出根据本公开一实施例的《数据库原理》核心算法的流程示意图。
图6示出根据本公开一实施例的一种习题自动生成方法的流程图。
图7示出根据本公开一实施例的一种习题自动生成方法的流程图。
图8示出根据本公开一实施例的一种习题自动生成方法的流程图。
图9示出根据本公开一实施例的一种《汇编与编译原理》习题对应的类。
图10示出根据本公开一实施例的一种文法复合算法的流程图。
图11示出根据本公开一实施例的一种子算法调度算法的流程图。
图12示出根据本公开一实施例的一种编译原理习题生成算法的流程图。
图13示出根据本公开一实施例的生成《汇编与编译原理》习题时网络请求平均响应时间的示意图。
图14示出根据本公开一实施例的一种习题自动生成方法的流程图。
图15示出根据本公开一实施例的一种从数据库文件加载初始数据的流程示意图。
图16示出根据本公开一实施例的一种SQL语句生成算法的流程图。
图17示出根据本公开一实施例的一种关系连接算法的流程图。
图18示出根据本公开一实施例的生成《数据库原理》中SQL语句习题时网络请求平均响应时间的示意图。
图19示出根据本公开一实施例的一种习题自动生成方法的流程图。
图20示出根据本公开一实施例的一种函数依赖集生成算法的流程图。
图21示出根据本公开一实施例的生成《数据库原理》中范式习题时网络请求平均响应时间的示意图。
图22示出根据本公开一实施例的一种习题自动生成装置的结构图。
图23示出根据本公开一实施例的一种电子设备的结构示意图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本公开的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“示例性”、“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本公开中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:包括单独存在A,同时存在A和B,以及单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
在日常学习过程中,学生具有主动获取不同的习题的需求,以检验或稳固学习的知识点,其中,习题的主要来源是教材与习题集,众多本科/专科课程的教材与习题集目前普遍存在来源杂、数量少、难度不可控、搜集费时费力、重复度高、答案和过程缺失等不足,这给对课后练习存在更高需求的同学带来学习上的困扰,无法满足学生的个性化需求。
为了解决上述技术问题,本公开实施例提出了一种习题自动生成方法,通过人工智能生成内容技术(AIGC),能够自动生成海量、难度可控的多样化习题,并可以给出参考答案和解答过程,这种低成本获取优质习题的途径,可以满足不同学生的个性化需求,能有力地推动信息化教育发展和教育创新。
下面首先对本公开实施例中习题自动生成方法可能的应用场景进行示例性说明。
图1示出根据本公开一实施例的一种习题生成系统的结构示意图;如图1所示,习题生成系统10可以包括:用户交互层101、核心算法层102、数据存储层103。
示例性地,习题生成系统10中的各功能层可以在同一设备中实现,也可以不同设备中实现,对此不作限定;作为一个示例,习题生成系统10中各功能层可以均在用户终端中实现;例如,用户终端可以为智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能语音交互设备、智能家电等等电子设备,其中,用户交互层101可以通过用户终端的显示屏实现,核心算法层102可以通过用户终端的处理器实现,数据存储层103可以通过用户终端的存储器实现。作为另一个示例,习题生成系统10中各功能层也可以在用户终端及服务终端中实现,例如,服务终端可以为云服务器,其中,用户交互层101可以通过用户终端的显示屏实现,核心算法层102可以通过服务终端的处理器实现,数据存储层103可以通过用户终端的存储器实现。
用户交互层101位于最上层,以前端形式呈现给用户,以与用户进行交互,用户交互层101可以为用户提供条理清晰的指引,可以进行用户的身份认证(例如注册和登录),帮助用户自主选择期望的习题信息,例如,选择课程、选择题目类型、选择难度、选择特性等,从而使得用户可以方便快速选定自己所需要的题目类型等信息。进而,可以将用户选定的信息传输到核心算法层102。
核心算法层102位于中间层,负责接收用户通过用户交互层101选定的信息,并执行习题自动生成算法构造习题以及产生习题的答案。示例性地,可以根据用户选定的信息确定对应的习题生成算法,并执行相应的习题生成算法,将产生的习题返回给用户交互层101,还可以将产生的答案返回给用户交互层101,从而可以为用户呈现习题及习题的答案。
数据管理层103位于最下层,负责系统的数据采集和存储。示例性地,可以存储有用户账号、习题记录及日志记录运行、维护系统的必要数据,还可以存储为改善用户体验所需的分析数据,比如,对于每个用户,分别记录该用户关于每种题目类型、每种难度的习题的网络请求次数,这有助于分析用户的学习情况以及不同习题发挥的作用。
举例来说,以上述习题生成系统10用于提供《汇编与编译原理》及《数据库原理》两个课程的习题为例,即待选择的课程可以为:《汇编与编译原理》及《数据库原理》;图2示出根据本公开一实施例的一种习题生成系统10的结构示意图;如图2所示:
用户交互层101可以设置有“注册/登录”“选择课程”“选择题目”“调整难度”“获取题目”“显示答案”等选项,用户可以根据自己的需求选择相应的选项,以实现与习题生成系统10的交互;图3示出根据本公布一实施例的用户交互层101的交互流程图,如图3所示,用户可以通过用户交互层101选择课程,其中,有《汇编与编译原理》及《数据库原理》两门课程供用户选择;若用户选择了《汇编与编译原理》则可以进一步选择题目类型,例如,可以在消除左递归、计算First集(首符号集)/Follow集(跟随符号集)、LL(1)预测分析表、LR(0)自动机四个题目类型中任选其一;针对每一题目类型,配置了多种难度等级供用户根据需求进行选择,例如,LL(1)预测分析表题目类型提供3种难度等级,消除左递归、计算First/Follow集和LR(0)自动机等三种题目类型各提供5种难度等级,进而,用户可以通过用户交互层101获取到符合自己上述选择的习题。若用户选择了《数据库原理》则可以进一步选择的题目类型,例如,可以选择SQL语句范畴内的选择(select)、插入(insert)、更新(update)、删除(delete)、创建(create)、删除(drop)、修改(alter)、授权(grant)的八种子句的题目类型,这八种子句的题目类型分别对应了SQL语句中常见的八种子句;还可以选择范式问题范畴内的第二范式(2NF)和第三范式(3NF)两种题目类型。其中,SQL语句范畴可以划分为:数据操纵语言(data manipulation language,DML)、数据定义语言(datadefinition language,DDL)和数据控制语言(Data Control Language,DCL)三个子范畴,其中,DML子范畴包含选择(select)、插入(insert)、更新(update)和删除(delete)四种语句的题目类型,DDL子范畴包含创建(create)、删除(drop)和修改(alter)三种语句的题目类型,DCL子范畴包含授权(grant)一种语句的题目类型。需要说明的是,由于select语句特性多、语义丰富,提供了select子句题目类型对应的三种语句特性(也可称为语法特性)供用户选择,分别为:是否启用分组和聚合函数、是否启用子查询,以及是否启用多表连接。因此,根据启用的语句特性不同,在select子句题目类型下可以生成8种select子句习题。
核心算法层102设置有文法复合算法、调度算法、关系连接算法、SQL语句生成算法、函数依赖推断算法、范式分解算法等习题生成算法。核心算法层102根据用户在用户交互层101的选择,确定对应的习题自动生成算法并执行,从而自动生成用户期望的习题。图4示出根据本公开一实施例的《汇编与编译原理》核心算法的流程示意图,如图4所示,针对《汇编与编译原理》,首先实现了文法复合算法,该算法是《汇编与编译原理》习题生成的核心和基础,通过将输入的多个文法以产生式连接的方式进行复合来产生新文法,并可以在复合过程中引入随机性,可以用少量文法产出海量的文法;进而可以根据获得的复合文法构造出习题。为了构造习题的答案,实现了《汇编与编译原理》中常提到的7种经典算法,分别为:消除左递归、计算First集、计算Follow集、消除左公因子、消除不可达符号、计算LL(1)预测分析表、计算LR(0)自动机;这些经典算法接受一个复合文法的输入,输出习题的答案;同时,在经典算法执行过程中,通过跟踪算法的执行步骤,获得解题的过程和中间结果。图5示出根据本公开一实施例的《数据库原理》核心算法的流程示意图,如图5所示,针对《数据库原理》,习题的生成逻辑是根据给定数据库中的一些关系,生成在这些关系上可执行的SQL语句,进而基于获得的SQL语句构造习题。示例性地,可以通过数据文件迁移,将mdb文件(即Microsoft Access使用的一种数据库存储格式)转换为txt文件,再使用脚本读取文件,将这些关系与数据批量导入项目的数据库中,并抽取必要的信息,输出后端代码,迁移脚本输出的后端代码包含了数据库的关系模式,这些代码可作为生成算法的输入;以此为基础,实现了SQL语句生成算法,产生可执行的SQL语句以及对其的语言描述。对于select子句习题,还包含在项目数据库中执行获得的查询结果。针对范式问题的题目类型,实现了问题构造算法,在项目数据库的关系模式上,采用逆向推断的思想,获取可能不满足对应范式问题的函数依赖集,从而产生习题;此外,还复现了经典算法,包括:求最小依赖集、求函数闭包、求候选码、第二范式分解算法、第三范式保持依赖且无损连接性的分解算法。
数据管理层103对用户使用习题自动生成系统10的过程中所生成的习题及日志进行记录。
需要说明的是,本公开实施例描述的上述习题自动生成系统及系统中各部分的功能是为了更加清楚的说明本公开实施例的技术方案,并不构成对于本公开实施例提供的技术方案应用场景的限定,本领域普通技术人员可知,针对其他相似的或新的场景的出现,本公开实施例提供的技术方案对于类似的技术问题同样适用,例如,习题自动生成系统中还可以配置集成其他常见的习题集功能,如习题收藏、历史统计、答题表现预测、自动判题等,以及基于语言大模型的习题描述、分析、批改等功能。
下面对本公开实施例中提供的习题自动生成方法进行详细说明。
图6示出根据本公开一实施例的一种习题自动生成方法的流程图。示例性地,该方法可以由上述图1或图2所示习题自动生成系统或该系统的至少一个部件执行,如图6所示,该方法可以包括:
步骤601、获取目标题目类型。
其中,题目类型可按其所考察的知识点来分类,例如,考察某一知识点的题目算作一种题目类型。示例性地,可以预先配置多个候选题目类型以供用户选择。例如,针对某一课程,可以预先配置一个或多个候选题目类型。作为一个示例,在预先配置有多个课程的候选题目类型的情况下,可以首先获取用户所选取的目标课程,进而获取用户在候选题目类型中选取出的该目标课程下的目标题目类型。
示例性地,可以通过上述图1中习题生成系统10的用户交互层101,获取用户输入的目标题目类型或者用户在多个候选题目类型中所选取的目标题目类型。
在一种可能的实现方式中,还可以获取目标难度和/或目标特性;所述目标特性表示习题中所体现的知识点特性。可以理解的是,针对于同一题目类型的不同习题,可以具有不同的知识点特性,知识点特性也可以理解为某一知识点中所包含的更具体的知识点,例如,针对《英语》课程中时态这一题目类型,时态这一题目类型的习题考查“时态”这一知识点,“时态”这一知识点又可以进一步细分为过去时、现在时、将来时等等不同知识点特性,若用户选择“过去时”作为目标特性,则可以生成考查“时态”知识点中“过去时”这一知识点特性的习题;这样,通过获取用户设定的目标特性,则后续可以生成更针对性地考查某一知识点中更具体的知识点特性的习题。
示例性地,可以预先配置多个难度等级和/或多个特性供用户选择,其中,难度等级的数量及特性的数量可以根据需求进行设定,对此不作限定。
考虑到目标题目类型的习题能够被自动化生成;示例性地,所述目标题目类型具有:可描述性、可判定性、可扩展性中的一项或多项;其中,所述可描述性表示通过所述目标规则集合和/或所述目标常量集合描述所述目标题目类型的习题,其中,所述目标规则集合及所述目标常量集合均包含有限个元素,即目标题目类型的各习题均可用有限条规则和/或有限个常量完全描述;所述可判定性表示所述目标题目类型的习题存在有限个解答信息,即目标题目类型的习题均存在有限个正确答案;所述可扩展性表示所述目标规则集合和/或所述目标常量集合中的元素可变,例如,可以进行增加、修改或删除等。
具体地,可描述性是指通过算法手段描述题目类型的习题是可行的,即可以将通过构造规则集合和常量集合定义一个题目类型;规则集合中的规则指的是该题目类型考查内容的泛用框架,即所有该题目类型的习题都符合的一些特征或规则;常量集合中的常量则是指在描述题目类型中各习题用到的可替换量(如参数、数据或符号等),或习题的解答信息中涉及的某些具体数据或符号。可以理解的是,一个题目类型具有可描述性意味着可以将构造相对复杂的整个题目类型的问题转换为相对简单的定义并构造规则集合和常量集合的问题。比如,“一男一女,男方想看足球,女方想看时装;男方想和女方在一起,女方想避开男方。给出表述该博弈的博弈矩阵”是一个基础的博弈论问题,该问题蕴涵了“一个X*X矩阵,X=2,有行A、B,列C、D”和“用(R,C)表示R行C列的值,(A,C)>(B,C),(A,D)<(B,D),且(A,C)-(B,C)>(B,D)-(A,D)”两条规则和{A=男方,B=女方,C=足球,D=时装}四个常量,构造规则集合和常量集合后即可用算法形式描述该题目类型。
可判定性保证了算法能够为目标题目类型的各习题给出相对标准的参考答案,同时用户对习题的解答可以被判断为对或错,即目标题目类型不为开放式的主观性题目类型。比如,“将一句英文变为过去式”和“对一个数据集应用某种给定的排序算法”分别表述了一类可通过算法生成的题目类型,而“对某种社会难题提出解决办法”和“对历史人物进行评价”所表述的主观性题目类型,由于无法给出标准的参考答案,不宜作为生成算法的目标;这是因为主观性题目类型的习题一般难以给出标准统一、评判合理的答案;考虑到习题自动生成算法应用场景一般是在线习题集,在无法给出高可信度的标准参考答案的情况下,用户做题时很难实现正反馈,容易呈现无效训练。
可扩展性保证了算法生成的目标题目类型的不同习题之间具有区分度。考虑到通过算法手段生成习题主要优势在于其内容和难度上的多样和可控。因此,习题生成算法的所生成的目标题目类型的不同习题应当是有相同特征的一类习题,而非一个固定习题的不同版本。因此,作为习题生成算法的目标题目类型应当具备可替换的规则或常量。考虑一般情况,在一类题目类型的集合U中,往往存在该类题目类型的特例子集这个子集A中的题目类型a对应的规则集合中仅包含规则集合P(U)中的部分规则,即规则集合P(a)为题目类型a的规则集合;示例性地,通过划分特例子集,可以对目标题目类型进行进一步的细化,从而引入难度等级和随机性因素。在常量集合上进行值替换是另一种引入随机性的方法。例如,为了给一名德语学生出造句题,可以将语法集合作为规则集合,在不同的语法子集上构造语句;同样结构的语句通过赋予不同常量集合表述不同语义,增加同一题目类型中不同习题的丰富度。不同规模的语法子集存在不同复杂度,从而产生难度等级。考虑到通过常量替换生成的同一题目类型的不同习题在习题结构和考察知识点上一般没有差别或差别很小,但是存在表述上的差异,这种差异有助于防止用户机械性地记忆习题,将用户的注意力转向题目类型考查的通性知识;此外,也避免了重复出现的常量给用户带来的无聊感。
这样,目标题目类型满足可描述性、可判定性及可扩展性,可描述性保证了用算法描述目标题目类型的可行性,可判定性确保目标题目类型的习题能够提供有效的答案,从而帮助用户实现自主学习。可扩展性保证了算法生成的目标题目类型的不同习题之间有区分度,确保生成多条习题的有效性。示例性地,在预先配置多个候选题目类型时,也可通过判断某一题目类型是否具有可描述性、可判定性及可扩展性,确定是否将该题目类型作为候选题目类型。
步骤602、确定与所述目标题目类型对应的目标习题生成算法、目标规则集合及目标常量集合;
其中,所述目标规则表示生成所述目标题目类型的习题需符合的规则,所述目标常量表示描述所述目标题目类型的参数、数据或符号。
可以理解的是,所生成的目标题目类型的习题应符合目标规则,而目标规则与目标题目类型相关,即不同的知识点对应的习题,应符合该知识点本身的规则。示例性地,通过调整目标规则集合中目标规则的个数,该习题的难度等级随之改变,从而增加了生成习题的丰富度,满足不同学习能力的用户需求。示例性地,可以通过调整目标常量集合中目标常量的数量及种类,所生成的不同习题的数量越大,习题的多样性越高。作为一个示例,目标规则集合所包含的目标规则的数量及目标常量集合中所包含的目标常量的数量,可以根据需求预先设定;作为另一个示例,可以将预先配置的难度等级与目标规则集合所包含的目标规则的数量相关联,例如,难度等级越高,目标规则集合所包含的目标规则的数量越多。
示例性地,可以在候选习题生成算法集合中确定目标题目类型对应的目标习题生成算法;其中,候选习题生成算法可以为预先配置,配置候选习题生成算法的可能实现方式参见下文相关表述。
步骤603、根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述目标题目类型的至少一个习题和/或所述至少一个习题的解答信息。
该步骤中,目标习题生成算法可以采用目标常量集合中的目标常量,生成满足目标规则集合中各目标规则的习题。其具体实现方式可参照下文相关表述。
其中,习题表示用于练习或巩固知识点的题目。一般来说,某一题目类型的习题是一类包含相同信息或具备相同结构的符合规则的习题。习题生成算法的生成目标即为对给定题目类型生成这些共性的信息和结构,同时基于规则集合及常量集合中丰富可变的元素,从而可以生成多样化的习题及该习题的解答信息。这种自动生成习题的方式作为一种人工智能生成内容技术,实现了低成本获取优质海量习题,可以满足不同学生的个性化需求,能有力地推动信息化教育发展和教育创新。
示例性地,解答信息包括所述至少一个习题中各习题的答案,和/或所述答案的推导过程。作为一个示例,习题的答案具有唯一性,则可以生成一个标准答案;作为另一个示例,习题的答案不唯一,则可以生成一个参考答案。
在一种可能的实现方式中,该步骤603可以包括:根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,在所述目标难度和/或目标特性的约束下,生成所述至少一个习题和/或所述至少一个习题的解答信息。由于目标特性可以更针对性地考查某一具体知识点,目标难度可以更针对性地满足不同学习能力的用户需求,这样,在目标难度和/或目标特性的约束下,可以生成满足用户个性化需求的习题和/或所述习题的解答信息。
示例性地,不同目标特性对应的具体知识点不同,可以理解的是,在目标特性的约束下,相对于符合目标规则集合中各目标规则,生成的习题新增了一个目标特性作为约束,即生成的习题在符合目标规则集合中各目标规则的基础上,还需考查到目标特性对应的具体知识点。
示例性地,不同目标难度对应的目标规则集合中的目标规则数量不同,可以理解的是,目标规则集合中目标规则越多,则对应的习题难度越大。
步骤604、呈现所述至少一个习题和/或所述至少一个习题的解答信息。
示例性地,可以通过上述图1中用户交互层101的显示屏向用户呈现至少一个习题和/或该至少一个习题的解答信息。
示例性地,可以响应于用户的指令,呈现至少一个习题和/或至少一个习题的解答信息,例如,响应于用户“获取题目”的指令,可以向用户呈现生成的习题;再例如,响应于用户“显示答案”的指令,可以向用户呈现当前习题的解答信息。
这样,通过上述步骤601-604,用户可以方便快捷的获取满足自己需求的习题。举例来说,以上述图2中场景为例,用户可以首先在上述图2中习题生成系统10中注册账户,然后登录到习题生成系统10后,依次进行课程的选择、题目类型选择及难度的选择,在选好课程、题目类型和难度后,用户可以点击“下一题”获取习题,点击“显示答案”获取或隐藏解答信息,点击“显示过程”获取或隐藏推导步骤;示例性地,每次获取新习题后该习题的解答信息默认隐藏。
本公开实施例中,获取目标题目类型;确定与目标题目类型对应的目标习题生成算法、目标规则集合及目标常量集合;根据目标习题生成算法、目标规则集合及目标常量集合,生成至少一个习题和/或至少一个习题的解答信息;呈现至少一个习题和/或至少一个习题的解答信息。其中,所述目标规则表示生成所述目标题目类型的习题需符合的规则,所述目标常量表示描述所述目标题目类型的参数、数据或符号;目标规则集合及目标常量集合中元素的数量及种类可以灵活配置,从而能够自动生成海量的多样化习题;作为一个示例,还可以给出习题的参考答案和解答过程,这种低成本获取优质习题的途径,能有力地推动信息化教育发展和教育创新。用户可以根据自身需求选择目标题目类型,作为一个示例,还可以选择目标难度和/或目标特性,从而可以生成针对性强、易于上手、可控性强的习题,满足不同学生的个性化需求。其中,针对性强表示生成的每道习题涉及的知识点指向性强;易于上手表示消除了学生自己搜集习题的麻烦,能够在课后用较少的时间进行查缺补漏;可控性强表示学生可以通过提供的习题参数自主控制想要练习的题目类型及难度等。
进一步地,在执行图6中各步骤之前,可以预先确定一个或多个候选题目类型,并在确定候选题目类型后,则针对候选题目类型配置对应的习题生成算法,以作为候选习题生成算法。
图7示出根据本公开一实施例的一种习题自动生成方法的流程图,如图7所示,可以包括以下步骤:
步骤701、通过分析候选题目类型,确定候选题目类型对应的规则集合和常量集合。
其中,候选题目类型为满足可描述性、可判定性及可扩展性的题目类型。
该步骤中,可以根据题目类型特征的分析和定义,将选定的符合可描述性的题目类型,抽象出对应的规则集合和常量集合,从而对该题目类型的各习题进行格式化表达;规则集合和常量集合应当能准确、充分地表达该题目类型的各习题,同时保持题目类型的可扩展性。
步骤702、从细粒度到粗粒度设计类,类之间的关系符合规则集合中的规则,最粗粒度的类能够完整表示习题;
该步骤中,将上述对题目类型的定义(规则集合和常量集合)以代码形式实现,示例性地,将常量集合中常量按种类分别设计细粒度的类(class),不同类之间的关系表达规则集合中的规则,然后设计更粗粒度的类以表达更多规则,从而通过类实现对完整题目类型的表达。
步骤703、从细粒度到粗粒度设计生成算法,每层使用上一层的结果作为输入。
该步骤中,实现根据细粒度类对象生成粗粒度类对象,从而表达规则集合中的规则,表达的规则多有助于提高最终生成习题的丰富度。
步骤704、为最细粒度的生成算法准备足量输入。
该步骤中,为习题自动生成算法的提供尽量多的原始数据输入,一般来说,输入的原始数据越大,总的习题空间就越大,及生成的习题数量越多。
可以理解的是,上述步骤703及步骤704两步的合理运用可以确保候选习题生成算法生成海量、不重复的习题。
步骤705、引入难度、随机性等要素;
该步骤中,可以添加有助于提高习题质量的参数,比如设计不同难度用到不同的规则子集,从而满足不同用户的差异化需求。
步骤706、在构造习题的过程中获取的解答信息或通过专门的解题算法获得解答信息。
该步骤中,由于题目类型满足可判定性的要求,从而使得生成的不同习题有助于用户的自主学习。
下面以目标题目类型包括:计算机编译相关课程中的题目类型,其中,相关课程为《汇编与编译原理》为例,对上述图6中习题自动生成方法进行示例性地说明。
图8示出根据本公开一实施例的一种习题自动生成方法的流程图,如图8所示,可以包括以下步骤:
步骤801、获取计算机编译相关课程中的题目类型。
示例性地,计算机编译相关课程中的题目类型可以包括:消除左递归、计算First/Follow集、LL(1)预测分析表、LR(0)自动机等等。消除左递归、计算First/Follow集、LL(1)预测分析表、LR(0)自动机分别代表不同的知识点,可以获取用户在上述四个题目类型中所选取的任一题目类型。
示例性地,可以获取计算机编译相关课程中的题目类型的目标难度;示例性地,针对每一计算机编译相关课程中的题目类型,配置了多种难度等级供用户根据需求进行选择,例如,LL(1)预测分析表题目类型提供3种难度等级,消除左递归、计算First/Follow集和LR(0)自动机等三种题目类型各提供5种难度等级。
步骤802、确定与所述计算机编译相关课程中的题目类型对应的目标习题生成算法、目标规则集合及目标常量集合。
示例性地,所述目标规则集合包括至少一个文法及至少一个经典算法所对应的规则,。其中,文法、经典算法都是计算机编译中的概念,文法表示用于描述语言的语法结构,经典算法表示所述计算机编译相关课程中用于对文法进行处理的算法。文法和经典算法均具有一定的规则,例如文法的结构规则等等,这些规则是生成这一类习题是所需要遵循的目标规则。所述目标习题生成算法包括文法复合算法及子算法调度算法,所述文法复合算法用于对多个种子文法进行复合生成复合文法;所述子算法调度算法用于确定对所述复合文法进行处理的经典算法。可以理解的是,种子文法可以包括原有的文法,对原有的多个文法进行复合,可生成新的复合文法。
示例性地,可以预先确定《汇编与编译原理》课程中题目类型的规则集合和常量集合。生成《汇编与编译原理》课程中题目类型的问题可以转化为生成文法并应用经典算法的问题。一个文法的形式化可以定义为一个文法四元组G=(VT,VN,P,S),其中,VN表示非终结符集合,指某个文法中所有被视为需要进一步转换的符号的集合,也就是可以通过规则推导而得到最终结果的符号,非终结符通常用大写字母表示,例如S、A、B等。VT表示终结符集合,指某个文法中所有被视为最终结果的符号的集合,也就是可以出现在文本中的实际字符;例如,终结符集合可以包括数字、字母、符号等。P表示产生式集合,指描述某个文法中规则的集合,也即是上下文无关文法的规则,产生式描述从一个符号(或一组符号)生成另一个符号(或一组符号)的过程。产生式有两个部分:一个非终结符和它所对应的终结符或者非终结符的序列,例如,A->BC、B->b、C->c等。S∈VN为开始符号,指某个文法中最开始的符号,开始符号必须是一个非终结符。示例性地,可以通过文法四元组用于描述一种语言的规则。《汇编与编译原理》课程中题目类型的第一条规则:一个文法四元组(VT,VN,P,S)和考察的经典算法类型构成。第二条规则:产生式由一个非终结符α和一组符号β构成,形如α→β。则目标规则集合中包括第一规则及第二规则;示例性地,VN∪VT为该题目类型的常量集合,即目标常量集合。
示例性地,可以根据上述步骤所确定的两条规则进行类的设计。最细粒度的类为符号,有非终结符、终结符两类;类产生式包含一个非终结符号α和一个符号串β,分别为产生式左右两侧;类文法包含两组符号,分别代表非终结符集合和终结符集合,还包含一组产生式,非终结符集合中的一个符号被记作起始符号,图9示出根据本公开一实施例的一种《汇编与编译原理》习题对应的类。示例性地,可以根据所述多个粒度的类,确定计算机编译相关课程中的题目类型对应的习题生成算法;其中,粗粒度类对象根据细粒度类对象生成。如果不考虑常量集合(即符号类层面)的差异,则不同习题的差别仅来自产生式。因此,生成不同习题的过程实际上是在不同常量集合上,生成不同产生式集合的过程。产生式集合的生成有两种思路:第一种是对给定的常量集合,遍历地构造产生式左侧的非终结符和右侧的符号组,理论上,能够找到所有该常量集合上存在的产生式。然而,考虑到上述第一条规则,该题目类型中的习题除了包含文法,还包含考察的经典算法类型,例如,在《汇编与编译原理》中部分包含某些经典算法,这些算法大都要求习题中的文法满足某些性质,如包含左递归、满足LL(1)文法性质等;由于遍历手段构造出的产生式集合无法保证这些性质,会生成大量的无效结果,需要额外实现筛选算法,挑出其中合适的产生式集合,这会带来较大的额外性能开销。另外一种思路是,通过预先选定一些文法,基于这些文法去生成更多文法。这些给定的文法被称为种子文法(例如,可以将现有题库中的文法作为种子文法)。本公开实施例中采用第二种思路,预先构建了文法复合算法。该文法复合算法用于对多个种子文法进行复合生成复合文法,示例性地,该文法复合算法可以以上下文无关文法(context-free grammar,CFG)的集合作为输入,输出复合产生的新的上下文无关文法。还可以预先构建子算法调度算法,以确定对所述复合文法进行处理的经典算法;示例性地,子算法调度算法以文法复合算法输出的一个上下文无关文法作为输入,基于相关经典算法实现,确定对输入的上下文无关文法进行处理的经典算法,并输出一个上下文无关文法或相关习题、答案、过程字符串。
步骤803、根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述计算机编译相关课程中的题目类型的至少一个习题和/或所述至少一个习题的解答信息。
在一种可能的实现方式中,该步骤可以包括:通过所述文法复合算法,基于所述目标规则集合及所述目标常量集合,对种子文法集合进行复合处理,得到目标复合文法;通过所述子算法调度算法,在多个候选经典算法中,确定与所述目标题目类型对应的目标经典算法;并采用所述目标经典算法对所述目标复合文法进行处理,生成所述至少一个习题和/或所述至少一个习题的解答信息。
在一种可能的实现方式中,所述通过所述文法复合算法,基于所述目标规则集合及所述目标常量集合,对种子文法集合进行复合处理,得到目标复合文法,包括:通过所述文法复合算法以产生式连接的方式,基于所述目标规则集合及所述目标常量集合,对所述种子文法集合中的至少一个种子文法进行复合处理,生成所述目标复合文法。这样,通过将子文法集合中的至少一个种子文法以产生式连接的方式进行复合来产生新文法,其中,至少一个种子文法可以随机选择,从而可以在文法复合过程中引入随机性,实现用少量文法产出海量的文法。示例性地,还可以在文法复合算法中,预设随机选取至少一个种子文法的次数m作为复杂度,可以理解的是,m的数值越大,生成的复合文法越复杂,相应的,通过该复合文法生成的习题越复杂,难度越大。
举例来说,图10示出根据本公开一实施例的一种文法复合算法的流程图,如图10所示,可以包括以下步骤:该文法复合算法的输入为:上下文无关文法集合G以及习题复杂度m;文法复合算法进行如下处理:(1)首先从上下文无关文法集合G中随机选取出一个文法g,并从上下文无关文法集合G中删除该文法g;(2)然后,将取文法的次数c加1(c的初始值为0),从上述删除文法g后的上下文无关文法集合G中随机选取一个文法g',并从上下文无关文法集合G中删除文法g';(3)从文法g中随机取非终结符A;(4)在文法g'的所有产生式中,将起始符号S'用非终结符A替代;将起始符号S'从非终结符集合中删除A;(5)将文法g'的非终结符集合、终结符集合、产生式集合分别添加到文法g的非终结符集合、终结符集合、产生式集合中,则得到的文法g即为复合后的文法;(6)然后判断从上下文无关文法集合G中取文法的次数c是否达到m次,若达到m次则输出步骤(5)中得到的文法g,若没有达到m次则重复执行上述步骤(2)-(6)直到c达到m次则输出文法g。
进一步地,在得到目标复合文法之后,可以将该目标复合文法输入到子算法调度算法,以确定对该目标复合文法进行处理的经典算法;示例性地,候选经典算法可以包括消除左递归、计算First集、计算Follow集、消除左公因子、消除不可达符号、计算LL(1)预测分析表、计算LR(0)自动机,这些算法接受一个文法的输入,输出习题的答案。示例性地,在经典算法执行过程中,可以通过跟踪算法步骤,获得解题的过程和中间结果。
举例来说,图11示出根据本公开一实施例的一种子算法调度算法的流程图,如图11所示,子算法调度算法的输入为上下文无关文法g(例如,可以为通过上述文法复合算法生成的复合文法g)、子算法列表f{i}(可以包括消除左递归f{1},消除不可达符号f{2},消除左公因子和冗余符号f{3},计算First集f{4},计算Follow集f{5},计算LL(1)预测分析表f{6},以及计算LR(0)自动机f7)及题目类型t(例如,题目类型可以包括消除左递归(t=1)、计算First/Follow集(t=2)、LL(1)预测分析表(t=3)、LR(0)自动机(t=4))。子算法调度算法进行如下处理:(1)取i=1(2)在子算法列表中选取子算法f{i}。(3)判断t的值是否与i相等,即当前子算法与当前题目类型t是否匹配;若t=i,则输出当前子算法f{i}的输出,即输出当前子算法f{i}对上下文无关文法g的处理结果;若t≠i,则进一步执行步骤(4)判断子算法f{i}的输出(即子算法f{i}对上下文无关文法g的处理结果)是否满足子算法f{i+1}的输入要求,在执行步骤(4)中,若满足则将i的取值加1,并重复执行步骤(2)-(3),若不满足则返回空值,并可以提示调整输入信息。
进一步地,以文法复合算法和子算法调度算法为基础,图12示出根据本公开一实施例的一种编译原理习题生成算法的流程图,用于生成《汇编与编译原理》习题,如图12所示,编译原理习题生成算法由上述文法复合算法及子算法调度算法进行串行连接,编译原理习题生成算法的输入包括:上下文无关文法集合G、习题复杂度m、子算法列表f{i}及题目类型t。在编译原理习题生成算法执行过程中,先执行上述文法复合算法,根据上下文无关文法集合G及习题复杂度m进行处理,得到复合后的文法g;然后执行子算法调度算法,根据该复合后的文法g、子算法列表f{i}及题目类型t,得到子算法生成的处理结果s(包括文法、习题答案、解题过程等JSON字符串)。
作为一个示例,目标题目类型为“计算LR(0)自动机”,则通过上述文法复合算法,生成新的LR(0)文法X1,这样,可以生成习题-计算LR(0)文法X1的自动机。进而,可以根据子算法调度算法,选出需调度的算法-LR(0)自动机计算算法,这样,将该LR(0)文法X1输入到该LR(0)自动机计算算法中,可以生成答案。
作为另一个示例,目标题目类型为“计算LL(1)预测分析表”,则通过上述文法复合算法,生成新的LL(1)文法X2,这样,可以生成习题:计算LL(1)文法X2的预设分析表。进而,可以根据子算法调度算法选出需调度的算法-LL(1)预测分析表计算算法,这样,将该LL(1)文法X2输入到LL(1)预测分析表计算算法中,可以生成答案,例如,可以执行消除左公因子和冗余符号,并记录处理后的文法。
作为另一个示例,目标题目类型为“消除左递归”,则通过上述文法复合算法,生成一个新的包含左递归的文法X3,这样,可以生成习题-消除文法X3的左递归。进而,可以根据子算法调度算法选出需调度的算法-消除左递归,这样,将文法X3输入都消除左递归算法中,可以生成答案及解题过程。
作为另一个示例,目标题目类型为“计算First/Follow集”,则通过上述文法复合算法,生成一个新的文法X4,这样,可以生成习题-计算文法X4的First/Follow集。进而,可以根据子算法调度算法选出需调度的算法-First/Follow集计算算法,这样,将文法X4输入到First/Follow集计算算法中,可以生成答案。
需要说明的是,上述多个经典算法彼此之间存在执行顺序和部分依赖关系,需要根据用户在前端选定的题目类型进行调度,选择经典算法按公知的正确顺序执行。此外,考虑到文法复合算法只保证输出为CFG,而LL(1)文法是CFG的一个真子集。在子算法调度过程中,注意到题目类型为“计算LL(1)分析表”时,如果算法执行到该步发现文法复合算法产生的并非LL(1)文法,那么需要文法复合算法重新执行,然而这会带来较大的性能损失,因此可以记录每次生成习题用到的参数(包括所选的种子文法和复合过程中的参数),在后续需要生成LL(1)文法时可以避免采用这些无效的参数组合;此外,对文法复合算法的输出文法进行消除左公因子和冗余符号,可一定程度上提高LL(1)文法的产生率。
步骤804、呈现所述至少一个习题和/或所述至少一个习题的解答信息。
这样,通过上述步骤801-804,可以得到《汇编与编译原理》课程中题目类型对应的习题及解答信息。《汇编与编译原理》课程中习题取决于文法,因此,这部分算法能够生成的习题数量等于文法复合算法能生成的文法数量。假设取n个种子文法作为输入,生成习题所需的一个复合文法。在n个种子文法中选择k个种子文法的复合共有种可能;假设选择的k个种子文法分别有m1,…,mk个非终结符,则第一次文法复合能够产生m1种不同的复合文法,第二次复合能够产生m1+m2-1种不同的复合文法,以此类推,最终产生的不同的复合文法数量为1-k+Σ{1≤i≤k}mi。因此,在n个种子文法和复杂度为k的情况下,通过执行上述文法复合算法能够生成的不同复合文法数量为/> 用/>表示所有种子文法的平均非终结符个数,可以将上式转化为/>示例性地,考虑到在文法复合过程中,如果一个文法在替换起始符号后,其产生式集合是另一个文法的子集,那么这两个文法复合后将不会产生新文法,因此,可以预先设定n个种子文法中任意两个种子文法的产生式集合、非终结符集合、终结符集合中的至少一项不重合,从而保证产生的复合文法均为新的文法。
在时间性能方面,本公开实施例中习题生成算法包含较多的子算法,特别是在生成LL(1)文法时具有随机性,因此无法给出明确的复杂度。实际上,从系统的角度用户更关心平均请求用时。使用JMeter作为测试工具,测试了在100,500,1000并发量下不同题目类型(均为最高复杂度)的平均响应时间,图13示出根据本公开一实施例的生成《汇编与编译原理》习题时网络请求平均响应时间的示意图,如图13所示,其中橙色代表LL(1)预测分析表,灰色代表LR(0)自动机,蓝色代表其他题目类型。系统的平均响应时间在1000并发量下保持在1s内,考虑到该习题生成算法一般部署于教学场景,并发量一般在1000以下,因此本公开实施例中习题自动生成算法具有良好的时间性能。
下面以目标题目类型为数据库相关课程中结构化查询语言(Structured QueryLanguage,SQL)语句题目类型,其中,相关习题为《数据库原理》为例,对上述图6中习题自动生成方法进行示例性地说明。
图14示出根据本公开一实施例的一种习题自动生成方法的流程图,如图14所示,可以包括以下步骤:
步骤1401、获取数据库相关课程中SQL语句题目类型。
示例性地,SQL语句题目类型,可以包括选择(select)、插入(insert)、更新(update)、删除(delete)、创建(create)、删除(drop)、修改(alter)、授权(grant)的八种子句的题目类型,这八种子句的题目类型分别对应了SQL语句中常见的八种子句,即分别代表了八个不同的知识点。
示例性地,可以获取数据库相关课程中SQL语句题目类型的目标特性;示例性地,针对select语句题目类型,可以配置的三种语句特性供用户选择,分别为:是否启用分组和聚合函数、是否启用子查询,以及是否启用多表连接。
步骤1402、确定与所述数据库相关课程中SQL语句题目类型对应的目标习题生成算法、目标规则集合及目标常量集合。
所述目标规则集合包括SQL语法;所述目标习题生成算法包括SQL语句生成算法;所述SQL语句生成算法用于生成在目标关系上可执行的SQL语句。其中,目标关系表示数据库中的“关系”,可用“表”来表示。
示例性地,可以预先确定SQL语句题目类型的规则集合和常量集合。可以理解的是,生成SQL语句的基本规则是遵循SQL的语法,因此,针对SQL语句题目类型,规则集合即为SQL语法集合。
示例性地,SQL语句题目类型对应的目标规则集合可以包括:第一条规则:SQL语句由一系列子句有序拼接而成。第二条规则:每一子句由子句类型和表达式构成。其中,子句类型可以为select、from、join、natural join、on、where、group by、having、insert、update、set、delete、create、drop、alter、grant等子句。表达式是对SQL子句中子句名后的其他内容的统称,例如,在select子句”select*”中的”*”就是一个表达式。第三条规则:表达式的结构包括:1.常量,2.常量+操作符+常量,3.表达式+连接符+表达式。其中,常量可以包括关系名、属性名、字符、数字,即SQL语句题目类型对应的目标常量集合包括这些常量;操作符包括=、≠、>、<、≥、≤、IN,连接符可以包括AND、OR。表达式的结构根据各类型的子句进行总结归纳得出,且支持嵌套。
示例性地,根据上述确定的规则,可以首先定义描述SQL语句的相关类。示例性地,最细粒度的类可以称为原子,该类的取值可以是数据库中某个关系的名称(即关系名),或关系中某个属性的名称(即属性名),也可以是某个字符串或数字,同一粒度的还有两个枚举类操作符和连接符,内容与上述第三条规则相同。即最细粒度的类包括:原子、操作符、连接符。类表达式具有三种类型,分别对应第三条规则的三种表达式结构,第一种结构的表达式包含一个原子,第二种包含两个原子和一个操作符,第三种则包含两个表达式和一个连接符;这样,将上述原子类中元素进行组合,从而可以得到更高粒度的类,即类表达式。最粗粒度的类是子句,包含一个子句类型和一个表达式。定义上述类之后,可以表达简单的SQL语句结构,例如,“select name from Student;”可以用两个类型分别表达select和from这两个子句的具体对象(其中,name是一个属性名,表示select子句的对象;Student是一个关系名,表示from子句的对象)。两个子句还在一起,还可以作为一个子句。该步骤中,从细粒度到粗粒度设计类,类之间的关系符合规则集合中的规则,最粗粒度的类能够完整表示题目类型中习题。
进一步地,可以结合SQL的一些语句特性,确定SQL语句题目类型的规则集合中其他规则,从而增强所生成习题的表达能力、提高习题的丰富度,示例性地,语句特性可以包括关系连接(join操作)、分组和聚合函数(如求和函数SUM、求平均函数AVG、最大值函数MAX、最小值函数MIN和计数函数COUNT等)及子查询。需要说明的是,由于SQL语句种类繁多、语句特性庞杂,本公开实施例中,以部分SQL子句类型(例如,select、from、join、naturaljoin、on、where、group by、having、insert、update、set、delete、create、drop、alter、grant)和语句特性(例如关系连接(join操作)、分组和聚合函数、子查询)为例进行说明。
作为一个示例,考虑双关系的join操作,需要从已有的关系集合中选择一对关系进行连接,连接方式可以包括:交叉连接、自然连接、外连接,以及除自然连接之外的内连接(如所述的内连接均为该范围)。为了保证连接操作是有意义的,除了交叉连接,其他类型的连接都要求选择出的两个关系符合一定特征。于是,引入第四条规则:如果两个关系存在相同类型的属性,那么可以进行外连接、除自然连接之外的内连接;如果两个关系存在名字和类型均相同的属性,那么可以进行自然连接。外连接和除自然连接之外的内连接包含on子句;on子句一般含有一个或多个比较条件,为了与where子句区分,可以规定on子句中至少有一个比较条件是两个属性间的比较。被连接的两个关系中的记录(数据)两两匹配,只有满足on子句条件的两条记录才被保留。不同类型的属性不能比较,因此只有两个表具有相同类型的属性时,才可能生成on子句,才能够进行外连接或除自然连接之外的内连接。自然连接是一种特殊的内连接,没有on子句,这种连接自动为两个关系中的同名属性创建比较条件,因此为了与其他连接方式有所区别,要求两个关系必须有同名同类型的属性。生成习题时,在满足条件的连接方式中随机选择;连接后的新关系仍可以继续连接。
需要说明的是,考虑到在生成SQL语句的过程中,允许重复地选择同一个关系,此时需要为每次选择的关系添加别名,其中的属性名用“关系别名.属性名”表示。
作为另一个示例,将分组和聚合函数放在一起讨论。为了描述这种语句特性,需要实现group by和having两类子句,以及对属性添加聚合函数。根据SQL语法,可以在规则集合中添加规则-第五条规则:存在group by子句时,select子句中表达式包含的具体属性要么在group by子句中,要么以聚合函数形式出现;having子句不包含group by子句中的属性;第六条规则:存在group by子句时,才能存在having子句,having子句中的比较条件包含的具体属性必须添加聚合函数。生成group by子句的难点是在关系上选取合适的属性进行分组。从理论上讲,任意属性都可以用于分组。但是因为对于不重复的属性分组后,每组仅存在1条记录,而本公开实施例中,所输入到习题生成关系中的记录数量较少,所以大部分属性都没有重复记录,这限制了生成习题的丰富度。因此,在生成group by子句前,预先对习题生成系统中的所有关系进行查询,记下有重复记录的属性,仅使用这些属性进行分组。在应用聚合函数时,需要根据属性类型进行限制,比如AVG()只能对数字类型的属性使用。
作为另一个示例,添加子查询语句特性。从结构上看,子查询是把习题生成算法的一次或多次结果作为算法输入(关系或属性)的一部分,再次运行习题生成算法产生的新生成结果。示例性地,本公开实施例中以在where中包含子查询的情况为例,即子查询的结果作为一个属性输入。根据SQL语法,where型子查询的规则(即该题目类型规则集合中的第七条规则)为:where型子查询的结果只能有1列。子查询调用的生成算法存在几点特殊之处:1.where子句中的属性不仅来自子查询from子句中的关系,也来自外层语句的from子句中的关系;2.返回结果可以是多行,此时外层SQL语句的比较符使用IN。
进一步地,考虑最细粒度类的输入。枚举类(如操作符和连接符)具有给定的有限范围,因此主要关注原子类的输入。SQL语句是用户与数据库中的关系交互的语言,其对应习题的丰富度很大程度上取决于原子类中关系名、属性名的取值范围,因此,最细粒度类的输入为一系列给定关系。对于系统实现来说,配置一个数据库并在其中手动创建或导入关系和数据是容易的;然而,这些关系模式的信息,包括关系名、所有属性的类型和名称、主键等信息是保存在数据库中的,无法直接在习题生成算法中应用,因此,需要补充类来描述数据库,这些类包括数据库模式,关系模式和属性,从高到低分别记录对应层级的信息,需要将较易得到的数据库文件批量转化为这三个类的实例对象。考虑到最细粒度类仅涉及一些名称、类型和数据常量,示例性地,图15示出根据本公开一实施例的一种从数据库文件加载初始数据的流程示意图,如图15所示,可以使用Python脚本,将数据库文件迁移到项目数据库和后端代码中。Python脚本的输入是一个表示数据表的文本文件(txt),特点是文件名形如"关系名-主键列数.txt",第一行是属性名,后面n行是表中数据。脚本的主要功能是按行读取文本文件,记录第一行的属性名,然后根据后续n行的值推断每个属性的类型,比如某个属性对应的列在某一行的值是“A1”,那么这个属性的类型记为varchar;从文件名获取关系名和主键信息。脚本抽取信息后,生成Java代码和SQL脚本(.sql文件),Java代码负责在项目数据库中创建表并为习题生成算法提供输入,SQL脚本负责向项目数据库中的表插入记录。
进一步地,可以根据所述多个粒度的类,确定习题生成算法;其中,粗粒度类对象根据系粒度类对象生成。
步骤1403、根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成数据库相关课程中SQL语句题目类型的至少一个习题和/或所述至少一个习题的解答信息。
在一种可能的实现方式中,该步骤可以包括在关系集合中选取所述目标关系;通过所述SQL语句生成算法,基于所述目标规则集合,生成在所述目标关系上可执行的多个子句,并将所述目标常量集合带入到所述多个子句中;通过拼接所述多个子句,生成所述至少一个习题和/或所述至少一个习题的解答信息。这样,根据数据库中的一些关系,生成在这些关系上可执行的SQL语句,进而基于获得的SQL语句构造习题。
举例来说,结合上述SQL查询语句的连接、分组和聚合函数、子查询三种语句特性。产生SQL查询语句时,随机选取关系输入join算法获取查询表并生成from子句;从查询表随机取属性生成select子句;where子句随机包含0~3个比较条件,每个比较条件要么是两个属性比较(从join算法返回的可比较属性对集合中选一对),要么是属性与常量比较(从数据库中查询该属性得到的所有记录中随机取值)。最后,将逐个产生的子句按序组合,得到SQL查询语句。图16示出根据本公开一实施例的一种SQL语句生成算法的流程图,如图16所示,SQL语句生成算法的输入为:数据源DS;数据库模式DB;语法参数列表GP;示例性地,语法参数列表GP可以设置有连接、分组和聚合函数、子查询三种语句特性的参数,用户通过选择目标特性控制对应的参数取值,从而决定SQL查询语句生成算法在执行过程中是否执行相应的特性;SQL查询语句生成算法的执行过程为(1)从数据库DB随机取一个关系qR,(2)根据语法参数列表GP,判断join次数是否符合要求,如果不满足要求,则执行步骤(3)-(5),如果满足要求,则执行步骤(5);其中步骤(3)从数据库模式DB中随机选取一个关系sR,步骤(4)调用join算法过程,输入(qR,sR),输出的关系记为新的qR,并记录输出的ON子句;步骤(5)根据语法参数列表GP,判断是否要求聚合函数语法,如果是,则执行步骤(6),如果不要求,则执行步骤(8),其中,步骤(6)在qR中随机选取一个可用于分组的属性gCol,gCol外随机取一个属性hCol;步骤(7)根据属性gCol创建GROUP BY子句,根据属性hCol创建HAVING子句;步骤(8)根据语法参数列表GP,判断是否要求嵌套子查询语法,如果是,则执行步骤(9)-(10),如果不要求,则执行步骤(10);其中,步骤(9)调用嵌套子查询生成算法过程,得到输出sCond【嵌套子查询生成算法过程(下称为子查询过程))与本查询语句生成算法过程类似,主要区别有两处:1.本过程的WHERE子句对应的属性选取范围为FROM子句中的关系,而子查询过程的WHERE子句属性选取范围包含子查询过程以及外部调用过程的FROM语句中的关系;2.输出为一个比较条件表达式】,步骤(10)根据qR创建FROM子句;然后执行步骤(11)从qR中随机取一些属性创建SELECT子句,(12)从qR中随机取一些可比较属性生成比较条件集合cs(包含属性与常量比较和属性与属性比较两种比较条件)(13)根据语法参数列表GP,判断是否要求嵌套子查询语法,如果是,则执行步骤(14),如果不要求,则执行步骤(15);其中,步骤(14)根据cs和sCond生成WHERE子句,(15)根据cs生成WHERE子句;进而执行步骤(16)使用上述过程获得的所有子句生成SQL语句,得到sqlSentence,最后输出sqlSentence。
子查询生成算法与总体查询语句生成算法大体一致,除了在上述图16所示的算法流程生成where子句时,选取的属性不只包括算法前面选取的关系,也包括以函数参数形式传入的关系列表中的关系。
示例性地,其他类型的SQL语句(insert,update,set,delete,create,drop,alter,grant)不包含连接、分组、聚合函数、子查询等性质,相应的生成算法实际上是总体查询语句生成算法的简化,本公开实施例对此不再赘述。
在一种可能的实现方式中,所述目标特性包括:关系连接算法;所述关系连接算法用于确定第一关系与第二关系之间的目标连接方式;所述多个子句包括基于所述目标连接方式生成的子句。
举例来说,图17示出根据本公开一实施例的一种关系连接算法的流程图,如图17所示,关系连接算法的输入为两个关系,即关系R1、关系R2;关系连接算法执行下述步骤:(1)表示关系R1与关系R2的属性的名称、数据类型,以判断关系R1与关系R2能够进行的join种类集合joinMethods(例如,关系R1和关系R2分别具有属性A1和A2,且属性A1和A2的数据类型均为整数型,则认为关系R1和R2可以进行除自然连接之外的内连接和外连接)。(2)从join种类集合joinMethods中随机取一个join种类m,对关系R1和R2执行对应的join操作,得到结果-关系R3;(3)输出上述关系R3,以及步骤(2)中join过程对应的ON子句。
步骤1404、呈现所述至少一个习题和/或所述至少一个习题的解答信息。
示例性地,针对select子句习题,可以生成习题本身,还可以生成习题中涉及的关系表的样例数据,答案中可以包含查询结果表等信息。
示例性地,习题的答案可以直接使用产生的SQL查询语句。示例性地,可以对习题的描述采用一种朴素的方法,即对每种子句分别定义一个描述模板,比如select子句的模板为“选择属性X,属性Y......”。生成SQL语句后,将关系名、属性名等常量分别代入所有子句的模板,再将获得的描述拼接起来。
这样,通过上述步骤1401-1404,可以得到《数据库原理》课程中题目类型对应的习题及解答信息。针对select语句的习题数量,在生成select语句时,经过如下过程:从数据库中的N个关系中,随机取1~2个;对join操作,如果两个关系有S对可比较属性,外连接(系统默认左外连接)、内连接和交叉连接共存在2S+1种join结果;如果有同名属性,则为2S+2,假设join结果数量为从选取的关系或连接结果中的M个属性(列)中,任取X∈{0,1,2}个,用于创建select子句,其中选0的情况指"select*";随机生成0~3个过滤条件;对每个过滤条件,随机取比较类型1或2;针对类型1,随机取一对可比较属性(即表的两个列相比);针对类型2,随机取一个属性,在数据库的R条记录中随机取一个值(即表的一个列与一个常量相比);对group by子句,随机从选取的关系或连接结果中的Mg个分组属性中取一个;对having子句,随机取一个属性;子查询的种类与整个算法相同。
可以理解的是,上述group by子句、having子句可以由用户进行选择,也可以选择更多的子句,从而生成更多数量的习题,在group by子句、having子句全选的情况下,经过上述过程即可生成一个select语句最大的习题数量;然后,如果将上述习题作为子查询,进行更高级的查询,则生成的习题数量平方。考虑上述全部随机过程,计算得出,输入N个关系,启用关系连接、子查询、分组和聚合函数三种语句特性,能够生成的习题数目为其中,/>表示在数据库中N个关系中随机选取2个关系,/>表示join操作的结果数量,M表示N个关系及/>个结果中包含的属性数量;/>表示从M个属性中随机选取2个属性;/>表示从M个属性中随机选取0个属性、1个属性、2个属性对应的平均结果数量;t表示过滤条件的数据,例如,可以为4;/>中/>表示类型1对应的结果数量,M·R表示类型2对应的结果数量。Mg表示分组属性的个数(可以为M);n表示子查询嵌套的次数,例如,可以为2。
利用前文提到的数据库文件迁移脚本流程可以改变N的取值,取N为自变量;一般情况下,添加的关系包含的属性和数据均在10个以内,根据数据推导出的分组属性较少,取S=3,M=10,R=5,Mg=2,则上式等于/>可知习题种类与输入关系的数量大约成四次多项式关系。显然,这种量级的习题数量完全能够满足任何学生的题量要求,此外,难免存在许多组十分相似的SQL语句,大的习题总量也充分降低了用户重复从同一组获取相似习题的概率。为了提供更好的做题体验,可以将答案包含的SQL语句放在项目数据库中执行。因此,数据库的并发量和执行性能是该部分的主要性能瓶颈,在并发量超过数据库连接池的上限时,请求会失败,且响应时间显著提高。对生成“select语句”的响应时间在60和100并发量下分别测试,图18示出根据本公开一实施例的生成《数据库原理》SQL语句习题时网络请求平均响应时间的示意图,如图18所示,每组柱状图从左到右分别为不启用语句特性、仅启用连接、仅启用分组和聚合函数、仅启用子查询、全部启用。可以看出,在100并发量以下并发量对响应时间影响不大,且响应时间均在1s内。
下面以目标题目类型为数据库相关课程中范式问题题目类型,其中,相关习题为《数据库原理》为例,对上述图6中习题自动生成方法进行示例性地说明。
图19示出根据本公开一实施例的一种习题自动生成方法的流程图,如图19所示,可以包括以下步骤:
步骤1901、获取数据库相关课程中范式问题题目类型。
示例性地,范式问题题目类型,可以包括二范式(2NF)和第三范式(3NF)两种题目类型,即分别代表了两个不同的知识点。
步骤1902、确定与所述数据库相关课程中范式问题题目类型对应的目标习题生成算法、目标规则集合及目标常量集合。
所述目标规则集合包括范式问题的定义;所述目标习题生成算法包括函数依赖集生成算法;所述函数依赖集生成算法用于获取不满足范式问题的函数依赖集;
示例性地,可以预先确定范式问题题目类型的规则集合和常量集合;可以理解的是,针对范式问题题目类型,规则即为范式问题的定义,其定义如下:在一个关系中,如果一个或一组属性β可以由另外一个或一组属性α完全确定,则称β函数依赖于α,α函数决定β,表示为α→β。范式可以包括多种类型(如第一范式、第二范式、第三范式…等等),本公开实施例中,以第二范式及第三范式为例,其中,第二范式的定义为:在一个关系中,所有非主属性都不部分依赖于主键;已知主键唯一确定一条记录,因此所有非主属性必然依赖于主键;但如果存在主键γ的属性真子集α,同时存在非主属性β,且α函数决定β,则称β部分依赖于主键γ。第三范式的定义为:一个满足第二范式的关系上的非平凡函数依赖仅包括形如主键→β的函数依赖,β是任意属性或属性组;这意味着关系上的所有非平凡函数依赖(非平凡指函数依赖右侧不是左侧的子集)的左侧都是主键。第二范式和第三范式是对数据库中的关系的不同级别的限制,有助于提高存储效率和降低发生异常操作的风险。一般而言,需要数据库中的关系都符合第三范式(自然也符合第二范式)。
示例性地,可以通过算法基于第二范式和第三范式分别生成一类习题:判断关系是否符合相应范式,并将不符合的关系转换为符合对应范式的关系。
作为一个示例,目标范式问题题目类型为第二范式,确定相应的规则集合可以包括:1、在一个关系中,所有非主属性都不部分依赖于主键;2、已知主键唯一确定一条记录,因此所有非主属性必然依赖于主键;3、如果存在主键γ的属性真子集α,同时存在非主属性β,且α函数决定β,则称β部分依赖于主键γ。确定相应的常量集合可以包括:主键γ、主键γ的属性真子集α、非主属性β。进一步地,可以生成一类习题:判断关系是否符合第二范式,并将不符合的关系转换为符合第二范式的关系。
作为另一个示例,目标范式问题题目类型为第三范式,确定相应的规则集合可以包括:一个满足第二范式的关系上的非平凡函数依赖仅包括形如主键→β的函数依赖,β是任意属性或属性组。确定相应的常量集合可以包括:非平凡函数、主键。进一步地,可以生成一类习题:判断关系是否符合第三范式,并将不符合的关系转换为符合第三范式的关系。
进一步地,可以构建习题生成算法,从两种范式的定义,可以看出问题的核心在于关系上存在的函数依赖集合。如果给出一个关系和一个函数依赖集合,就可以判断关系是否满足第二、第三范式,并且,也存在将不满足某个范式的关系转化为满足对应范式关系的已有算法(后文简称“转换算法”)。因此,这两类问题都可以转化为构造函数依赖集合并复现已有算法的问题。构造函数依赖集合的难点在于,函数依赖通常是基于数据库设计者对关系和属性的定义及其互相之间依赖逻辑的主观判断所作出的定义。从系统或习题生成算法的角度来看,能够得到的信息只有关系和属性的名称,以及表中的一些记录,因此我们无从知晓什么是关系上“合理”的函数依赖集合。然而,可以通过一种逆向思维来推断出可能合理的函数依赖。我们已经知道,对于存在形如α→β的函数依赖的表,在表中如果存在两条记录对α有相同值,那么这两条记录的β值一定也相同,换言之,如果两条记录的β值不同但α值相同,那么表上不可能存在函数依赖α→β。通过遍历关系上所有的属性组合,我们可以获得所有可能存在的函数依赖,在排除平凡依赖(依赖右侧是左侧的子集)后,再根据数据拟向推断不可能存在的依赖并排除,我们就可以得到一个相对小的潜在函数依赖集合,当表中的数据足够具有代表性时,得到的潜在依赖集合可认为是该关系合理的函数依赖集。
接下来考虑主键的合理性,在上文提到的数据库文件迁移的流程中,Python脚本读取文本文件,文本文件的名字中给出主键的列数n,即文件中的前n个属性构成主键,然而,在数据有限甚至不特别具有代表性的情况下,这个主键可能与我们逆向推断出的函数依赖集合产生冲突。例如,如果数据库文件指定α是主键,在我们根据数据逆向推断的过程中,发现存在α的真子集γ,且γ可以唯一确定任意属性或属性组β,那么显然,给定的“主键”α在当前的数据下不是一个候选码(候选码要求不存在比它本身包含属性更少的且能够唯一确定表中任意一行记录的属性组,而γ比α包含的属性更少),因此在推断出的函数依赖集下,α不是主键。对于这样的存在数据-定义冲突的文件输入,我可以认为该文件的数据不具有代表性,不使用该文件作为输入。
步骤1903、根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成数据库相关课程中范式问题题目类型的至少一个习题和/或所述至少一个习题的解答信息。
在一种可能的实现方式中,该步骤可以包括通过所述函数依赖集生成算法,基于所述目标规则集合及所述目标常量集合,确定不满足范式问题的目标函数依赖集;基于目标关系及所述目标函数依赖集,生成所述至少一个习题和/或所述至少一个习题的答案。
示例性地,计算函数依赖集后,在该函数依赖集中随机取函数依赖子集生成第二范式相关习题。特别地,可以在计算函数依赖集时,记下哪些函数依赖不符合第二范式,挑选这些函数依赖生成习题(例如,判断关系X及所述函数依赖子集是否符合第二范式,若不符合,则将关系X转换为符合第二范式的关系)。对给定目标关系和函数依赖集,如果不满足第二范式,就执行转换算法获取答案。第三范式问题的生成与第二范式问题类似。区别在于,复现的第三范式转换算法不要求给出主键,而是根据函数依赖集计算最小依赖集和候选码。
在一种可能的实现方式中,所述确定不满足范式问题的目标函数依赖集,包括:遍历所述目标关系中的属性组合,确定候选函数依赖集;在所述候选函数依赖集中,选取不满足范式问题的目标函数依赖子集,得到所述目标函数依赖集。
举例来说,图20示出根据本公开一实施例的一种函数依赖集生成算法的流程图,如图20所示,函数依赖集生成算法的输入为:数据源DS;在执行函数依赖集生成算法的过程中,(1)函数依赖集D={};(2)判断数据源DS中是否存在任何表,若不存在任何表,则输出函数依赖集D={},若存在表,则执行(3)从DS取表T,并从DS删除T;(4)T的函数依赖集tD={};(5)是否存在T的属性子集a、b,b不是a的子集且表中数据满足函数依赖a->b;如果是,则将a->b添加到tD中,执行步骤(6),如果不是,则直接执行步骤(6);其中,步骤(6)判断是否遍历完a、b的所有可能性,如果否,则重复执行步骤(5),如果是,则执行步骤(7)判断是否存在T的属性子集a,tD包含函数依赖:a->T的全部属性;如果是,则重复执行上述步骤(2),如果不是,则将tD中的所有函数依赖加入到D中后重复执行步骤(2)。
步骤1904、呈现所述至少一个习题和/或所述至少一个习题的解答信息。
这样,通过上述步骤1901-1904,可得到《数据库原理》课程中范式问题题目类型对应的习题生成算法。针对范式问题题目类型,输入N个关系,假设平均每个关系有M个属性,考虑右侧包含K个属性的函数依赖,有个,其中平凡函数依赖有个。则有/>个题目类型。时间性能:针对范式问题题目类型,图21示出根据本公开一实施例的生成《数据库原理》中范式习题时网络请求平均响应时间的示意图,如图21所示,在100、500、1000并发量下分别测得平均响应时间,其中,蓝色代表第二范式问题,橙色代表第三范式问题。可以看出在1000以下并发量时,第二范式问题用时均在1s以内;第三范式问题在1000并发量下用时1.5s左右,500并发量下用时1s左右。
基于上述方法实施例的同一发明构思,本公开的实施例还提供了一种习题自动生成装置,该习题自动生成装置可以用于执行上述习题自动生成方法实施例所描述的技术方案。
图22示出根据本公开一实施例的一种习题自动生成装置的结构图,如图22所示,该装置可以包括:交互模块2201,用于获取目标题目类型;生成模块2202,用于确定与所述目标题目类型对应的目标习题生成算法、目标规则集合及目标常量集合;其中,所述目标规则表示生成所述目标题目类型的习题需符合的规则,所述目标常量表示描述所述目标题目类型的参数、数据或符号;所述生成模块2202,还用于根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述目标题目类型的至少一个习题和/或所述至少一个习题的解答信息;所述交互模块2201,用于呈现所述至少一个习题和/或所述至少一个习题的解答信息。
本公开实施例中,获取目标题目类型;确定与目标题目类型对应的目标习题生成算法、目标规则集合及目标常量集合;根据目标习题生成算法、目标规则集合及目标常量集合,生成至少一个习题和/或至少一个习题的解答信息;呈现至少一个习题和/或至少一个习题的解答信息。其中,所述目标规则表示生成所述目标题目类型的习题需符合的规则,所述目标常量表示描述所述目标题目类型的参数、数据或符号;目标规则集合及目标常量集合中元素的数量及种类可以灵活配置,从而能够自动生成海量的多样化习题;作为一个示例,还可以给出习题的参考答案和解答过程,这种低成本获取优质习题的途径,能有力地推动信息化教育发展和教育创新。用户可以根据自身需求选择目标题目类型,作为一个示例,还可以选择目标难度和/或目标特性,从而可以生成针对性强、易于上手、可控性强的习题,满足不同学生的个性化需求。其中,针对性强表示生成的每道习题涉及的知识点指向性强;易于上手表示消除了学生自己搜集习题的麻烦,能够在课后用较少的时间进行查缺补漏;可控性强表示学生可以通过提供的习题参数自主控制想要练习的题目类型及难度等。
在一种可能的实现方式中,所述交互模块2201还用于:获取目标难度和/或目标特性;所述目标特性表示习题中所体现的知识点特性;所述生成模块2202,还用于:根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,在所述目标难度和/或目标特性的约束下,生成所述至少一个习题和/或所述至少一个习题的解答信息。
在一种可能的实现方式中,所述目标题目类型具有:可描述性、可判定性、可扩展性中的一项或多项;其中,所述可描述性表示通过所述目标规则集合和/或所述目标常量集合描述所述目标题目类型的习题,其中,所述目标规则集合及所述目标常量集合均包含有限个元素;所述可判定性表示所述目标题目类型的习题存在有限个解答信息;所述可扩展性表示所述目标规则集合和/或所述目标常量集合中的元素可变。
在一种可能的实现方式中,所述目标题目类型包括:计算机编译相关课程中的题目类型;所述目标规则包括至少一个文法及至少一个经典算法,其中,所述经典算法表示所述计算机编译相关课程中用于对文法进行处理的算法;所述目标习题生成算法包括文法复合算法及子算法调度算法,所述文法复合算法用于对多个种子文法进行复合生成复合文法;所述子算法调度算法用于确定对所述复合文法进行处理的经典算法;所述生成模块2202,还用于:通过所述文法复合算法,基于所述目标规则集合及所述目标常量集合,对种子文法集合进行复合处理,得到目标复合文法;通过所述子算法调度算法,在多个候选经典算法中,确定与所述目标题目类型对应的目标经典算法;并采用所述目标经典算法对所述目标复合文法进行处理,生成所述至少一个习题和/或所述至少一个习题的解答信息。
在一种可能的实现方式中,所述生成模块2202,还用于:通过所述文法复合算法以产生式连接的方式,基于所述目标规则集合及所述目标常量集合,对所述种子文法集合中的至少一个种子文法进行复合处理,生成所述目标复合文法。
在一种可能的实现方式中,所述目标题目类型包括:数据库相关课程中SQL语句题目类型;所述目标规则包括SQL语法;所述目标习题生成算法包括SQL语句生成算法;所述SQL语句生成算法用于生成在目标关系上可执行的SQL语句;所述生成模块2202,还用于:在关系集合中选取所述目标关系;通过所述SQL语句生成算法,基于所述目标规则集合,生成在所述目标关系上可执行的多个子句,并将所述目标常量集合带入到所述多个子句中;;通过拼接所述多个子句,生成所述至少一个习题和/或所述至少一个习题的解答信息。
在一种可能的实现方式中,所述目标特性包括:关系连接算法;所述关系连接算法用于确定第一关系与第二关系之间的目标连接方式;所述多个子句包括基于所述目标连接方式生成的子句。
上述图22所示装置中各种可能的实现方式的技术效果及具体描述可参见上述方法实施例,此处不再赘述。
应理解以上装置中各模块的划分仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。此外,装置中的模块可以以处理器调用软件的形式实现;例如装置包括处理器,处理器与存储器连接,存储器中存储有指令,处理器调用存储器中存储的指令,以实现以上任一种方法或实现该装置各模块的功能,其中处理器例如为通用处理器,例如中央处理单元(Central Processing Unit,CPU)或微处理器,存储器为装置内的存储器或装置外的存储器。或者,装置中的模块可以以硬件电路的形式实现,可以通过对硬件电路的设计实现部分或全部模块的功能,该硬件电路可以理解为一个或多个处理器;例如,在一种实现中,该硬件电路为专用集成电路(application-specific integrated circuit,ASIC),通过对电路内元件逻辑关系的设计,实现以上部分或全部模块的功能;再如,在另一种实现中,该硬件电路为可以通过可编程逻辑器件(programmable logic device,PLD)实现,以现场可编程门阵列(Field ProgrammableGate Array,FPGA)为例,其可以包括大量逻辑门电路,通过配置文件来配置逻辑门电路之间的连接关系,从而实现以上部分或全部模块的功能。以上装置的所有模块可以全部通过处理器调用软件的形式实现,或全部通过硬件电路的形式实现,或部分通过处理器调用软件的形式实现,剩余部分通过硬件电路的形式实现。
在本公开实施例中,处理器是一种具有信号的处理能力的电路,在一种实现中,处理器可以是具有指令读取与运行能力的电路,例如CPU、微处理器、图形处理器(graphicsprocessing unit,GPU)、数字信号处理器(digital signal processor,DSP)、神经网络处理器(neural-network processing unit,NPU)、张量处理器(tensor processing unit,TPU)等;在另一种实现中,处理器可以通过硬件电路的逻辑关系实现一定功能,该硬件电路的逻辑关系是固定的或可以重构的,例如处理器为ASIC或PLD实现的硬件电路,例如FPGA。在可重构的硬件电路中,处理器加载配置文档,实现硬件电路配置的过程,可以理解为处理器加载指令,以实现以上部分或全部模块的功能的过程。
可见,以上装置中的各模块可以是被配置成实施以上实施例方法的一个或多个处理器(或处理电路),例如:CPU、GPU、NPU、TPU、微处理器、DSP、ASIC、FPGA,或这些处理器形式中至少两种的组合。此外,以上装置中的各模块可以全部或部分可以集成在一起,或者可以独立实现,对此不作限定。
本公开实施例还提供了另一种习题自动生成系统,包括:上述图22中习题自动生成装置。
本公开实施例还提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令时实现上述实施例的方法。
图23示出根据本公开一实施例的一种电子设备的结构示意图;如图23所示,该电子设备可以包括:至少一个处理器2301,通信线路2302,存储器2303以及至少一个通信接口2304。
处理器2301可以是一个通用中央处理器,微处理器,特定应用集成电路,或一个或多个用于控制本公开方案程序执行的集成电路;处理器2301也可以包括多个通用处理器的异构运算架构,例如,可以是CPU、GPU、微处理器、DSP、ASIC、FPGA中至少两种的组合;作为一个示例,处理器2301可以是CPU+GPU或者CPU+ASIC或者CPU+FPGA。
通信线路2302可包括一通路,在上述组件之间传送信息。
通信接口2304,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,RAN,无线局域网(wireless local area networks,WLAN)等。
存储器2303可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路2302与处理器相连接。存储器也可以和处理器集成在一起。本公开实施例提供的存储器通常可以具有非易失性。其中,存储器2303用于存储执行本公开方案的计算机执行指令,并由处理器2301来控制执行。处理器2301用于执行存储器2303中存储的计算机执行指令,从而实现本公开上述实施例中提供的方法。
可选的,本公开实施例中的计算机执行指令也可以称之为应用程序代码,本公开实施例对此不作具体限定。
示例性地,处理器2301可以包括一个或多个CPU,例如,图23中的CPU0;处理器2301也可以包括一个CPU,及GPU、ASIC、FPGA中任一个,例如,图23中的CPU0+GPU0或者CPU 0+ASIC0或者CPU0+FPGA0。
示例性地,电子设备可以包括多个处理器,例如图23中的处理器2301和处理器2307。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器,或者是包括多个通用处理器的异构运算架构。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,电子设备还可以包括输出设备2305和输入设备2306。输出设备2305和处理器2301通信,可以以多种方式来显示信息。例如,输出设备2305可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等,例如,可以为车载HUD、AR-HUD、显示器等显示设备。输入设备2306和处理器2301通信,可以以多种方式接收用户的输入。例如,输入设备2306可以是鼠标、键盘、触摸屏设备或传感设备等。
本公开的实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述实施例中的方法。
本公开的实施例提供了一种计算机程序产品,例如,可以包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质;当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述实施例中的方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (12)
1.一种习题自动生成方法,其特征在于,包括:
获取目标题目类型;
确定与所述目标题目类型对应的目标习题生成算法、目标规则集合及目标常量集合;其中,所述目标规则表示生成所述目标题目类型的习题需符合的规则,所述目标常量表示描述所述目标题目类型的参数、数据或符号;
根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述目标题目类型的至少一个习题和/或所述至少一个习题的解答信息;
呈现所述至少一个习题和/或所述至少一个习题的解答信息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取目标难度和/或目标特性;所述目标特性表示习题中所体现的知识点特性;
所述根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述目标题目类型的至少一个习题和/或所述至少一个习题的解答信息,包括:
根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,在所述目标难度和/或目标特性的约束下,生成所述至少一个习题和/或所述至少一个习题的解答信息。
3.根据权利要求1所述的方法,其特征在于,所述目标题目类型具有:可描述性、可判定性、可扩展性中的一项或多项;其中,所述可描述性表示通过所述目标规则集合和/或所述目标常量集合描述所述目标题目类型的习题,其中,所述目标规则集合及所述目标常量集合均包含有限个元素;所述可判定性表示所述目标题目类型的习题存在有限个解答信息;所述可扩展性表示所述目标规则集合和/或所述目标常量集合中的元素可变。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述目标题目类型包括:计算机编译相关课程中的题目类型;所述目标规则集合包括至少一个文法及至少一个经典算法所对应的规则,其中,所述经典算法表示所述计算机编译相关课程中用于对文法进行处理的算法;
所述目标习题生成算法包括文法复合算法及子算法调度算法,所述文法复合算法用于对多个种子文法进行复合生成复合文法;所述子算法调度算法用于确定对所述复合文法进行处理的经典算法;
所述根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述目标题目类型的至少一个习题和/或所述至少一个习题的解答信息,包括:
通过所述文法复合算法,基于所述目标规则集合及所述目标常量集合,对种子文法集合进行复合处理,得到目标复合文法;
通过所述子算法调度算法,在多个候选经典算法中,确定与所述目标题目类型对应的目标经典算法;并采用所述目标经典算法对所述目标复合文法进行处理,生成所述至少一个习题和/或所述至少一个习题的解答信息。
5.根据权利要求4所述的方法,其特征在于,所述通过所述文法复合算法,基于所述目标规则集合及所述目标常量集合,对种子文法集合进行复合处理,得到目标复合文法,包括:
通过所述文法复合算法以产生式连接的方式,基于所述目标规则集合及所述目标常量集合,对所述种子文法集合中的至少一个种子文法进行复合处理,生成所述目标复合文法。
6.根据权利要求1-3中任一项所述的方法,其特征在于,所述目标题目类型包括:数据库相关课程中结构化查询语言SQL语句题目类型;所述目标规则集合包括SQL语法;
所述目标习题生成算法包括SQL语句生成算法;所述SQL语句生成算法用于生成在目标关系上可执行的SQL语句;
所述根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述目标题目类型的至少一个习题和/或所述至少一个习题的解答信息,包括:
在关系集合中选取所述目标关系;
通过所述SQL语句生成算法,基于所述目标规则集合,生成在所述目标关系上可执行的多个子句,并将所述目标常量集合带入到所述多个子句中;
通过拼接所述多个子句,生成所述至少一个习题和/或所述至少一个习题的解答信息。
7.根据权利要求6所述的方法,其特征在于,所述目标特性包括:关系连接算法;所述关系连接算法用于确定第一关系与第二关系之间的目标连接方式;所述多个子句包括基于所述目标连接方式生成的子句。
8.根据权利要求1-3中任一项所述的方法,其特征在于,所述目标题目类型包括:数据库相关课程中范式问题题目类型;所述目标规则集合包括范式问题的定义;
所述目标习题生成算法包括函数依赖集生成算法;所述函数依赖集生成算法用于获取不满足范式问题的函数依赖集;
所述根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述目标题目类型的至少一个习题和/或所述至少一个习题的解答信息,包括:
通过所述函数依赖集生成算法,基于所述目标规则集合及所述目标常量集合,确定不满足范式问题的目标函数依赖集;
基于目标关系及所述目标函数依赖集,生成所述至少一个习题和/或所述至少一个习题的答案。
9.根据权利要求8所述的方法,其特征在于,所述确定不满足范式问题的目标函数依赖集,包括:
遍历所述目标关系中的属性组合,确定候选函数依赖集;
在所述候选函数依赖集中,选取不满足范式问题的目标函数依赖子集,得到所述目标函数依赖集。
10.一种习题自动生成装置,其特征在于,包括:
交互模块,用于获取目标题目类型;
生成模块,用于确定与所述目标题目类型对应的目标习题生成算法、目标规则集合及目标常量集合;其中,所述目标规则表示生成所述目标题目类型的习题需符合的规则,所述目标常量表示描述所述目标题目类型的参数、数据或符号;
所述生成模块,还用于根据所述目标习题生成算法、所述目标规则集合及所述目标常量集合,生成所述目标题目类型的至少一个习题和/或所述至少一个习题的解答信息;
所述交互模块,用于呈现所述至少一个习题和/或所述至少一个习题的解答信息。
11.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的指令时,实现权利要求1至9中任意一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至9中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410155221.XA CN117931879A (zh) | 2024-02-02 | 2024-02-02 | 一种习题自动生成方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410155221.XA CN117931879A (zh) | 2024-02-02 | 2024-02-02 | 一种习题自动生成方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117931879A true CN117931879A (zh) | 2024-04-26 |
Family
ID=90759265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410155221.XA Pending CN117931879A (zh) | 2024-02-02 | 2024-02-02 | 一种习题自动生成方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117931879A (zh) |
-
2024
- 2024-02-02 CN CN202410155221.XA patent/CN117931879A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11416268B2 (en) | Aggregate features for machine learning | |
Agrawal et al. | A rewriting system for convex optimization problems | |
CN111095259B (zh) | 使用n-gram机器的自然语言处理 | |
EP3514694B1 (en) | Query translation | |
CN107515887B (zh) | 一种适用于多种大数据管理系统的交互式查询方法 | |
EP3671526B1 (en) | Dependency graph based natural language processing | |
US20240012810A1 (en) | Clause-wise text-to-sql generation | |
US7984031B2 (en) | Query builder for testing query languages | |
JP7386827B2 (ja) | セマンティック処理方法、装置、電子機器及び媒体 | |
CN105706092B (zh) | 四值模拟的方法和系统 | |
JP2021528761A (ja) | 制限自然言語処理 | |
EP3036660A1 (en) | Database access | |
US11704307B2 (en) | Intelligent query editor using neural network based machine learning | |
US11816573B1 (en) | Robust systems and methods for training summarizer models | |
CN113535177A (zh) | 一种表单生成方法、装置及设备 | |
CN117931879A (zh) | 一种习题自动生成方法、装置、电子设备及存储介质 | |
CN111638926A (zh) | 人工智能在Django框架中的一种实现方法 | |
US11809417B2 (en) | Apparatus and method for transforming unstructured data sources into both relational entities and machine learning models that support structured query language queries | |
US20210357398A1 (en) | Intelligent Search Modification Guidance | |
Hoi et al. | Manipulating Data Lakes Intelligently with Java Annotations | |
KR20220165391A (ko) | 쿼리 기반 딥러닝 분산 시스템 및 분산 훈련 방법 | |
Li et al. | Towards text-to-SQL over aggregate tables | |
Bonanno et al. | Logic and game theory | |
US20230106058A1 (en) | Autonomous spreadsheet creation | |
Meigen | Interesting Programming Languages Used in Life Sciences |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |