基于上下文相关错误模型的编程提示生成方法技术

技术编号:37723900 阅读:11 留言:0更新日期:2023-06-02 00:25
本发明专利技术提供了一种基于上下文相关错误模型的编程提示生成方法,属于计算机技术领域。本发明专利技术方法包括:(1)采用根节点路径描述抽象语法树中节点的上下文信息,设计上下文相关错误模型的设计;(2)利用已有错误

【技术实现步骤摘要】
基于上下文相关错误模型的编程提示生成方法


[0001]本专利技术属于计算机
,涉及修复错误程序技术和自动化编程提示技术,具体涉及一种基于上下文相关错误模型的编程提示生成方法。
[0002]专利技术背景
[0003]近年来,越来越多的学生开始学习计算机编程,自动且准确地为学生生成个性化的编程提示可以使得他们更好地掌握编程技能。因此自动化编程提示技术受到了关注。目前,针对编程提示生成问题,国内外已有若干工具或系统实现,所采用技术包括基于图的方法、基于聚类的方法和基于程序合成的方法。
[0004]现有的编程提示生成方法,所存在的问题包括:(1)生成提示效率低下,需要人工提供经验信息;(2)抗干扰能力差,由于编程题目的开放性,同一个问题往往对应多种解决方法,使用不同方法解决问题的代码构成了数量巨大的可行解空间,现存的编程提示生成方法极易受到可行解空间大小的影响;(3)生成提示不够个性化,无法为学生提供准确的错误程序修复提示;(4)可扩展性差,往往与具体题目关联。

技术实现思路

[0005]针对上述现有问题,本专利技术提供了一种基于上下文相关错误模型的编程提示生成方法,提出了一种上下文相关的错误模型(contextual error model,CEM),研究如何高效地从已有错误

正确代码对中学习到常见错误的上下文信息,并利用程序中的上下文信息为学生生成个性化的编程提示,以用于修复错误程序。
[0006]本专利技术提供了一种基于上下文相关错误模型的编程提示生成方法,包括如下步骤:(1)设计上下文相关错误模型;(2)自动构造上下文相关错误模型;(3)利用上下文相关错误模型修复错误程序,生成编程提示。
[0007]本专利技术方法对程序建立抽象语法树,采用根节点路径描述抽象语法树中节点的上下文信息。在步骤(1)中设计的上下文相关错误模型CEM如下:
[0008]CEM={ε=<δ,λ:g
b

g
a
>|δ∈{update,add,delete},λ∈Λ,g
b
∈G,g
a
∈G}
[0009]其中CEM包括一系列上下文相关的重写规则ε;δ表示重写规则的动作类型;λ为重写规则发生的根节点路径,Λ为根节点路径集合;g
b
表示在根节点路径λ下,重写规则动作发生前的节点;g
a
表示在根节点路径λ下,重写规则动作发生后的节点。定义函数为执行上下文相关错误模型中重写规则的函数,函数的语义如下:
[0010][0011]其中,add(g
a
,g
b
)表示将g
a
节点插入到g
b
节点后,delete(g
b
)表示删掉节点g
b
,update(g
a
,g
b
)表示使用节点g
a
替换节点g
b

[0012]本专利技术方法在步骤(2)自动构造上下文相关错误模型中,获取错误

正确代码对对应的两棵抽象语法树,获取两棵抽象语法树的根节点的直接子节点序列,分别作为错误子
序列和正确子序列;利用编辑距离算法计算将错误子序列转化为正确子序列的编辑动作序列,由编辑动作序列得到当前根节点路径的一系列上下文相关的重写规则;最后输出构造好的上下文相关错误模型,该错误模型包含了从两棵抽象语法树中学习到的对于特定错误程序代码的解决方法。从不同错误

正确代码对执行上面过程,获得包含对不同错误程序代码解决方法的上下文相关错误模型。
[0013]设错误

正确代码对中错误程序在根节点路径λ下的所有直接子节点为τ
wrong
,正确程序在根节点路径λ下的所有直接子节点为τ
correct
,设len
wrong
为τ
wrong
的大小,len
correct
为τ
correct
大小,根据下面公式构造
[0014][0015]表示τ
wrong
和τ
correct
之间的编辑距离;由上面公式获得从τ
wrong
到τ
correct
的一个编辑动作序列,当错误子序列和正确子序列中节点不匹配时,根据上式获得编辑动作action。
[0016]本专利技术方法在步骤(3)利用上下文相关错误模型修复错误程序包括:
[0017]从上至下遍历待检测程序中每个节点的根节点路径,对每个根节点路径,在上下文相关错误模型中进行路径约束判断,寻找错误代码匹配的上下文相关的重写规则;对满足路径约束的语法树节点中的变量与匹配的上下文相关错误模型中重写规则的变量进行映射;计算待检测错误程序相对上下文相关错误模型的平均语义得分,根据该分数决定是否对节点执行重写规则;
[0018]对满足路径约束的语法树节点,当决定程序修复时,执行节点对应的上下文相关的重写规则中的编辑动作,返回所有候选的修复结果,并根据各修复过程为错误程序生成编程提示。
[0019]所述步骤(3)中,当进行变量映射时,包括:设重写规则中错误程序为X,待检测程序中的当前根节点路径对应的错误程序为Y,为错误程序X包含的变量集合,为错误程序Y中包含的变量集合;定义语义得分函数eval(Π)用于评估变量映射的优劣,函数值越大表示前后程序语义等价性越高;对于上下文相关错误模型中的重写语句<δ,λ:g
b

g
a
>,通过求解下面最优化问题进行变量映射:
[0020][0021]其中,Π为变量映射集合,x
i
是程序X中的变量,y
i
是程序Y中的变量,表示将变量x
i
映射为变量y
i
;n表示映射变量的数量;分别为集合集合
中的变量数量;
[0022]所述步骤(3)中,计算错误程序相对上下文相关错误模型的平均语义得分,进一步确定是否采用重写规则,包括:
[0023]设当前根节点路径对应的错误程序存在m个节点满足上下文相关错误模型CEM的约束条件,记为P[n1,n2,

,n
m
],对应的重写规则为{ε1,ε2,


m

i
∈CEM},计算该错误程序相对上下文相关错误模型的平均语义得分ASS为:
[0024][0025]其中,OptimalEval(n
i

i
)表示采用树编辑距离zss算法计算节点n
i
的根节点路径和重写规则ε
i
之间的最优变量映射对应的语义得分;如果OptimalEv本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于上下文相关错误模型的编程提示生成方法,其特征在于,包括如下步骤:(1)对程序建立抽象语法树,采用根节点路径描述抽象语法树中节点的上下文信息;设计上下文相关错误模型CEM如下:CEM={ε=<δ,λ:g
b

g
a
>|δ∈{update,add,delete},λ∈Λ,g
b
∈G,g
a
∈G}其中,模型CEM包括一系列上下文相关的重写规则ε;δ表示重写规则的编辑动作,add表示新增节点,delete表示删除节点,update表示更新节点;Λ为根节点路径集合,λ为重写规则发生的根节点路径;g
b
、g
a
分别表示在根节点路径λ下重写规则动作发生前和发生后的节点,G表示程序的编程语言的所有抽象语法树节点类型组成的集合;定义函数为执行上下文相关错误模型中重写规则的函数,如下:其中,add(g
a
,g
b
)表示将g
a
节点插入到g
b
节点后,delete(g
b
)表示删掉节点g
b
,update(g
a
,g
b
)表示使用节点g
a
替换节点g
b
;(2)根据已有的错误

正确代码对构造上下文相关错误模型,从中学习对错误程序代码的解决方法,获得上下文相关错误模型;(3)利用上下文相关错误模型修复错误程序,根据修复过程为错误程序生成相应的编程提示,包括:从上至下遍历待检测程序中每个节点,对每个节点的根节点路径,在上下文相关错误模型中进行路径约束判断,寻找错误代码匹配的重写规则;将错误代码匹配的上下文相关错误模型中重写规则的变量与满足路径约束的语法树节点中的变量进行映射;计算待检测错误程序相对上下文相关错误模型的平均语义得分,根据该分数决定是否执行节点所匹配的重写规则。2.根据权利要求1所述的方法,其特征在于,所述的步骤(2)中,利用已有的错误

正确代码对自动构造上下文相关错误模型,包括:步骤2.1,获取错误

正确代码对对应的两棵抽象语法树,获取两棵抽象语法树的根节点的直接子节点序列,分别作为错误子序列和正确子序列;步骤2.2,利用编辑距离算法计算将错误子序列转化为正确子序列的编辑动作序列;设错误

正确代码对中错误程序在根节点路径λ下的所有直接子节点为τ
wrong
,正确程序在根节点路径λ下的所有直接子节点为τ
correct
,len
wrong
为τ
wrong
的大小,len
correct
为τ
correct
大小,根据下面公式构造小,根据下面公式构造小,根据下面公式构造表示τ
wrong
和τ
correct
之间的编辑距离;
由上面公式获得从τ
wrong
到τ
correct
的一个编辑动作序列,当错误子序列和正确子序列中节点不匹配时,根据上式获得编辑动作action,由编辑动作序列得到当前根节点路径的一系列上下文相关的重写规则;步骤2.3,输出上下文相关错误模型,该错误模型包含从两棵抽象语法树中学习到的对相应错误程序代码的解决方法;对不同错误

正确代码对执行步骤2.1和2.2,获得包含对不同错误程序代码解决方法的上下文相关错误模型。3.根据权利要求1或2的方法,其特征在于,所述的方法中,获取根节点路径的方式如下:设g为需要求解的抽象语法树中的节点,根据下面函数ζ(g)来求解节点g的根节点路径:其中...

【专利技术属性】
技术研发人员:万寒罗宏震罗晓燕
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1