用于生成合同的方法、装置、存储介质、电子设备和程序与流程

文档序号:24622513发布日期:2021-04-09 20:28阅读:57来源:国知局
用于生成合同的方法、装置、存储介质、电子设备和程序与流程

本公开涉及计算机技术,尤其是涉及一种用于生成合同的方法、用于生成合同的装置、存储介质、电子设备以及计算机程序。



背景技术:

合同可以是指由至少两方当事人为了确定各自的权利和义务,而订立的各自遵守的条文。

目前,用户获得合同的方式主要包括如下两种:

方式一、由律师等具有相关知识的人员撰写合同。

方式二、通过网络下载等方式,获得相应的合同。

上述方式一往往存在效率低以及成本高等问题。在上述方式二中,通过网络下载等方式获得的合同通常被认为是标准合同,标准合同所能覆盖的用户需求往往较为有限,如果标准合同不能满足用户的需求,则需要用户对标准合同进行自行修改,这需要用户具备一定的法律专业知识。



技术实现要素:

本公开实施例提供一种用于生成合同的技术方案,以高效便捷的为用户生成尽可能满足其需求的合同。

本公开实施例的一个方面,提供一种用于生成合同的方法,包括:根据用户输入的用于选择合同类型的信息,确定待生成合同对应的合同模板以及问题组合,并将所述合同模板作为当前合同;根据所述问题组合,确定当前问题,并向所述用户提供同时包含有所述当前问题和所述当前合同的页面;根据所述用户输入的针对所述当前问题的答复信息,确定与所述当前问题的答复信息对应的合同内容单元以及所述合同模板中与所述合同内容单元关联的位置;根据所述合同内容单元以及所述位置更新所述当前合同;若根据所述问题组合,确定出存在与所述当前问题的答复信息关联的下一个问题,则将所述下一个问题作为当前问题,并返回所述向所述用户提供同时包含有所述当前问题和所述当前合同的页面的步骤;若根据所述问题组合,确定出不存在与所述当前问题的答复信息关联的下一个问题,则根据所述当前合同,获得为所述用户生成的合同,并向所述用户提供包含有所述合同的页面。

可选地,在本公开任一实施例的方法中,所述根据所述合同内容单元以及所述位置更新所述当前合同,包括:根据所述位置,将所述合同内容单元添加在所述当前合同中,并将所述合同内容单元的显示格式信息设置为预设突出显示格式信息,以使所述合同内容单元在所述页面中突出显示。

可选地,在本公开任一实施例的方法中,所述根据所述合同内容单元以及所述位置更新所述当前合同,包括:检测所述当前合同包含的所有合同内容单元中是否存在与所述答复信息对应的合同内容单元的抵触合同内容单元;若存在所述抵触合同内容单元,则删除所述当前合同中的抵触合同内容单元。

可选地,在本公开任一实施例的方法中,所述删除所述当前合同中的抵触合同内容单元,包括:将所述抵触合同内容单元的显示格式信息设置为预设删除标记显示格式信息,以使所述抵触合同内容单元以删除标记的形式显示在所述页面中。

可选地,在本公开任一实施例的方法中,所述向所述用户提供包含有所述合同的页面,包括:向所述用户提供包含有所述合同,且所述合同的内容可编辑的编辑页面;所述方法还包括:根据所述用户基于所述编辑页面执行的合同内容编辑操作,更新所述合同。

可选地,在本公开任一实施例的方法中,所述问题组合包括:引导问题节点图,所述引导问题节点图包括:多个引导问题节点,所述多个引导问题节点均设置有用于确定下游路径的函数,且所述多个引导问题节点包括:对具有后效性的引导问题节点进行节点拆分处理后,获得的拆分节点;所述根据所述问题组合,确定当前问题,包括:将所述引导问题节点图中的头端节点所对应的引导问题,作为当前问题。

可选地,在本公开任一实施例的方法中,所述引导问题节点图的设置方式包括:获取用于生成合同的多个引导问题节点链,形成节点链集合;对所述节点链集合所包含的引导问题节点进行节点后效性检测,获得具有后效性的引导问题节点;对所述具有后效性的引导问题节点进行节点拆分处理;为包含节点拆分处理后的引导问题节点在内的多个引导问题节点分别设置用于确定下游路径的函数,获得用于生成合同的引导问题节点图。

可选地,在本公开任一实施例的方法中,所述对所述节点链集合所包含的引导问题节点进行节点后效性检测,获得具有后效性的引导问题节点,包括:根据所述节点链集合中的各引导问题节点链所包含的所有引导问题节点以及所有引导问题节点间的跳转关系,生成一有向无环图;获取所述有向无环图所包含的节点路径,获得路径集合;根据所述路径集合,对所述节点链集合所包含的引导问题节点进行节点后效性检测,获得具有后效性的引导问题节点。

本公开实施例的又一个方面,提供一种用于生成合同的装置,该装置包括:确定模板和组合模块,用于根据用户输入的用于选择合同类型的信息,确定待生成合同对应的合同模板以及问题组合,并将所述合同模板作为当前合同;确定当前问题模块,用于根据所述问题组合,确定当前问题;页面展示模块,用于向所述用户提供同时包含有所述当前问题和所述当前合同的页面;确定单元和位置模块,用于根据所述用户输入的针对所述当前问题的答复信息,确定与所述当前问题的答复信息对应的合同内容单元以及所述合同模板中与所述合同内容单元关联的位置;更新当前合同模块,用于根据所述合同内容单元以及所述位置更新所述当前合同;生成合同模块,用于若根据所述问题组合,确定出存在与所述当前问题的答复信息关联的下一个问题,则将所述下一个问题作为当前问题,并触发所述页面展示模块执行向所述用户提供同时包含有所述当前问题和所述当前合同的页面的操作;若根据所述问题组合,确定出不存在与所述当前问题的答复信息关联的下一个问题,则根据所述当前合同,获得为所述用户生成的合同,并向所述用户提供包含有所述合同的页面。

可选地,在本公开任一实施例的装置中,所述问题组合包括:引导问题节点图,所述引导问题节点图包括:多个引导问题节点,所述多个引导问题节点均设置有用于确定下游路径的函数,且所述多个引导问题节点包括:对具有后效性的引导问题节点进行节点拆分处理后,获得的拆分节点;确定当前问题模块进一步用于:将所述引导问题节点图中的头端节点所对应的引导问题,作为当前问题。

可选地,在本公开任一实施例的装置中,所述装置还包括:用于设置所述引导问题节点图的装置,所述用于设置所述引导问题节点图的装置包括:形成节点链集合模块,用于获取用于生成合同的多个引导问题节点链,形成节点链集合;节点后效性检测模块,用于对所述节点链集合所包含的引导问题节点进行节点后效性检测,获得具有后效性的引导问题节点;节点拆分处理模块,用于对所述具有后效性的引导问题节点进行节点拆分处理;设置函数模块,用于为包含节点拆分处理后的引导问题节点在内的多个引导问题节点分别设置用于确定下游路径的函数,获得用于生成合同的引导问题节点图。

本公开实施例的再一个方面,提供一种电子设备,该电子设备包括:存储器,用于存储计算机程序;处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现上述任一方法实施例。

本公开实施例的再一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现上述任一方法实施例。

本公开实施例的再一个方面,提供一种计算机程序,包括:计算机可读代码,当所述计算机可读代码在设备上运行时,所述设备中的处理器执行用于实现上述任一方法实施例中各步骤的指令。

基于本公开上述实施例提供的用于生成合同的方法、装置、存储介质、电子设备以及程序,通过利用用户输入的选择合同类型的信息确定问题组合和合同模板,可以利用问题组合和合同模板获得当前问题和当前合同,通过向用户提供同时包含有当前问题和当前合同的页面,可以使用户随时的了解当前合同中的内容,从而使用户可以及时的发现合同中存在的不符合其需求的问题;通过不断的利用问题组合确定与当前问题的答复信息关联的下一个问题,并不断的利用与答复信息对应的合同内容单元更新当前问题,使用户可以在其自主操作的情况下,尽可能的生成满足其需求的合同。由此可知,本公开实施例提供的技术方案不仅有利于提高合同生成效率,降低合同生成的成本,而且有利于使合同生成技术具有易用性。

下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。

附图说明

构成说明书的一部分的附图描述了本公开的实施例,并且连同描述一起用于解释本公开的原理。

参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:

图1为本公开的用于生成合同的方法一实施例的流程图。

图2为本公开的设置引导问题节点图一实施例的流程图。

图3为本公开的利用有向无环图实现节点后效性检测一实施例的流程图。

图4为本公开的由引导问题节点链形成的有向无环图一实施例的示意图。

图5为本公开的节点无效性检测一实施例的流程图。

图6为本公开的有向无环图另一实施例的示意图。

图7为本公开的用于生成合同的装置一实施例的结构示意图。

图8为本公开电子设备一个应用实施例的结构示意图。

具体实施方式

现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。

本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。

还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。

还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。

另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。

还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。

同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

本公开实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。

终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。

图1为本公开的用于生成合同的方法一个实施例的流程图。如图1所示,该实施例的用于生成合同的方法包括下述步骤:

s100、根据用户输入的用于选择合同类型的信息,确定待生成合同对应的合同模板以及问题组合,并将该合同模板作为当前合同。

本公开中的合同类型可以是指合同的种类,例如,合同类型可以包括:短期借款合同、通用版买卖合同、房屋租赁类型、新房屋买卖类型、二手房屋买卖类型、股权代持合同以及劳动合同等。每一种合同类型各自对应有合同模板。在一个例子中,一种合同类型通常对应一个合同模板。在另一个例子中,一种合同类型可以对应多个合同模板。如果一种合同类型对应多个合同模板,则用户输入的用于选择合同类型的信息不仅可以用于确定出待生成合同的合同类型,还可以用于确定出合同类型所对应的所有合同模板中的其中一个合同模板。

本公开可以为用户提供用于选择待生成合同的合同类型的页面,在一个例子中,该页面中可以设置有热门合同区域和合同分类区域,以方便用户选择相应的合同类型。其中的热门合同区域中可以设置有多个合同类型的触发件,每一个触发件在被触发时,该触发键对应的合同模板即被作为待生成合同对应的合同模板;其中的合同分类区域中可以包括多个用于表示分类的触发件,每一个用于表示分类的触发件在被触发时,该触发件所对应的多种合同类型的触发件分别被呈现给用户。

本公开中的合同模板是预先设置的已知合同模板。每一合同模板均对应有各自的合同名称、相应的合同条款集合以及相应的文字说明等内容。另外,每一合同模板通常具有相应的合同内容排布格式(如合同名称所在的位置、合同条款所在的位置以及合同的文字说明所在的位置等)。本公开不限制合同模板以及合同模板的具体表现形式。

本公开中的问题组合通常包括多个问题,且所有问题之间通过问题的选项相关联,即问题组合中的一个问题的每一个选项通常与其他问题具有关联关系。一个具体的例子,问题组合中的第一个问题的第一个选项与第二个问题相关联,第一个问题的第二个选项与第三个问题相关联,第一个问题的第三个选项与第四个问题相关联,第一个问题的第四个选项与第五个问题相关联。本公开的问题组合可以表现为树的形式。树中的叶子节点所对应的问题的选项通常没有与其相关联的问题。

s101、根据该问题组合,确定当前问题。

本公开可以从问题组合中选取一个问题作为当前问题,即本公开将问题组合中的一个问题作为当前问题。例如,本公开可以将问题组合中的头端问题作为当前问题。更具体的,在问题组合表现为树的形式的情况下,本公开可以将树的根节点所对应的问题作为当前问题。本步骤中的当前问题可以称为初始当前问题或者首个当前问题。

s102、向用户提供同时包含有当前问题和当前合同的页面。

本公开中的页面可以是指基于http(hypertexttransferprotocol,超文本传输协议)的页面等。该页面可以为适用于计算机、移动电话或者平板电脑的页面。

本公开中的当前问题和当前合同可以采用分区域展示的方式呈现在同一页面中,例如,当前问题位于页面的左侧区域,当前合同位于页面的右侧区域。

s103、根据用户输入的针对当前问题的答复信息,确定与当前问题的答复信息对应的合同内容单元以及合同模板中与该合同内容单元关联的位置。

本公开中的用户输入的针对当前问题的答复信息可以为用户针对当前问题的所有选项所作出的选项选择信息。本公开中的用户输入的针对当前问题的答复信息也可以为用户针对当前问题所包含的空缺位置所填写的信息(即填空信息)。

在一个例子中,本公开中的问题组合中的一个问题的所有选项通常各自关联有相应的合同内容单元。本公开中的一个问题中的不同选项所关联的合同内容单元通常并不相同,然而,本公开中的一个问题中的一选项所关联的合同内容单元可以与本公开中的另一个问题中的一选项所关联的合同内容单元相同。例如,本公开的一个问题组合中的第一个问题的第一个选项与第一个合同内容单元相关联,第一个问题的第二个选项与第二个合同内容单元相关联,第一个问题的第三个选项与第三个合同内容相关联,第一个问题的第四个选项与第四个合同内容相关联,该问题组合中的第二个问题的第三个选项与第一个合同内容单元相关联,也就是说,第一个问题的四个选项各自关联的合同内容单元并不相同,而第一个问题的第一个选项和第二个问题的第三个选项各自关联的合同内容单元是相同的。

在另一个例子中,问题组合中的一个问题的题目部分可以对应一个合同内容单元,该合同内容单元包含有需要被填充的空缺部分,本公开可以将用户针对该问题的题目部分所输入的填空信息填充在该合同内容单元的空缺部分的位置处。

本公开中的合同内容单元可以认为是合同的一个组成单元(也可以称为一个组成部分),例如,一个合同内容单元可以为法律法规中的一个具体的条款,也可以为合同中的一项补充说明等。本公开不限制合同内容单元的具体表现形式。

本公开中的合同模板中的与合同内容单元关联的位置可以认为是合同内容单元在合同模板中的位置。本公开中的合同内容单元在合同模板中的位置可以是预先设置的,例如,本公开可以根据预先设置的合同内容排布规则,确定各合同内容单元各自在合同模板中的位置。

s104、根据上述合同内容单元以及上述位置更新当前合同。

本公开可以根据上述步骤获得的位置,将上述步骤获得的合同内容单元添加在当前合同中的相应位置处,从而实现对当前合同的更新。

s105、若根据问题组合,确定出存在与当前问题的答复信息关联的下一个问题,则将下一个问题作为当前问题,并返回s102。

在本公开中的问题组合表现为树的形式的情况下,如果当前问题不是该树的末端节点(即叶子节点),则可以确定出存在与当前问题的答复信息关联的下一个问题。

s106、若根据问题组合,确定出不存在与当前问题的答复信息关联的下一个问题,则根据当前合同,获得为用户生成的合同,并向用户提供包含有该合同的页面。

在本公开中的问题组合表现为树的形式的情况下,如果当前问题是该树的末端节点(即叶子节点),则可以确定出不存在与当前问题的答复信息关联的下一个问题。在确定出不存在与当前问题的答复信息关联的下一个问题的情况下,本公开可以将当前合同作为为用户生成的合同,也可以对当前合同进行一定的后处理(如格式以及版面的调整处理等),并将后处理获得的合同作为为用户生成的合同。本公开向用户提供的包括有合同的页面同样可以是基于http的页面,且该页面可以为适用于计算机、移动电话或者平板电脑的页面。本公开支持用户通过翻页以及上下左右移动光标等操作查看合同的全部内容。

本公开通过利用用户输入的选择合同类型的信息,确定问题组合和合同模板,可以利用问题组合和合同模板获得当前问题和当前合同,通过向用户提供同时包含有当前问题和当前合同的页面,可以使用户随时的了解目前合同中的内容,从而使用户可以及时的发现合同中存在的不符合其需求的问题;通过不断的利用问题组合确定与当前问题的答复信息关联的下一个问题,并不断的利用与答复信息对应的合同内容单元更新当前问题,使用户可以在其自主操作的情况下,尽可能的生成满足其需求的合同。由此可知,本公开实施例提供的技术方案不仅有利于提高合同生成效率,降低合同生成的成本,而且有利于使合同生成技术具有易用性。

在一个可选示例中,本公开在利用合同内容单元以及位置,来更新当前合同时,可以采用不同的显示格式,对当前合同中的内容进行区分显示。例如,对于一合同内容单元,本公开可以根据合同模板中与该合同内容单元关联的位置,将该合同内容单元添加在当前合同的相应位置处,并将该合同内容单元的显示格式信息设置为预设突出显示格式信息,从而使该合同内容单元可以在当前页面中突出显示。

在一个例子中,预设突出显示格式信息可以包括:基于下划线的显示格式信息、基于高亮的显示格式信息、基于加大字体的显示格式信息、基于加粗的显示格式信息以及基于预定突出颜色(如红色等)的显示格式信息中的一个或者多个。

本公开通过使添加在当前合同中的合同内容单元在页面中突出显示,有利于使用户随时了解当前合同的内容变化,从而使用户可以及时的发现合同中存在的不符合其需求的问题,进而有利于高效的为用户提供符合其需求的合同。

在一个可选示例中,本公开在根据合同内容单元以及位置,更新当前合同的过程中,应确保向当前合同中新增加的内容与更新前的当前合同中的已有内容不存在矛盾。具体的,本公开可以检测更新前的当前合同包含的所有合同内容单元中是否存在与当前问题的答复信息对应的合同内容单元的抵触合同内容单元,如果检测的结果为存在抵触合同内容单元,则本公开可以删除当前合同中的抵触合同内容单元。本公开中的抵触合同内容单元可以是指:如果当前需要添加在当前合同中的合同内容单元与当前合同中的一个已有的合同内容单元,这两者中只能存在其中一个合同内容单元,则当前合同中的该已有的合同内容单元即为当前需要添加在当前合同中的合同内容单元的抵触合同内容单元。抵触合同内容单元也可以称为矛盾合同内容单元或者相反合同内容单元等。

在一个例子中,如果一合同内容单元为:允许预定当事人采用方式a对预定物件进行处理,而另一合同内容单元为:禁止预定当事人采用方式b对预定物件进行处理,假设方式a包含有方式b,则本公开可以认为这两个合同内容单元互为抵触合同内容单元。

可选的,本公开可以利用预先设置的合同内容单元之间的相互抵触信息,判断当前合同中是否存在与当前需要添加在当前合同中的合同内容单元相抵触的合同内容单元。一个例子,可以为同一法律法规中的不同条款分别设置相互抵触信息,再一个例子,可以为不同法律法规中的相应条款分别设置相互抵触信息等。

在一个例子中,本公开可以为用户提供存在抵触条款的提示信息,并将互为抵触的合同内容单元一并提供给用户(如将互为抵触的合同内容单元均以闪烁的方式显示),本公开可以根据用户输入的删除选择信息,将互为抵触的合同内容单元中的其中一个删除。

在另一个例子中,本公开可以在不为用户提供相关提示信息的情况下,直接将互为抵触的合同内容单元中的其中一个删除。例如,将更新前的当前合同中的一已有的抵触合同内容单元删除,再例如,将新添加在当前合同中的合同内容单元删除。再例如,本公开可以对两个互为抵触合同内容单元各自对应的级别进行对比,并将对比结果中的级别较低的合同内容单元删除。如果两个抵触合同内容单元各自对应的级别相同,则可以由用户确定需要删除的合同内容单元,也可以基于缺省设置,删除其中一个合同内容单元。合同内容单元对应的级别可以与合同内容单元所属的法律的性质相关,例如,属于地方性法规性质的合同内容单元的级别通常低于属于法律性质的合同内容单元的级别。

本公开通过在更新当前合同的过程中,执行抵触合同内容检测,有利于排除合同中存在的潜在问题,从而有利于提高生成的合同的质量。

在一个可选示例中,本公开可以采用为抵触合同内容单元设置删除标记的方式,来表示当前合同中的抵触合同内容单元会被删除。具体的,本公开可以将抵触合同内容单元的显示格式信息设置为预设删除标记显示格式信息,从而使抵触合同内容单元以带有删除标记的形式显示在页面中。一个例子,本公开可以将抵触合同内容单元的显示格式信息设置为字中加单线显示格式信息或者字中加双线显示格式信息,从而在显示当前合同时,抵触合同内容单元仍然可以存在于当前合同中,只是抵触合同内容单元以字中加单线或者字中加双线的形式存在于当前合同中。另外,如果抵触合同内容单元包括序号,则该序号通常不会导致与相邻的其他合同内容单元的序号发生不连续现象。

本公开通过将抵触合同内容单元以删除标记的形式显示在页面中,能够让用户更好的了解合同的生成过程和合同中的内容变化,从而有利于提高用户体验。

在一个可选示例中,在当前问题为问题组合中的最后一个问题,且本公开接收到用户针对当前问题的答复信息的情况下,本公开在为用户提供当前生成的完整合同的同时,可以为用户提供合同编辑功能,使用户可以通过该功能自行对当前生成的完整合同进行编辑。

在一个例子中,本公开可以向用户提供包含有合同的所有内容,且合同内容可编辑的页面,例如,为用户提供的包含有合同的所有内容的页面中,还包含合同编辑触发件(如合同编辑按钮),在接收到合同编辑触发件被用户触发的信息时,本公开为用户提供用于编辑合同内容的页面,该页面允许用户执行删除合同中的内容(如删除字或者语句或者段落等)、在合同中增加新内容(如添加字或者语句或者段落等)、以及调整合同的排布格式等操作。其中的调整合同的排布格式可以包括:调整合同中的内容的首行缩进、调整合同中的内容的字体、调整合同中的内容的字号、以及调整合同中的内容的段落位置等。本公开可以根据用户基于该页面所执行的合同内容编辑操作,更新合同。例如,在用户执行了对合同中的相应内容的删除操作、在合同中添加新内容的操作、以及排布格式的调整操作后,并点击了页面中的编辑完成触发件(如编辑完成提交按钮等)后,本公开可以根据用户的所有编辑操作对合同中的内容进行相应的调整,并将编辑后的合同提供给用户,本公开可以将编辑后的合同作为最终为用户生成的合同。

另外,在用户对合同进行编辑的过程中,本公开可以实时的对合同中的内容进行抵触合同内容单元检测,例如,在用户自行新增合同内容时,可以确定与该新增合同内容对应的合同内容单元,并利用预先设置的合同内容单元之间的相互抵触信息,判断合同中是否存在与该新增合同内容相抵触的合同内容单元,从而有利于避免用户对合同的不当修改现象。

本公开通过为用户提供合同编辑功能,使用户可以自行对合同内容进行调整,从而有利于提高合同生成的灵活性,并有利于使合同尽可能的满足用户需求。

在一个可选示例中,本公开的问题组合可以为引导问题节点图。该引导问题节点图包括:多个引导问题节点,且多个引导问题节点均设置有用于确定下游路径的函数。每一个引导问题节点各自对应一个引导问题。另外,本公开中的引导问题节点图包括:对具有后效性的引导问题节点进行节点拆分处理后,获得的拆分节点。也就是说,本公开中的引导问题节点图可以认为是:去除了至少部分具有后效性的引导问题节点且每一个引导问题节点均设置有用于确定下游路径的函数的有向无环图。本公开中的引导问题节点图的设置过程可以参见下述针对图2的描述。

可选的,在本公开s100中确定出的问题组合为一引导问题节点图时,该引导问题节点图可以为独立完整的引导问题节点图,也可以为引导问题节点全图中的一部分,即引导问题节点全图中的一个区域图。在s100中确定出的问题组合节点图为引导问题节点全图中的一个区域的情况下,本公开可以对接收到的用于选择合同类型的信息进行相应的计算,并根据计算结果,在引导问题节点全图中确定一引导问题节点,并将该引导问题节点作为根节点,以该根节点为路径起始节点所形成的所有路径即为s100中确定出的问题组合。

图2中,s200、获取用于生成合同的多个引导问题节点链,形成节点链集合。

本公开中的引导问题节点链可以是指由多个引导问题节点以及引导问题节点间的跳转关系,形成的逻辑链路。即本公开中的引导问题节点链包括两个基本要素,分别为:引导问题节点和引导问题节点间的跳转关系,每一个引导问题节点均对应各自的题目。

在一个例子中,一个题目包括题干以及多个选项。引导问题节点间的跳转关系通常是由引导问题节点所对应的题目的选项决定的。例如,一引导问题节点所对应的题目共包括n(n为大于1的整数)个选项,这n个选项中的每一个选项均会引出不同的下一个题目(即下一个引导问题节点),从而形成上游引导问题节点和下游引导问题节点间的跳转关系。

本公开中的每一个引导问题节点可以均具有唯一标识(如节点标识等),且不同引导问题节点具有不同的标识。在通常情况下,在节点拆分处理之前,节点链集合中的不同引导问题节点各自对应的题目并不相同。当然,本公开并不排除节点链集合中的两个不同引导问题节点各自对应的题目相同的现象,然而,这两个对应相同题目的不同引导问题节点应具有不同的标识。

本公开中的一个引导问题节点链通常为没有支路的链路,例如,一个引导问题节点链为:引导问题节点1为一引导问题节点链的头端节点(也可以称为开始节点),引导问题节点1的下游节点为引导问题节点2,引导问题节点2的下游节点为引导问题节点3,引导问题节点3的下游节点为引导问题节点4,引导问题节点4为引导问题节点链的末端节点。当然,本公开也不排除一个引导问题节点链为带有支路的链路的情况,例如,引导问题节点1为一引导问题节点链的头端节点,引导问题节点1的下游节点为引导问题节点2,引导问题节点2的下游节点为引导问题节点3,引导问题节点3的下游节点为引导问题节点4和引导问题节点5,引导问题节点4和引导问题节点5均为引导问题节点链的末端节点。

在一个例子中,本公开中的节点链集合中的所有引导问题节点链通常具有相同的头端节点。也就是说,如果利用节点链集合中的所有引导问题节点链形成一棵树,则节点链集合中的所有引导问题节点链的头端节点即为该树的根节点。当然,本公开也不排除节点链集合中的所有引导问题节点链具有不同的头端节点的现象,从而在利用节点链集合中的所有引导问题节点链形成树时,可能会形成一棵树,也可能会形成多颗树。

本公开可以通过接收外部输入的引导问题节点链信息或者读取预定位置处的存储信息等方式,获取到多个引导问题节点链。多个引导问题节点链通常是根据至少一种类型的合同的具体需求预先设置的。例如,一种类型的合同所涉及到的引导问题节点及其节点间的跳转关系通常会存在多种可能性,本公开可以预先针对每一种可能性分别设置一个引导问题节点链。同样的,多种类型的合同所涉及到的引导问题节点及其节点间的跳转关系也会存在多种可能性,本公开可以预先针对每一种可能性分别设置一个引导问题节点链。

s201、对节点链集合所包含的引导问题节点进行节点后效性检测,获得具有后效性的引导问题节点。

本公开中的节点后效性可以是指:对于节点链集合中的任一引导问题节点而言,如果将该引导问题节点作为当前引导问题节点,则在确定该当前引导问题节点的下游节点时,需要考虑该当前引导问题节点的前置路径。当前引导问题节点的前置路径可以是指从引导问题节点链的头端节点到当前引导问题节点的路径。

本公开可以对节点链集合中的所有引导问题节点均进行节点后效性检测,也可以对节点链集合中的部分引导问题节点分别进行节点后效性检测。例如,本公开可以对节点链集合中的所有引导问题节点链中的除特定节点之外的其他引导问题节点,分别进行节点后效性检测,其中的特定节点可以包括:引导问题节点链的头端节点以及末端节点等。

对于节点链集合中的任一引导问题节点而言,本公开通过对该引导问题节点进行节点后效性检测,可以判断出该引导问题节点是具有后效性的引导问题节点,还是无后效性的引导问题节点(即不具有后效性的引导问题节点)。本公开可以基于节点链集合中的所有引导问题节点链中的每一个引导问题节点各自的上游节点和下游节点,所形成的引导问题节点间的逻辑关系,对节点链集合中的引导问题节点进行节点后效性检测,获得具有后效性的引导问题节点。本公开不限制节点后效性检测的具体实现方式。

s202、对具有后效性的引导问题节点进行节点拆分处理。

本公开中的节点拆分处理可以是指将一个引导问题节点拆分为两个不同的引导问题节点。例如,保留具有后效性的引导问题节点,并基于该具有后效性的引导问题节点再设置一个新的引导问题节点,从而获得两个引导问题节点。再例如,不保留具有后效性的引导问题节点,基于该具有后效性的引导问题节点设置两个新的引导问题节点,从而获得两个引导问题节点。

本公开基于一个引导问题节点拆分获得的两个引导问题节点,具有相同的题目以及相同的选项,但是,拆分获得的两个引导问题节点应具有不同的标识(如具有不同的节点标识),而且,拆分获得的两个引导问题节点的所有下游节点并不相同,例如,两个不同的引导问题节点所对应的题目的同一选项所引出的下一个引导问题节点并不相同。这意味着拆分获得的两个引导问题节点各自对应的用于确定下游路径的函数应不相同,且函数的自变量也不应相同。

本公开中的节点拆分处理可以使节点链集合中的相应的引导问题链产生变化,例如,节点链集合中的一引导问题链中的具有后效性的引导问题节点被拆分获得的新的引导问题节点所取代等。

s203、为包含节点拆分处理后的引导问题节点在内的多个引导问题节点分别设置用于确定下游路径的函数,获得用于生成合同的引导问题节点图。

在一个例子中,在利用拆分获得的新的引导问题节点对节点链集合进行更新的情况下,本公开中的包含节点拆分处理后的引导问题节点在内的多个引导问题节点可以包括:更新后的节点链集合中的所有引导问题节点链中的所有引导问题节点。

对于引导问题节点图中的任一引导问题节点而言,本公开为该引导问题节点设置的用于确定下游路径的函数可以是指:能够表示出该引导问题节点的所有下游节点的函数。本公开中的引导问题节点图可以表现为一设置有用于确定下游路径的函数的有向无环图。

本公开通过利用节点后效性检测,获得具有后效性的引导问题节点,通过对具有后效性的引导问题节点进行节点拆分处理,可以排除节点链集合中的至少部分具有后效性的引导问题节点;由于为无后效性引导问题节点设置用于确定下游路径的函数的复杂度,远小于为具有后效性的引导问题节点设置用于确定下游路径的函数的复杂度,因此,本公开可以便捷的为引导问题节点设置用于确定下游路径的函数。由此可知,本公开实施例提供的技术方案有利于降低用于生成合同的引导问题节点图的维护难度,从而有利于提高用于生成合同的引导问题节点图的维护效率,进一步的,在利用这样的引导问题节点图为用户生成合同时,由于引导问题节点图中的各引导问题节点的用于确定下游路径的函数的复杂度均较低,因此,有利于提高合同生成效率,并有利于使合同生成技术具有易用性。

在一个可选示例中,本公开中的节点链集合所包含的所有引导问题节点链均对应同一个合同模板,且一个合同模板通常对应一种类型的合同,例如,房屋租借类型的合同对应一合同模板,新房屋买卖类型的合同对应另一合同模板,二手房屋买卖类型的合同对应再一合同模板。即本公开在s200中获取到的多个引导问题节点链均对应同一个合同模板,该合同模板与节点链集合中的每一个引导问题节点链相配合,均可以为用户生成相同类型的合同。也就是说,本公开可以针对一个合同模板设置一个引导问题节点图,不同合同模板对应不同的引导问题节点图。

在另一个可选示例中,本公开中的节点链集合所包含的所有引导问题节点链对应至少两个合同模板,且不同合同模板通常对应不同类型的合同。即本公开在s200中获取到的多个引导问题节点链对应多个合同模板,每一个合同模板均对应节点链集合中的部分引导问题节点链,每一个合同模板与其对应的每一个引导问题节点链相配合,均可以为用户生成相同类型的合同。基于不同合同模板生成的合同通常为不同类型的合同。在一个例子中,本公开的节点链集合包括:m条引导问题节点链,其中的第1条至第m1条引导问题节点链对应房屋租借类型的合同模板,其中的第m1+1至第m2条引导问题节点链对应新房屋买卖类型的合同模板,其中的第m2+1至第m3条引导问题节点链对应二手房屋买卖类型的合同模板,其中的m1、m2和m3均为大于等于1的整数,且m为m1、m2和m3之和,m2大于m1,m3大于m2。也就是说,本公开可以针对多个合同模板设置一个引导问题节点图,且不同合同模板对应同一个引导问题节点图中的不同区域。

在节点链集合所包含的所有引导问题节点链均对应同一个合同模板的情况下,本公开获得的引导问题节点图更具有针对性,从而在对引导问题节点图进行增删节点以及修改节点间的跳转关系等维护操作的过程中,有利于避免对基于其他合同模板生成合同的过程的影响,即有利于限制维护操作的波及范围。

在节点链集合所包含的所有引导问题节点链对应至少两个合同模板的情况下,本公开获得的引导问题节点图更具有全面性,由于不同类型的合同可能会涉及相同的引导问题节点,因此,有利于节约引导问题节点图所消耗的存储资源。

在一个可选示例中,本公开可以利用有向无环图实现节点后效性检测。本公开利用有向无环图实现节点后效性检测的一个例子如图3所示。

s300、根据节点链集合中的各引导问题节点链所包含的所有引导问题节点以及所有引导问题节点间的跳转关系,生成一有向无环图。

可选的,本公开中的有向无环图可以是指无回路的有向图。节点链集合中的所有引导问题节点链所包含的所有引导问题节点即为该有向无环图中的所有节点,节点链集合中的所有引导问题节点链中的所有引导引导问题节点间的跳转关系即为该有向无环图中的所有节点的跳转关系。

可选的,在本公开中的节点链集合中的所有引导问题节点链具有相同的头端节点的情况下,本公开所生成的该有向无环图可以认为是:一颗以所有引导问题节点链的头端节点为根节点的树。

可选的,本公开可以通过将节点链集合中的所有引导问题节点链中的相同引导问题节点合并为图中的一个节点,而形成一有向无环图。在一个例子中,假设节点链集合包括4条引导问题节点链,且这4条引导问题节点链共涉及6个引导问题节点,分别为节点1、节点2、节点3、节点4、节点5以及节点6,且上述4条引导问题节点链分别为:

节点4-->节点3-->节点2;

节点4-->节点3-->节点6-->节点1-->节点2;

节点4-->节点6-->节点1-->节点2;

节点4-->节点6-->节点5;

由上述4条引导问题节点链所形成的有向无环图的一个例子如图4所示。图4中的有向无环图的头端节点为节点4,且节点2和节点5均为该有向无环图的末端节点。图4所示的有向无环图可以认为是一颗以节点4是根节点的树,节点2和节点5为树的叶子节点。

s301、获取上述有向无环图所包含的节点路径,获得路径集合。

可选的,本公开中的路径集合可以包括:该有向无环图所包含的所有节点路径。本公开可以通过对有向无环图进行路径遍历的方式,获得有向无环图所包含的所有节点路径。在一个例子中,本公开可以采用深度优先路径遍历算法,对该有向无环图进行路径遍历,从而获得该有向无环图所包含的所有节点路径。

可选的,路径集合所包含的每一条节点路径可以看做是一条节点链,且路径集合所包含的节点路径的数量通常会多于节点链集合所包含的引导问题节点链的数量。在一个例子中,路径集合中的部分节点路径与节点链集合中的所有引导问题节点链相同,路径集合中的另一部分节点路径是节点链集合所没有的。

续前例,对于图4而言,本公开通过路径遍历获得的路径集合所包含的所有节点路径如下:

节点4-->节点3-->节点2;

节点4-->节点3-->节点6-->节点1-->节点2;

节点4-->节点3-->节点6-->节点5;

节点4-->节点6-->节点1-->节点2;

节点4-->节点6-->节点5;

由上述描述可知,节点链集合包括4条引导问题节点链,路径集合包括5条节点路径,路径集合中有4条节点路径与节点链集合所包含的4条引导问题节点链完全相同,路径集合中的节点4-->节点3-->节点6-->节点5,这一条节点路径是节点链集合所没有的。

s302、根据上述路径集合,对节点链集合所包含的引导问题节点进行节点后效性检测,获得具有后效性的引导问题节点。

可选的,本公开可以基于有向无环图所包含的所有节点路径以及节点链集合中的引导问题节点链,对节点链集合中的至少部分引导问题节点(如所有引导问题节点)分别进行节点后效性检测,以判断至少部分引导问题节点是否具有后效性。在对所有引导问题节点均进行节点后效性检测的情况下,本公开可以区分出节点链集合中的具有后效性的所有引导问题节点和不具有后效性的所有引导问题节点(即所有无后效性引导问题节点)。

在一个例子中,对于节点链集合中的任一引导问题节点而言,本公开可以根据该引导问题节点在路径集合的所有节点路径中的下游节点情况以及该引导问题节点在节点链集合的至少部分引导问题节点链中的下游节点情况,来判断该引导问题节点是否具有后效性。例如,如果该引导问题节点在路径集合的所有节点路径中的下游节点多于该引导问题节点在节点链集合的至少部分引导问题节点链中的下游节点,则可以认为该引导问题节点具有后效性,否则,认为该引导问题节点不具有后效性。

续前例,对于图4中的节点4而言,由于节点4在路径集合的所有节点路径中的下游节点情况为:节点3和节点6,且节点4在节点链集合的其中一部分引导问题节点链中的下游节点情况为:节点3和节点6,因此,可以判断出节点4为无后效性节点。

续前例,对于图4中的节点6而言,由于节点6在路径集合的所有节点路径中的下游节点情况为:节点1和节点5,且节点6在节点链集合的其中一部分引导问题节点链中的下游节点情况为:节点5,因此,可以判断出节点6为具有后效性的引导问题节点。

由于路径集合中的节点不会受到用于确定下游路径的函数的约束,因此,路径集合所包含的节点路径可以清楚明确的表示出各节点的所有下游节点。如果一引导问题节点在路径集合中的所有下游节点与该引导问题节点在节点链集合中的相应引导问题节点链中的所有下游节点存在差异,则可以说明该引导问题节点到其下游节点的后置路径与该引导问题节点的前置路径具有相关性,因此,本公开可以认为该引导问题节点为具有后效性的引导问题节点。本公开通过利用遍历有向无环图的节点路径获得的路径集合,实现节点后效性检测,有利于使节点后效性检测易于实施。

在一个可选示例中,在对一引导问题节点进行节点后效性检测时,可以利用引导问题节点在路径集合中的下游节点情况、以及该引导问题节点在节点链集合中的下游节点情况,来判断该引导问题节点是否为具有后效性的引导问题节点。即本公开可以利用该引导问题节点在节点链集合中的下游节点,判断该引导问题节点在路径集合中的下游节点是否存在无效的下游节点,如果存在无效的下游节点表示该引导问题节点为具有后效性的引导问题节点。其中的引导问题节点在节点链集合中的下游节点可以是指节点链集合中的具有相同末端节点的引导问题节点链。本公开可以以节点链集合中的末端节点为单位,将节点链集合中的所有引导问题节点链划分为多个子集,每一子集中的所有引导问题节点链具有相同的末端节点,且不同子集对应不同的末端节点。

在一个例子中,本公开可以以子集为单位进行节点后效性检测,例如,对于任一子集而言,本公开可以从该子集的头端节点开始,基于广度优先搜索的方式,利用路径集合中的所有节点路径,对该子集中的所有引导问题节点链所包含的部分引导问题节点(如除去头端节点和末端节点之外的引导问题节点)或者所有引导问题节点,依次进行节点后效性检测,获得该子集中的具有后效性的引导问题节点。

由于不同子集中的引导问题节点链所包含的引导问题节点存在重复现象,因此,节点链集合中的任一引导问题节点均可能会被进行多次节点后效性检测,例如,第一子集和第二子集均包括第一引导问题节点、第二引导问题节点和第三引导问题节点,则在针对第一子集进行节点后效性检测的过程中,会分别检测第一引导问题节点、第二引导问题节点和第三引导问题节点是否具有后效性,在针对第二子集进行节点后效性检测的过程中,仍然会分别检测第一引导问题节点、第二引导问题节点和第三引导问题节点是否具有后效性。换角度而言,如果一个引导问题节点应出现在两个不同子集中,则可以认为该引导问题节点以两个不同的节点的形式出现在两个不同子集中。例如,以该引导问题节点的一副本节点和该引导问题节点的另一副本节点的形式存在于两个不同子集中。如果一引导问题节点在其中一个子集的节点后效性检测过程中被确定为具有后效性的引导问题节点,则不论该引导问题节点在其他子集的节点后效性检测过程中是否被确定为不具有后效性的引导问题节点,本公开仍会将该引导问题节点作为具有后效性的引导问题节点。

续前例,对于图4而言,由于节点链集合中的末端节点包括:节点2和节点5,因此,本公开可以将节点链集合中的引导问题节点链划分为两子集,其中第一子集包括:节点4-->节点3-->节点2、节点4-->节点3-->节点6-->节点1-->节点2以及节点4-->节点6-->节点1-->节点2;其中第二子集包括:节点4-->节点6-->节点5。

对于第一子集而言,本公开基于广度优先搜索的方式,对各引导问题节点进行节点后效性检测的顺序可以为:节点4、(节点3和节点6)、(节点2、节点5和节点1),其中,括号中的节点顺序可以随意变换。

对于第二子集而言,本公开基于广度优先搜索的方式,对各引导问题节点进行节点后效性检测的顺序可以为:节点4、节点6、节点5。

可选的,本公开在对一个子集中的引导问题节点进行节点后效性检测的过程中,如果其中一个引导问题节点被确定为具有后效性的引导问题节点,则由于需要对该引导问题节点进行节点拆分处理,因此,本公开可以不对该引导问题节点在该子集中的各下游节点进行节点后效性检测。

本公开通过利用末端节点对节点链集合中的引导问题节点链进行划分,形成多个子集,并基于广度优先搜索的方式,各子集中的对引导问题节点依次进行后效性检测,使节点后效性检测易于实施,有利于在确保节点后效性检测的准确性的同时,于提高后效性检测的效率。

在一个可选示例中,本公开提供的节点无效性检测的一个实施例的流程,可以如图5所示。

s500、针对一末端节点而言,获取路径集合与节点链集合中的基于该末端节点的各引导问题节点链的差异。

可选的,本公开可以从路径集合中去除节点链集合中的基于该末端节点的各引导问题节点链,例如,将路径集合所包含的所有节点路径与节点链集合中的基于该末端节点的所有引导问题节点链进行相减处理,从而获得路径集合与节点链集合中的基于该末端节点的各引导问题节点链的差异。

续前例,对于图4中的节点2而言,节点链集合中的基于节点2的各引导问题节点链包括:节点4-->节点3-->节点2、节点4-->节点3-->节点6-->节点1-->节点2以及节点4-->节点6-->节点1-->节点2;而路径集合所包括的节点路径包括:节点4-->节点3-->节点2、节点4-->节点3-->节点6-->节点1-->节点2、节点4-->节点3-->节点6-->节点5、节点4-->节点6-->节点1-->节点2、以及节点4-->节点6-->节点5;路径集合与节点链集合中的基于末端节点2的各引导问题节点链的差异为:节点4-->节点3-->节点6-->节点5以及4-->节点6-->节点5。

续前例,对于图4中的节点5而言,节点链集合中的基于节点5的各引导问题节点链包括:节点4-->节点6-->节点5;路径集合所包括的节点路径包括:节点4-->节点3-->节点2、节点4-->节点3-->节点6-->节点1-->节点2、节点4-->节点3-->节点6-->节点5、节点4-->节点6-->节点1-->节点2、以及节点4-->节点6-->节点5;路径集合与节点链集合中的基于末端节点5的各引导问题节点链的差异为:节点4-->节点3-->节点2、节点4-->节点3-->节点6-->节点1-->节点2、节点4-->节点3-->节点6-->节点5、以及节点4-->节点6-->节点1-->节点2。

s501、基于广度优先搜索的方式,将节点链集合中的基于该末端节点的各引导问题节点链中的一引导问题节点作为待检测节点。

可选的,本公开可以利用节点链集合中的基于该末端节点的各引导问题节点链形成一棵树,然后,可以先将该树的根节点(例如,图4中的节点4)作为待检测节点,其次,将该树的根节点的所有下游节点(如图3中的节点6和节点3)按照一定的顺序依次被作为待检测节点,以此类推,直到将该树的末端节点(如节点5或者节点2)作为待检测节点。在一个例子中,本公开可以不对该树的根节点以及末端节点进行节点后效性检测,即可以不必将该树的跟节点和末端节点作为待检测节点。

s502、获取待检测节点在该差异中的第一下游节点集合,并获取待检测节点在基于该末端节点的各引导问题节点链中的第二下游节点集合。

续前例,在末端节点为图4中的节点2的情况下,路径集合与节点链集合中的基于末端节点2的各引导问题节点链的差异包括:

节点4-->节点3-->节点6-->节点5;以及

节点4-->节点6-->节点5;

节点链集合中的以节点2为末端节点的各引导问题节点链包括:

节点4-->节点3-->节点2;

节点4-->节点3-->节点6-->节点1-->节点2;以及

节点4-->节点6-->节点1-->节点2;

在上述情况下,如果待检测节点为节点4,则第一下游节点集合包括:节点3和节点6,且第二下游节点集合包括:节点3和节点6;如果待检测节点为节点3,则第一下游节点集合包括:节点6,第二下游节点集合包括:节点2和节点6;如果待检测节点为节点6,则第一下游节点集合包括:节点5,第二下游节点集合包括:节点1;如果待检测节点为节点1,则第一下游节点集合为空,第二下游节点集合包括:节点2。

续前例,在末端节点为图4中的节点5的情况下,路径集合与节点链集合中的基于末端节点5的各引导问题节点链的差异包括:

节点4-->节点3-->节点2;

节点4-->节点3-->节点6-->节点1-->节点2;

节点4-->节点3-->节点6-->节点5;以及

节点4-->节点6-->节点1-->节点2;

假设节点链集合中的基于节点5的各引导问题节点链包括:

节点4-->节点6-->节点5;

在上述情况下,如果待检测节点为节点4,则第一下游节点集合包括:节点3和节点6,第二下游节点集合包括:节点6;如果待检测节点为节点6,则第一下游节点集合包括:节点1和节点5,第二下游集合包括:节点5。

s503、在确定出第一下游节点集合不属于第二下游节点集合时,将待检测节点作为具有后效性的引导问题节点。

续前例,在本公开不对根节点进行节点后效性检测,且在末端节点为图4中的节点2的情况下,在待检测节点为节点6时,由于第一下游节点集合包括:节点5,而第二下游节点集合包括:节点1;因此,本公开可以将节点6作为具有后效性的引导问题节点。

续前例,在本公开不对根节点进行节点后效性检测,且在末端节点为图4中的节点2的情况下,在待检测节点为节点6时,由于第一下游节点集合包括:节点1和节点5,而第二下游集合包括:节点5;因此,本公开可以将节点6作为具有后效性的引导问题节点。

本公开通过获得路径集合与节点链集合中的基于末端节点的引导问题节点链的差异,可以方便的利用该差异以及节点链集合中的基于末端节点的引导问题节点链,获得第一下游节点集合和第二下游节点集合,从而通过对第一下游节点集合和第二下游节点集合的比较,即可便捷的确定出具有后效性的引导问题节点,进而有利于高效准确的实现节点后效性检测。

在一个可选示例中,本公开可以针对每一个具有后效性的引导问题节点,分别形成其拆分节点,并将节点链集合中的相应引导问题链中的具有后效性的引导问题节点更新为该拆分节点。这里的相应引导问题链可以是指节点链集合中的包含有具有后效性的引导问题节点的所有引导问题链中的部分引导问题链。

续前例,由于检测出节点6为具有后效性的引导问题节点,因此,本公开可以为节点6形成节点6’,并利用节点6’替换节点4-->节点6-->节点5这一引导问题节点链中的节点6,从而形成节点4-->节点6’-->节点5。

本公开通过形成具有后效性的引导问题节点的拆分节点,并利用拆分节点替换节点链集合中的相应引导问题链中的具有后效性的引导问题节点,有利于消除节点链集合的引导问题链存在具有后效性的引导问题节点的问题,从而通过为更新后的节点链集合中的各引导问题节点分别设置用于确定下游路径的函数,即可便捷的形成引导问题节点图。

在一个可选示例中,本公开为引导问题节点(包括拆分节点)设置用于确定下游路径的函数的过程可以为:针对节点链集合中的任一引导问题节点而言,将该引导问题节点所对应的题目的各选项作为自变量,并将该引导问题节点的所有下游节点作为因变量,为该引导问题节点设置用于确定下游路径的函数。

在一个例子中,本公开中的用于确定下游路径的函数可以表示为y=f(x)的形式,对于任一引导问题节点而言,x表示该引导问题节点的信息,而不再需要表示该引导问题节点的所有前置路径的集合,y表示根据该引导问题节点计算出的该引导问题节点的可能的后置节点集合,而不再需要表示根据该引导问题节点的所有前置路径集合计算出的该引导问题节点的可能的后置节点集合。其中的前置路径即从引导问题节点图的根节点到该引导问题节点的路径,后置节点即下游节点。

由于本公开中的引导问题节点的用于确定下游路径的函数的自变量可以为节点对应的题目的各选项,而不再需要表示引导问题节点的所有前置路径的集合,因此,本公开使引导问题节点图中的各引导问题节点的用于确定下游路径的函数中的自变量得到了极大的简化,也就是说,在设置引导问题节点的用于确定下游路径的函数时,可以不必考虑引导问题节点的所有前置路径,从而极大的降低了为引导问题节点设置用于确定下游路径的函数的难度,进而有利于提高引导问题节点图的维度效率。

在一个可选示例中,本公开可以将引导问题节点图存储在数据库中。即本公开可以将引导问题节点图中的每一个引导问题节点所涉及的信息均存储在数据库中。本公开中的每一个引导问题节点所涉及的信息可以包括:本引导问题节点所对应的题目中的题干、本引导问题节点所对应的题目中的所有选项、以及本引导问题节点的用于确定下游路径的函数。

下面结合图6,对本公开的用于生成合同的方法的一具体实现过程进行说明。

假设本公开需要获得的引导问题节点图涉及10个引导问题节点,且分别为节点1、节点2、节点3、节点4、节点5、节点6、节点7、节点8、节点9以及节点10;假设本公开获取到的节点链集合(即集合a)包括七个引导问题节点链,分别为:

节点1-->节点2-->节点4-->节点5;

节点1-->节点2-->节点4-->节点6-->节点7-->节点9;

节点1-->节点3-->节点6-->节点7-->节点9;

节点1-->节点3-->节点6-->节点7-->节点8-->节点9;

节点1-->节点2-->节点4-->节点8-->节点10;

节点1-->节点2-->节点4-->节点6-->节点7-->节点8-->节点10;

节点1-->节点3-->节点6-->节点7-->节点8-->节点10;

由于上述七个引导问题节点链包括三个末端节点,因此,本公开可以将集合a划分为三个子集,这三个子集分别为:子集a5、子集a9以及子集a10。其中的子集a5包括1个引导问题节点链,即节点1-->节点2-->节点4-->节点5;其中的子集a9包括3个引导问题节点链,即节点1-->节点2-->节点4-->节点6-->节点7-->节点9、节点1-->节点3-->节点6-->节点7-->节点9、以及节点1-->节点3-->节点6-->节点7-->节点8-->节点9;其中的子集a10包括3个引导问题节点链,即节点1-->节点2-->节点4-->节点8-->节点10、节点1-->节点2-->节点4-->节点6-->节点7-->节点8-->节点10、以及节点1-->节点3-->节点6-->节点7-->节点8-->节点10。在一个例子中,三个子集可以对应相同类型的合同,如对应同一个合同模板。在另一个例子中,三个子集可以对应不同类型的合同,如子集a5对应一种类型的合同,并对应一合同模板,子集a9对应另一种类型的合同,并对应另一合同模板,子集a10对应再一种类型的合同,并对应再一种合同模板。

由上述10个节点以及上述7条引导问题节点链所形成的有向无环图如图6所示。图6中的节点1可以认为是有向无环图的头端节点(即树的根节点),节点5、节点9和节点10均为有向无环图的末端节点(即树的叶子节点)。

通过对图6所示的有向无环图进行路径遍历,可以得到集合b,该集合b包括下述8条引导问题节点链:

节点1-->节点2-->节点4-->节点5;

节点1-->节点2-->节点4-->节点6-->节点7-->节点9;

节点1-->节点2-->节点4-->节点8-->节点10;

节点1-->节点2-->节点4-->节点6-->节点7-->节点8-->节点10;

节点1-->节点2-->节点4-->节点6-->节点7-->节点8-->节点9;

节点1-->节点3-->节点6-->节点7-->节点9;

节点1-->节点3-->节点6-->节点7-->节点8-->节点9;

节点1-->节点3-->节点6-->节点7-->节点8-->节点10;

针对节点5这一末端节点,本公开可以计算集合b和子集a5的差值,形成集合a'5,集合a'5包括下述引导问题节点链:

节点1-->节点2-->节点4-->节点6-->节点7-->节点9;

节点1-->节点2-->节点4-->节点8-->节点10;

节点1-->节点2-->节点4-->节点6-->节点7-->节点8-->节点10;

节点1-->节点2-->节点4-->节点6-->节点7-->节点8-->节点9;

节点1-->节点3-->节点6-->节点7-->节点9;

节点1-->节点3-->节点6-->节点7-->节点8-->节点9;

节点1-->节点3-->节点6-->节点7-->节点8-->节点10;

如果本公开不对头端节点和末端节点进行节点后效性检测,则本公开首先对节点2进行节点后效性检测,之后,对节点4进行节点后效性检测。

节点2在集合a'5中的第一下游节点集合包括:节点4,节点2在子集a5中的第二下游节点集合包括:节点4;由于第一下游节点集合所包含的所有节点均属于第二下游节点集合,因此,节点2不为具有后效性的引导问题节点。

节点4在集合a'5中的所有下游节点形成的第一下游节点集合包括:节点6和节点8,节点4在子集a5中的所有下游节点形成的第二下游节点集合包括:节点5;由于节点6和节点8均不属于第二下游节点集合,因此,节点4为具有后效性的引导问题节点,本公开可以将节点4拆分为节点4和节点4’。节点4的下游节点为节点5,节点4’的下游节点为节点6和节点8。

针对节点9这一末端节点,本公开可以计算集合b和子集a9的差值,形成集合a'9,集合a'9包括下述引导问题节点链:

节点1-->节点2-->节点4-->节点5;

节点1-->节点2-->节点4-->节点8-->节点10;

节点1-->节点2-->节点4-->节点6-->节点7-->节点8-->节点10;

节点1-->节点2-->节点4-->节点6-->节点7-->节点8-->节点9;

节点1-->节点3-->节点6-->节点7-->节点8-->节点10;

如果本公开不对头端节点和末端节点进行节点后效性检测,则本公开首先对(节点2和节点3)进行节点后效性检测,之后,对(节点4和节点6)进行节点后效性检测,再后,对节点7进行节点后效性检测,最后,对节点8进行节点后效性检测。

节点2在集合a'9中的第一下游节点集合包括:节点4,节点2在子集a9中的第二下游节点集合包括:节点4;由于第一下游节点集合所包含的所有节点均属于第二下游节点集合,因此,节点2不为具有后效性的引导问题节点。

节点3在集合a'9中的第一下游节点集合包括:节点6,节点3在子集a9中的第二下游节点集合包括:节点6;由于第一下游节点集合所包含的所有节点均属于第二下游节点集合,因此,节点3不为具有后效性的引导问题节点。

节点4在集合a'9中的第一下游节点集合包括:节点5、节点6和节点8,节点4在子集a9中的第二下游节点集合包括:节点6;由于节点5和节点8均不属于第二下游节点集合,因此,节点4为具有后效性的引导问题节点,本公开可以将节点4拆分为节点4和节点4’。节点4的下游节点为节点5,节点4’的下游节点为节点6和节点8。

由于节点6和节点8均是节点4的下游节点,且节点7是节点6的下游节点,因此,在确定出节点4为具有后效性的引导问题节点之后,本公开可以不再对节点6、节点7和节点8进行节点后效性检测。

针对节点10这一末端节点,本公开可以计算集合b和子集合a10的差值,形成集合a'10,集合a'10包括下述引导问题节点链:

节点1-->节点2-->节点4-->节点5;

节点1-->节点2-->节点4-->节点6-->节点7-->节点9;

节点1-->节点2-->节点4-->节点6-->节点7-->节点8-->节点9;

节点1-->节点3-->节点6-->节点7-->节点9;

节点1-->节点3-->节点6-->节点7-->节点8-->节点9;

如果本公开不对头端节点和末端节点进行节点后效性检测,则本公开首先对(节点2和节点3)进行节点后效性检测,之后,对(节点4和节点6)进行节点后效性检测,最后,对(节点7和节点8)进行节点后效性检测。

节点2在集合a'10中的第一下游节点集合包括:节点4,节点2在子集a10中的第二下游节点集合包括:节点4;由于第一下游节点集合所包含的所有节点均属于第二下游节点集合,因此,节点2不为具有后效性的引导问题节点。

节点3在集合a'10中的第一下游节点集合包括:节点6,节点3在子集a10中的第二下游节点集合包括:节点6;由于第一下游节点集合所包含的所有节点均属于第二下游节点集合,因此,节点3不为具有后效性的引导问题节点。

节点4在集合a'10中的第一下游节点集合包括:节点5和节点6,节点4在子集a10中的第二下游节点集合包括:节点6和节点8;由于节点5不属于第二下游节点集合,因此,节点4为具有后效性的引导问题节点,本公开可以将节点4拆分为节点4和节点4’。节点4的下游节点为节点5,节点4’的下游节点为节点6和节点8。

由于节点6和节点8均是节点4的下游节点,且节点7是节点6的下游节点,因此,在确定出节点4为具有后效性的引导问题节点之后,本公开可以不再对节点6、节点7和节点8进行节点后效性检测。

然而,在将节点4拆分为两个节点之后,本公开可以继续对节点6、节点7和节点8进行节点后效性检测。

图7为本公开的用于生成合同的装置一个实施例的结构示意图。该实施例的用于生成合同的装置可用于实现本公开上述各用于生成合同的方法实施例。

图7所示的实施例的装置包括:确定模板和组合模块700、确定当前问题模块701、页面展示模块702、确定单元和位置模块703、更新当前合同模块704以及生成合同模块705。可选的,本公开的用于生成合同的装置还可以包括:用于设置引导问题节点图的装置,且该用于设置引导问题节点图的装置包括:形成节点链集合模块706、节点后效性检测模块707、节点拆分处理模块708以及设置函数模块709。

确定模板和组合模块700用于根据用户输入的用于选择合同类型的信息,确定待生成合同对应的合同模板以及问题组合,并将该合同模板作为当前合同。

确定当前问题模块701用于根据确定模板和组合模块700确定出的问题组合,确定当前问题。

页面展示模块702用于向用户提供同时包含有确定当前问题模块701确定出的当前问题和确定模板和组合模块700确定出的当前合同的页面。

确定单元和位置模块703用于根据用户输入的针对当前问题的答复信息,确定与当前问题的答复信息对应的合同内容单元以及合同模板中与合同内容单元关联的位置。

更新当前合同模块704用于根据确定单元和位置模块703确定出的合同内容单元以及位置更新当前合同。

在一个例子中,更新当前合同模块704可以根据确定单元和位置模块703确定出的位置,将确定单元和位置模块703确定出的合同内容单元添加在当前合同中,并将合同内容单元的显示格式信息设置为预设突出显示格式信息,以使合同内容单元在页面中突出显示。

在一个例子中,更新当前合同模块704可以检测当前合同包含的所有合同内容单元中是否存在与答复信息对应的合同内容单元的抵触合同内容单元,若存在抵触合同内容单元,则更新当前合同模块704可以删除当前合同中的抵触合同内容单元。例如,更新当前合同模块704可以将抵触合同内容单元的显示格式信息设置为预设删除标记显示格式信息,以使抵触合同内容单元以删除标记的形式显示在页面中。

生成合同模块705用于若根据确定模板和组合模块700确定出的问题组合,确定出存在与当前问题的答复信息关联的下一个问题,则将下一个问题作为当前问题,并触发页面展示模块702执行向用户提供同时包含有当前问题和当前合同的页面的操作;若根据问题组合,确定出不存在与当前问题的答复信息关联的下一个问题,则生成合同模块705可以根据当前合同,获得为用户生成的合同,并向用户提供包含有合同的页面。例如,生成合同模块705向用户提供包含有上述合同,且合同的内容可编辑的编辑页面。

在一个例子中,生成合同模块705可以根据用户基于编辑页面执行的合同内容编辑操作,更新合同。

在一个可选示例中,本公开的问题组合包括:引导问题节点图,该引导问题节点图包括:多个引导问题节点,多个引导问题节点均设置有用于确定下游路径的函数,且上述多个引导问题节点包括:对具有后效性的引导问题节点进行节点拆分处理后,获得的拆分节点。在一个例子中,确定当前问题模块701进一步用于将引导问题节点图中的头端节点所对应的引导问题,作为当前问题。

形成节点链集合模块706用于获取用于生成合同的多个引导问题节点链,形成节点链集合。

在一个例子中,形成节点链集合模块706可以获取用于根据同一合同模板生成同一类型的合同的多个引导问题节点链,形成节点链集合。

在另一个例子中,形成节点链集合模块706可以获取用于根据不同合同模板生成不同类型的合同的多个引导问题节点链,形成节点链集合。

节点后效性检测模块707用于对形成节点链集合模块706获取到的节点链集合所包含的引导问题节点进行节点后效性检测,获得具有后效性的引导问题节点。可选的,节点后效性检测模块707可以包括:第一子模块7071、第二子模块7072以及第三子模块7073。其中的第一子模块7071用于根据所述节点链集合中的各引导问题节点链所包含的所有引导问题节点以及所有引导问题节点间的跳转关系,生成一有向无环图。其中的第二子模块7072用于获取所述有向无环图所包含的节点路径,获得路径集合。例如,第二子模块7072通过对所述有向无环图进行路径遍历,获得所述有向无环图所包含的所有节点路径,形成路径集合。其中的第三子模块7073用于根据所述路径集合,对所述节点链集合所包含的引导问题节点进行节点后效性检测,获得具有后效性的引导问题节点。例如,针对任一末端节点,第三子模块7073可以根据所述路径集合,基于广度优先搜索的方式,对所述节点链集合中的基于该末端节点的各引导问题节点链中的引导问题节点,依次进行节点后效性检测,获得基于该末端节点的具有后效性的引导问题节点。

在一个例子中,第三子模块7073可以包括第一单元、第二单元、第三单元和第四单元。其中的第一单元用于获取所述路径集合与所述节点链集合中的基于该末端节点的各引导问题节点链的差异。其中的第二单元用于基于广度优先搜索的方式,将所述节点链集合中的基于该末端节点的各引导问题节点链中的一引导问题节点作为待检测节点。其中的第三单元用于获取所述待检测节点在所述差异中的第一下游节点集合,并获取所述待检测节点在所述基于该末端节点的各引导问题节点链中的第二下游节点集合。其中的第四单元用于在确定出所述第一下游节点集合不属于所述第二下游节点集合时,将所述待检测节点作为具有后效性的引导问题节点。

节点拆分处理模块708用于对节点后效性检测模块707获得的具有后效性的引导问题节点进行节点拆分处理。在一个例子中,针对任一具有后效性的引导问题节点,节点拆分处理模块708形成该具有后效性的引导问题节点的拆分节点,并将所述节点链集合中的包含该具有后效性的引导问题节点的部分引导问题链中的该具有后效性的引导问题节点更新为所述拆分节点。

设置函数模块709用于为包含节点拆分处理后的引导问题节点在内的多个引导问题节点分别设置用于确定下游路径的函数,获得用于生成合同的引导问题节点图。在一个例子中,针对任一引导问题节点,设置函数模块709用于将该引导问题节点所对应的题目的各选项作为自变量,并将该引导问题节点的所有下游节点作为因变量,为该引导问题节点设置用于确定下游路径的函数。

另外,本公开实施例还提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现本公开上述任一实施例所述的用于生成合同的方法。

另外,本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现本公开上述任一实施例所述的用于生成合同的方法。

图8为本公开电子设备一个应用实施例的结构示意图。下面,参考图8来描述根据本公开实施例的电子设备。该电子设备可以是第一设备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。

如图8所示,电子设备包括一个或多个处理器和存储器。

处理器可以是中央处理单元(cpu)或具有数据处理能力和/或指令执行能力的其他形式的处理单元,且可以控制电子设备中的其他组件以执行期望的功能。

存储器可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器可以运行所述程序指令,以实现上文所述的本公开的各个实施例的用于生成合同的方法以及/或者其他期望的功能。

在一个示例中,电子设备还可以包括:输入装置和输出装置,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。此外,该输入设备还可以包括例如键盘、鼠标等等。该输出装置可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出设备可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。当然,为了简化,图8中仅示出了该电子设备中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据应用情况,电子设备还可以包括任何其他适当的组件。

除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的用于生成合同的方法中的步骤。所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的用于生成合同的方法中的步骤。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。

本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。

可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。

还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。

提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。

为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

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