一种对结构化数据进行简化的方法与流程

文档序号:15686564发布日期:2018-10-16 21:07阅读:289来源:国知局

本发明涉及计算机领域,尤其涉及一种对结构化数据进行简化的方法。



背景技术:

结构化文档,特别是xml(可扩展标记语言)文档,在当前信息技术领域被广泛运用,产生了各式各样的处理结构化文档的系统。

对这些系统的功能进行测试时,如何生成充分的利于用作测试数据的结构化文档,确保各种模式的结构都被测试到是一个课题。

特别地,对于既有文档处理系统针对某个客户进行定制化开发时,客户现场在使用既有系统过程中已经积累了大量的结构化数据(以下,现场数据),在取得客户许可的前提下,直接运用现场数据进行测试无疑是非常有利的。但是,现场数据的体量往往非常大,比如有几百个文件,每个文件有几百兆字节,总计可达几个千兆字节。

直接拿这几个千兆字节的数据来测试,显然是不现实的,因为即使是不做任何加工处理的原样输出,光数据传输及文件系统输入/输出端口本身就要耗费大量时间。而有些测试,特别是单元测试,需要在日常开发中经常反复地执行。因此,如何从现场数据提取出利于测试的简化数据是一个课题。

现有的专利和其他公开文献包括:

(1)有很多涉及结构化文档生成的,但是都是关于如何从非结构化文档生成结构化文档的,比如印刷行业的关于从作者稿件自动化生成结构化文档的专利。

(2)很多涉及结构化文档中的冗余识别的,但是都是关于如何对结构化文档进行压缩以减小存储或传输时的数据量大小的。\



技术实现要素:

本发明提供一种结构化数据简化的方法,其能将结构化数据中大量重复的路径模式去除,并以较小的数据量保留较多的路径模式。

根据上述目的,本发明提供一种对结构化数据进行简化的方法,所述方法包括:a)统计所述结构化数据中的至少一种路径模式出现的模式次数;b)针对统计的每一种路径模式,判断该路径模式出现的次数是否大于等于该路径模式对应的模式次数阈值;c)若是,则保留该路径模式对应的模式次数阈值个该路径模式之后的结点,将其他的该路径模式之后的结点删除。

在一实施例中,所述步骤a)进一步包括:从所述结构化数据的根结点开始遍历所述结构化数据的各结点,针对遍历到的结点,统计该结点与其之前的至少一个结点构成的路径模式出现的模式次数;若所述步骤b)的判断为是,则所述步骤c)进一步包括:删除该结点之后的结点,并保留该结点与其之前的所有结点。

在一实施例中,包括特定路径模式库,其中包含有至少一个特定路径模式,所述步骤a)进一步包括:判断该结点与其之前的至少一个结点构成的路径模式是否存在于特定路径模式库中作为特定路径模式,若是,则将该路径模式对应的模式次数进行累加。

在一实施例中,每一个所述特定路径模式包括n个结点;所述步骤a)进一步包括:统计该结点与其之前的(n-1)个结点构成的路径模式是否对应于所述特定路径模式库中的特定路径模式。

在一实施例中,所述步骤a)进一步包括:针对遍历到的每一个结点,判断与该结点对应的根结点到该结点之间的结点数;若所述结点数大于等于路径结点数n,则将该结点与其之前的(n-1)个结点构成的路径模式对应的模式次数进行累加。

在一实施例中,则所述方法还包括:将遍历到的结点输出至简化后文档。

在一实施例中,若所述结构化数据包含多个根结点,则将所述多个根结点合并。

在一实施例中,所述路径模式对应的结点中至少有一个结点为任意结点。

在一实施例中,通过递归型深度优先遍历算法进行所述递归操作。

本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:a)统计所述结构化数据中的至少一种路径模式出现的模式次数;b)针对统计的每一种路径模式,判断该路径模式出现的次数是否大于等于该路径模式对应的模式次数阈值;c)若是,则保留该路径模式对应的模式次数阈值个该路径模式之后的结点,将其他的该路径模式之后的结点删除。

本发明还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现以下步骤:a)统计所述结构化数据中的至少一种路径模式出现的模式次数;b)针对统计的每一种路径模式,判断该路径模式出现的次数是否大于等于该路径模式对应的模式次数阈值;c)若是,则保留该路径模式对应的模式次数阈值个该路径模式之后的结点,将其他的该路径模式之后的结点删除。

本发明首先统计路径模式出现的次数,当路径模式出现次数大于对应的模式次数阈值时,仅保留模式次数阈值个该路径模式和其后的结点,将其他该路径模式后重复出现的大量结点删除,大大简化了结构化数据。

附图说明

图1示出了树形结构数据的一个例子;

图2示出了本发明一种对结构化数据进行简化的方法一个方面的流程图;

图3示出了本发明数据简化方法另一个方面的流程图。

具体实施方式

结构化文档有两个原则:每一部分(每一个元素)都和其他元素有关联,关联的级数就形成了结构;标识本身的含义与它描述的信息相分离。

树形结构的结构化文档是最为典型的结构化文档之一,树形结构是一层次的嵌套结构。一个树形结构的外层和内层有相似的结构,所以这种结构多可以递归的表示。经典数据结构中的各种树状图是一种典型的树形结构,一颗树有一个根结点和若干个子结点。

请参看图1,图1示出了树形结构数据的一个例子,其中结点101(结点类型为a)为根结点,由根结点101延伸出去有结点102(结点类型为b)、结点103(结点类型为c)和结点104(结点类型为d),由结点102再延伸出去有结点105(结点类型为e)、结点106(结点类型为f)和结点107(结点类型为g)。可以很直观地理解,树形结构数据即具有类似大树的结构,其中每个结点都有其类型。

本发明的目的在于对单个或多个原始结构化数据,比如前面提及的几个千兆字节的现场数据进行简化,生成一个简化过的结构化数据,用来做测试。

简化后的数据,不仅要能够减少测试数据的体量,还要能够尽可能多地覆盖各种路径模式(sub-pathpattern),所谓路径模式即由若干个相互连接的结点构成的有序集合所表征的一种模式。路径模式基于每个结点的类型和各结点之间的方向所决定。

例如图1中的结点a->结点b->结点e为一种由元素a、元素b和元素e构成的路径模式,结点a->结点b->结点f为另一种由元素a、元素b和元素f构成的路径模式。上述两个路径模式由于包含的元素类型不同,一个为a、b和e,另一个为a、b和f,故为两种不同的路径模式。

若还有一种路径模式为结点b->结点a->结点e,其虽然与结点a->结点b->结点e构成的路径模式包含的元素类型一致,都为a、b、e,但由于各结点间的方向关系不一样,也为两种不同的路径模式。

在结构化数据中,由于相同的路径模式后跟随连接的路径模式重复的可能性很大,例如,结点a->结点b->结点e这种路径模式可能在结构化数据中多次出现,但在每一个结点a->结点b->结点e这种路径模式的结点e后连接的各结点构成的路径模式的重复性很大。

本发明的目的就在于尽量去除相同路径模式后重复出现的的路径模式,根据此目的,请参看图2,图2示出了本发明一种对结构化数据进行简化的方法一个方面的流程图。

在一实施例中,本发明提供一种对结构化数据进行简化的方法,包括:

步骤201:统计所述结构化数据中的至少一种路径模式出现的模式次数;

步骤202:针对统计的每一种路径模式,判断该路径模式出现的次数是否大于等于该路径模式对应的模式次数阈值;

步骤203:若是,则保留该路径模式对应的模式次数阈值个该路径模式之后的结点,将其他的该路径模式之后的结点删除。

步骤201即先对重复的路径模式进行统计,接着上述例子,例如统计结点a->结点b->结点e这种路径模式重复的次数,当然统计的路径模式可以为多个不限于仅对一种路径模式进行统计。

当由结点a->结点b->结点e构成的路径模式重复的次数足够多时,表明其后所连接的结点构成的路径模式也会大量重复出现,步骤202即判断路径模式重复次数是否大于等于模式次数阈值,每一种统计的路径模式对应一模式次数阈值,例如结点a->结点b->结点e对应的模式次数阈值为10,而另一个统计的路径模式,结点a->结点c->结点h的路径模式对应的模式次数阈值可能为15,也就是说不同的统计的路径模式对应的模式次数阈值可能不同。

那么,针对每一种统计的路径模式,判断其重复的次数是否大于等于该路径模式对应的模式次数阈值,若是,则表明该路径模式后连接的结点构成的路径模式已大量重复存在,由于数据是以树状形式存在,越往后的“枝”“叶”也越茂密,数据量也就越大,以至于需将该大量存在的重复的“枝”“叶”删除。

步骤203则保留该路径模式对应的模式次数阈值个该路径模式之后的结点,将其他的该路径模式之后的结点删除。接着前面的例子,结点a->结点b->结点e对应的模式次数阈值为10,而经过统计结点a->结点b->结点e的路径模式出现的次数有60次,则选择10个该路径模式,将其之后的结点及构成的路径模式保留下来,而将另外的50个该路径模式之后的结点删除。

对于每一个统计的路径模式而言,其对应的模式次数阈值都是可以调整的。虽然,相同的路径模式后连接的各结点及该些结点构成的路径模式重复的可能性很大,但删除操作必然会在一定程度上损失数据,将模式次数阈值调高,则可以更好地保留原始数据,但计算量也会偏大,将模式次数阈值调低,则可能会损失一些数据,但计算量会大幅降低。

在一实施例中,通过对结构化数据进行遍历,来访问结构化数据的各结点,进而统计该结点于其之前结点构成的路径模式出现的次数。

所谓遍历,是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。

更优地,从结构化数据的根结点开始遍历结构化数据的各结点,针对遍历到的结点,统计该结点与其之前的至少一个结点构成的路径模式出现的模式次数。

例如,在对图1所示的结构化数据进行遍历的时候,从根结点a结点进行遍历,然后访问b结点,再访问e结点,当访问到e结点时,即可对e结点与其之前的b结点构成的路径模式,结点b->结点e的路径模式进行统计,出现该路径模式,则将结点b->结点e的路径模式对应的次数进行累加。

当然也可以将结点a->结点b->结点e构成路径模式进行统计,出现该路径模式,则将结点a->结点b->结点e的路径模式对应的次数进行累加。

也就是说在访问一个结点时,该结点可以和其之前的任意多个结点构成路径模式并进行统计,包含结点最多的路径模式自然是该结点到根结点的路径模式。极端情况下,该结点本身即可构成一种路径模式。

同样的,当统计的路径模式大于等于路径模式阈值时,需要删除多余的重复数据。在遍历时,删除该结点之后的结点,并保留该结点与其之前的所有结点。

在一实施例中,为了减小运行算量,预先规定路径模式所包含的结点个数,假设该个数为n,也就是说,在遍历到某个结点时,只考虑该结点与其之前的(n-1)个结点构成的结点个数为n的路径模式。

请参看图3,图3示出了本发明数据简化方法另一个方面的流程图,该方法包含:

步骤301:设定路径模式结点数及模式次数阈值,例如路径模式结点数为3,模式次数阈值为15,表明所有包含3个结点的路径模式都需要进行统计,所有包含3个结点的路径模式对应的模式次数阈值都一样,都为15。

步骤302:遍历结构化数据。

步骤303:判断已遍历路径结点数是否大于等于路径模式结点数,即判断遍历到的该结点到根结点之间包含的结点是否大于等于路径模式结点数,若是则进入步骤304,若否则进入步骤302继续遍历下一结点。

例如设定路径模式结点数为3,则与根结点之间包含的结点数小于3的结点与其之前的结点不可能构成结点数为3的路径模式,例如图1中的结点b就无法与其之前的结点构成结点数为3的路径模式。

步骤304:判断以遍历到的当前结点结尾的路径模式是否已达到模式次数阈值,若是则进入步骤305,若否,则将该路径模式对应的模式次数进行累加,并进入步骤302继续遍历下一结点。

步骤305:将遍历到的当前结点之后的各结点删除。

可以根据实际运用的需要设置模式次数阈值,比如单元测试时,需要经常性反复执行测试,可以设定较小的值。阶段性的测试时,可以设定较大的值。路径模式结点数可以从“树深度-1”开始逐步减少找到合适的值。

接着图1的例子,当规定n为3时,在访问到结点e时,就不需要考虑结点b->结点e的路径模式,而是只考虑结点a->结点b->结点e的路径模式。

更优地,可以选择统计哪些路径模式,所述方法包含特定路径模式库,其中包含有至少一个特定路径模式。

针对每个遍历到的结点,判断该结点与其之前的至少一个结点构成的路径模式是否存在于特定路径模式库中作为特定路径模式,若是,则将该路径模式对应的模式次数进行累加。

也就是说,只对特定路径模式库中包含的特定路径模式进行统计,这样进一步减小了本发明简化方法的计算量,可以预先将需要进行统计的路径模式置于特定路径模式库中作为特定路径模式。

当然,也可以限定特定路径模式库中的特定路径模式包含的结点数,例如所有的特定路径模式都由3个结点构成。

在一实施例中,将遍历到的结点输出至简化后文档,因为通过遍历的方法进行简化时,只要访问到的结点都是需要保留,而没有访问到的结点即已经被删除。

若结构化数据包含多个文档,或包含多个树,则可以将多个根结点合并,可以在简化操作开始前就合并,也可以先对各个树进行简化,再将简化后的各个树的根结点进行合并。

上文中描述的路径模式内全部结点都为确定的结点类型,也可以不规定路径模式中的个别结点。在一实施例中,路径模式对应的结点中至少有一个结点为任意结点。

例如上文中的结点a->结点b->结点e的路径模式,可以不规定结点b位置处的结点类型,或者说结点b处的结点类型为任意结点类型,即结点a->结点xxx->结点e,其中结点xxx可以是任意类型的结点。

可选用现有技术中的众多遍历算法来对树结构进行遍历,在一实施例中,过递归型深度优先遍历算法进行所述递归操作。

当然也可以采用非递归型深度优先遍历算法、广度优先遍历算法等。

深度优先遍历算法是遍历算法的一种。是沿着树的深度遍历树的结点。当结点v的所有边都己被探寻过,搜索将回溯到发现结点v的那条边的起始结点。这一过程一直进行到已发现从源结点可达的所有结点为止。

本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前述的各方法步骤。

在一实施例中,本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:a)统计所述结构化数据中的至少一种路径模式出现的模式次数;b)针对统计的每一种路径模式,判断该路径模式出现的次数是否大于等于该路径模式对应的模式次数阈值;c)若是,则保留该路径模式对应的模式次数阈值个该路径模式之后的结点,将其他的该路径模式之后的结点删除。

本发明还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现前述的各方法步骤。

本发明还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现以下步骤:a)统计所述结构化数据中的至少一种路径模式出现的模式次数;b)针对统计的每一种路径模式,判断该路径模式出现的次数是否大于等于该路径模式对应的模式次数阈值;c)若是,则保留该路径模式对应的模式次数阈值个该路径模式之后的结点,将其他的该路径模式之后的结点删除。

本领域技术人员将进一步领会,结合本文中所公开的实施例来描述的各种解说性逻辑板块、模块、电路、和算法步骤可实现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、框、模块、电路、和步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员对于每种特定应用可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成导致脱离了本发明的范围。

结合本文所公开的实施例描述的各种解说性逻辑模块、和电路可用通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文所描述功能的任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如dsp与微处理器的组合、多个微处理器、与dsp核心协作的一个或多个微处理器、或任何其他此类配置。

结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中体现。软件模块可驻留在ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动盘、cd-rom、或本领域中所知的任何其他形式的存储介质中。示例性存储介质耦合到处理器以使得该处理器能从/向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在asic中。asic可驻留在用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。

在一个或多个示例性实施例中,所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现为计算机程序产品,则各功能可以作为一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)、或诸如红外、无线电、以及微波之类的无线技术从web网站、服务器、或其它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、dsl、或诸如红外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(cd)、激光碟、光碟、数字多用碟(dvd)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据,而碟(disc)用激光以光学方式再现数据。上述的组合也应被包括在计算机可读介质的范围内。

提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1