当前位置: 首页 > 专利查询>南京大学专利>正文

一种电子表格公式计算规则逆向工程方法技术

技术编号:37816529 阅读:17 留言:0更新日期:2023-06-09 09:46
本发明专利技术提供一种电子表格公式计算规则逆向工程方法,包括S1,生成公式实例;S2,进行预编码得到每个公式实例的类别标签,并将特征列表初始化为每个输入单元格的类型特征组成的特征列表,并标记为已解释的类型特征;S3,对每个公式实例进行特征编码,得到每个公式实例对应的样本,分类所有样本,当分类正确率为100%,执行步骤S5的操作;S4,更新特征列表,返回执行步骤S3的操作;S5,当特征列表中全部为已解释的特征,执行步骤S7的操作;S6,选取任意未解释的函数特征进行解释后标记为已解释的函数特征,返回执行步骤S5的操作;S7,基于决策树和分类函数输出计算规则。本发明专利技术实现电子表格公式的精准逆向工程。格公式的精准逆向工程。格公式的精准逆向工程。

【技术实现步骤摘要】
一种电子表格公式计算规则逆向工程方法


[0001]本专利技术属于数据处理
,尤其涉及一种电子表格公式计算规则逆向工程方法。

技术介绍

[0002]电子表格公式在国内外被广泛应用于财务、行政、人事、生产、营销等领域中,例如制作会计报表、汇总课程成绩、分析市场数据等。上述场景中,用户往往会使用当代流行的电子表格软件(例如Excel、LibreOffice、GoogleSheets、腾讯文档等),而其中大多数软件是闭源的,电子表格公式的底层计算规则不可直接获知,官方文档和教程也缺乏对公式计算规则的精确定义。另一方面,现有的电子表格软件普遍缺少对公式输入参数的严格的类型检查,使得一些类型不安全的(例如以文本形式储存的数值)单元格也能够作为公式的输入,从而使公式计算得到非错误的结果或得到错误值。这些现状使得用户即使熟悉公式的基本功能和官方文档,也存在错误使用公式的风险。因大多数现有电子表格软件的公式底层实现不可知,所以后来的电子表格软件的开发者对同一公式的底层实现存在差异,这导致同一电子表格公式在不同软件的计算结果可能是不一致的,在多人协作等场景下容易因各自所见的计算结果不一致而引发严重后果。电子表格公式计算规则的逆向工程是针对这一问题的有效解决思路。
[0003]现有的电子表格公式计算规则分析技术主要采用自顶向下的形式化方法,构建一套新的、理想化的电子表格公式语法、操作语义和类型系统规范,帮助新的电子表格软件的开发者遵循这个规范完成开发任务,并根据这个理想化的规范分析现有的电子表格及其相关的VBA程序,检测运行时类型不安全的公式计算行为。此类技术的不足之处在于,它们对当今现有的主流电子表格软件(例如MicrosoftExcel、LibreOfficeCalc和AppleNumbers)的公式底层实现复杂性的假设不足,无法精确地检测出涉及到复杂的单元格内容(例如日期、时间、货币符号、特殊文本)、多种单元格基本类型(例如布尔型、文本型、日期型、错误型)和多样化的单元格数据格式(例如表示千位分隔符的“#,##0”、表示日期的“yyyy

mm

dd”)的复杂语义时公式不同的计算结果,因此在检测与公式的非预期计算结果、跨软件计算结果不一致相关的缺陷方面精确性不高。

技术实现思路

[0004]本专利技术针对现有技术中的不足,提供一种电子表格公式计算规则逆向工程方法。
[0005]本专利技术提供一种电子表格公式计算规则逆向工程方法,包括:
[0006]S1,根据用户指定的电子表格软件和电子表格公式生成公式实例;所述公式实例为输入单元格列表和输出单元格组成的一个元组;
[0007]S2,根据用户指定的计算结果性质,为每个公式实例的输出单元格按照计算结果性质进行预编码得到每个公式实例的类别标签,并将特征列表初始化为每个输入单元格的类型特征组成的特征列表,并标记为已解释的类型特征;
[0008]S3,依据特征列表对每个公式实例进行特征编码,得到每个公式实例对应的样本,基于无高度限制,无剪枝的决策树分类所有样本,当分类正确率为100%,执行步骤S5的操作,当分类正确率低于100%,向用户反馈发生分类错误的假阳性实例集和假阴性实例集;
[0009]S4,更新特征列表,返回执行步骤S3的操作;
[0010]S5,当特征列表中全部为已解释的特征,执行步骤S7的操作;
[0011]S6,当特征列表中存在未解释的特征,选取任意未解释的函数特征进行解释后标记为已解释的函数特征,返回执行步骤S5的操作;
[0012]S7,基于决策树和分类函数输出计算规则。
[0013]进一步地,所述S1包括:
[0014]从电子表格数据集中选取电子表格的多个单元格,解析每个已提取的单元格,得到每个单元格的基本类型、内容和数据格式这三种单元格属性;将三种单元格属性组合成新的单元格,将新的单元格依次组合成输入单元格列表集合,集合中的每个输入单元格列表包含的单元格数目和公式的输入单元格数目相同;
[0015]从词典词汇集中选取多个词汇,把每个词汇作为单元格的内容,将每个词汇与“文本型”的基本类型和“常规”的数据格式组合成单元格,为单元格枚举单元格的所有组合作为第一输入单元格列表集合;第一输入单元格列表集合中的每种单元格组合的单元格数目和公式的输入单元格数目相同;
[0016]从预先存储的字符集中选取所有的字符,枚举所有字符的目标长度的组合得到一个字符串集合,将字符串集合中每个字符串作为单元格的内容,将每个字符串与“文本型”的基本类型和“常规”的数据格式组合成单元格,为单元格枚举单元格的所有组合作为第二输入单元格列表集合;第二输入单元格列表集合中的每种单元格组合的单元格数目和公式的输入单元格数目相同;
[0017]将第一输入单元格列表集合和第二输入单元格列表集合中的每个输入单元格列表作为给定电子表格公式的对应参数,在给定的电子表格软件中运行公式,得到每个输入单元格列表对应的输出单元格;将每个输入单元格列表和对应的输出单元格组合为公式实例,得到公式实例集。
[0018]进一步地,所述S4包括:
[0019]删除汇总特征列表中未出现在决策树的各决策结点中的特征;
[0020]依据决策树分类的假阳性实例集,修正当前特征列表中与假阳性相关的已有特征;
[0021]依据决策树分类的假阴性实例集,向特征列表中添加新的特征,新的特征包括类型特征、模式特征和函数特征;当添加类型特征或模式特征时,将类型特征或模式特征标记为已解释的特征;当添加函数特征时,将函数特征标记为未解释的特征;
[0022]返回更新后的特征列表。
[0023]进一步地,所述S6包括:
[0024]S61,将分类函数初始化为以未解释的函数特征的输入单元格列表中各个单元格属性为参数,以布尔值“真”为返回值的函数;
[0025]S62,将公式实例集中每一个实例的输入单元格列表中的各个单元格属性作为参数输入分类函数,调用分类函数,得到函数的返回值;当所有实例的函数返回值与实例的类
别标签一致时,执行步骤S64的操作;否则向用户反馈发生分类错误的实例集合,执行步骤S63的操作;
[0026]S63,依据发生分类错误的实例集合,更新分类函数,返回执行步骤S62的操作;
[0027]S64,返回分类函数。
[0028]进一步地,所述S7包括:
[0029]为决策树的各个决策结点对应的特征构造通用编程语言的程序语句:为类型特征构造输入单元格的基本类型和给定的基本类型的相等语句,为模式特征构造单元格内容或数据格式和给定正则表达式的正则表达式匹配语句,为函数特征构造用于解释该特征的分类函数;
[0030]为决策树的各个叶子结点对应的标签构造与标签等值的通用编程语言中的布尔值;
[0031]为决策树的各个决策结点构造判断目标决策结点对应的特征是否被满足的条件语句,并从决策树的根结点开始将由各个决策结点构造本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种电子表格公式计算规则逆向工程方法,其特征在于,包括:S1,根据用户指定的电子表格软件和电子表格公式生成公式实例;所述公式实例为输入单元格列表和输出单元格组成的一个元组;S2,根据用户指定的计算结果性质,为每个公式实例的输出单元格按照计算结果性质进行预编码得到每个公式实例的类别标签,并将特征列表初始化为每个输入单元格的类型特征组成的特征列表,并标记为已解释的类型特征;S3,依据特征列表对每个公式实例进行特征编码,得到每个公式实例对应的样本,基于无高度限制,无剪枝的决策树分类所有样本,当分类正确率为100%,执行步骤S5的操作,当分类正确率低于100%,向用户反馈发生分类错误的假阳性实例集和假阴性实例集;S4,更新特征列表,返回执行步骤S3的操作;S5,当特征列表中全部为已解释的特征,执行步骤S7的操作;S6,当特征列表中存在未解释的特征,选取任意未解释的函数特征进行解释后标记为已解释的函数特征,返回执行步骤S5的操作;S7,基于决策树和分类函数输出计算规则。2.根据权利要求1所述的电子表格公式计算规则逆向工程方法,其特征在于,所述S1包括:从电子表格数据集中选取电子表格的多个单元格,解析每个已提取的单元格,得到每个单元格的基本类型、内容和数据格式这三种单元格属性;将三种单元格属性组合成新的单元格,将新的单元格依次组合成输入单元格列表集合,集合中的每个输入单元格列表包含的单元格数目和公式的输入单元格数目相同;从词典词汇集中选取多个词汇,把每个词汇作为单元格的内容,将每个词汇与“文本型”的基本类型和“常规”的数据格式组合成单元格,为单元格枚举单元格的所有组合作为第一输入单元格列表集合;第一输入单元格列表集合中的每种单元格组合的单元格数目和公式的输入单元格数目相同;从预先存储的字符集中选取所有的字符,枚举所有字符的目标长度的组合得到一个字符串集合,将字符串集合中每个字符串作为单元格的内容,将每个字符串与“文本型”的基本类型和“常规”的数据格式组合成单元格,为单元格枚举单元格的所有组合作为第二输入单元格列表集合;第二输入单元格列表集合中的每种单元格组合的单元格数目和公式的输入单元格数目相同;将第一输入单元格列表集合和第二输入单元格列表集合...

【专利技术属性】
技术研发人员:蒋炎岩黄奕诚许畅
申请(专利权)人:南京大学
类型:发明
国别省市:

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

1