本发明涉及文档处理。更具体地,本发明涉及用于替换文档中的敏感信息的系统和方法。
背景技术:
21世纪初的特点是机器学习在多个行业的兴起和日益普及。然而,为了让机器学习在业务世界中实现更高水平的渗透,机器学习必须能够处理使业务运行的上千个各种任务。为了能够做到这一点,机器学习系统将必须学习、改进、并最终执行这些任务。而且,为了能够正确地做到这一点,机器学习系统将需要访问大量的数据。然后,这些大量的数据可以用来适当地训练这种机器学习系统,以实施各种业务过程。
应该清楚的是,如此大量的数据是可用的。即使在业务中越来越多地使用自动化的情况下,业务世界仍然以纸张及其表示为中心。例如,业务仍然是利用信函(在纸上)、利用发票(印在纸上)和利用收据(印在纸上)进行的。尽管无纸社会一直备受吹捧,但事实仍然是纸张仍被广泛使用,并且即使正在尝试逐步淘汰纸张,纸张上的数据形式也不太可能很快改变。作为这方面的示例,甚至无纸发票和收据仍然看起来也与被打印在纸上一样。
此类纸质记录、发票和文档可以用于训练机器学习系统来执行此类业务过程。然而,这条道路充满了源自信息技术革命的另一主要担忧的问题:隐私。现实世界的文件(诸如发票、信用卡收据、医疗报告等)全部具有人们不想让其他人获得的信息。为此,因此需要能够保存数据和用户的隐私同时仍然允许真实世界文档用于机器学习系统的训练数据集的系统和方法。
技术实现要素:
本发明提供了与文档的图像中的敏感数据的替换或移除相关的系统和方法。在执行模块处接收具有敏感数据的文档的初始图像,并基于执行模块的训练进行改变。这些改变包括标识、描绘、替换或有效地从文档的图像中移除敏感数据。然后,所得到的经净化的图像将被发送给用户,以便对改变进行验证。来自用户的反馈被用于进一步训练执行模块,以在对文档的其他初始图像应用改变时改进其行为。为了训练执行模块,使用具有由用户手动标记的敏感数据的文档图像的训练数据集。因此,执行模块学习以标识敏感数据,并且该模块使用其子模块来利用合适的替换数据替换这个敏感数据。来自用户的反馈致力于改善来自执行模块的所得到的经净化的图像。
在第一方面,本发明提供了一种用于替换文档的图像中的敏感数据的方法,该方法包括:
a)接收所述文档的初始图像;
b)使所述初始图像通过执行模块,该执行模块对所述初始图像应用至少一个改变,以产生所述文档的经净化的图像;
c)将所述经净化的图像发送给用户以便进行验证;
d)接收关于所述经净化的图像的用户反馈;
e)使用所述用户反馈来训练所述执行模块;
其中所述至少一个改变包括有效移除或替换所述图像中的所述敏感数据。
在第二方面,本发明提供了一种用于替换文档中敏感数据的方法,该方法包括:
a)接收所述文档的初始版本;
b)使所述初始版本通过执行模块,该执行模块对所述初始版本应用至少一个改变,以产生所述文档的经净化的版本;
c)将所述经净化的版本发送给用户以便进行验证;
d)接收关于所述经净化的版本的用户反馈;
e)使用所述用户反馈来训练所述执行模块;
其中所述至少一个改变包括有效移除或替换所述文档中的所述敏感数据。
在另外的方面,本发明提供了一种用于在替换文档中的敏感数据中使用的系统,该系统包括:
-执行模块,其用于接收所述文档的初始版本,并用于对所述初始版本应用至少一个改变,以产生所述文档的经净化的版本;
-验证模块,用于将所述经净化的版本发送给用户以便进行验证,并且用于从所述用户接收反馈;
其中
-所述反馈用于进一步训练所述执行模块;以及
-所述至少一个改变包括有效移除或替换所述文档中的所述敏感数据。
附图说明
现在将参照以下附图描述本发明的实施例,在附图中不同附图中相同的附图标记指示相同的元件,并且在附图中:
图1是根据本发明的一个方面的系统的框图;
图2是图1中示出的系统的变型的框图;
图3是图1中示出的系统的又一变型的框图;
图4是文档的图像,其中敏感数据的集群(cluster)由边界框(boundingbox)描绘;
图5是子模块的框图,该子模块可以用在如图1中的系统中使用的执行模块中;
图6是图1中示出的系统的一部分中的子模块的框图;以及
图7是根据本发明的另一方面的方法的流程图。
具体实施方式
在一个方面,本发明接收包含敏感数据的一个或多个文档的图像。根据本发明的这一方面的系统被训练成定位、截断、并且然后利用替换数据替换一个或多个文档中的敏感数据。系统通过让用户标识一个或多个文档上的敏感数据(即“标记”敏感数据)来训练。系统通过观察所标记的数据学习文档中的哪些数据将被标记、截断(例如,通过使用边界框),然后被替换。替换数据可以是随机生成的、可以在可接受的(即,非敏感数据)数据的数据库的帮助下生成、或者可以使得敏感数据被有效地模糊/从一个或多个文档的图像中移除。
参考图1,示出了根据本发明的一个方面的系统的框图。在这个实施方式中,系统被配置为接受、标记和验证未标记的数据集图像。系统10具有带有敏感数据的文档的图像20、执行模块30以及相同文档的所得到的经净化的图像40。文档的初始图像20由执行模块30接收,并且图像中的敏感数据由执行模块30标记和/或利用替换数据进行替换。所得到的经净化的图像40然后被发送给用户50,以便通过验证模块进行验证。用户50确认或编辑由执行模块30应用于初始图像20的改变。用户反馈60然后可以用于在对初始图像应用更好的改变时进一步训练执行模块30。当然,在必要的情况下和在必要时,一个或多个ocr(opticalcharacterrecognition,光学字符识别)过程可以应用于图像或图像的部分,以确定图像内或图像的那些部分内的字符和/或文本。
参照图2,在本发明的变型中,来自用户的反馈60被存储在存储模块70中,并在随后训练执行模块30的行为中使用。替代性地,在图3中示出的另一变型中,反馈60被发送到连续学习模块80,该连续学习模块基于反馈60调节执行模块30的行为。在图3中,连续学习模块80连续学习和调节执行模块30如何和将什么应用于初始图像20的行为。
如可以想象的那样,一旦用户50批准或验证应用于初始图像20的改变以产生经净化的图像40,这个经净化的图像40可以用于训练数据集。然而,如果用户50不批准和/或编辑由执行模块应用的改变,则这个不批准和/或编辑被用于进一步训练执行模块30。应当清楚的是,执行模块30的进一步训练可以是连续的(如图3中示出的配置中那样),或者其可以在不同的时间执行,其中所收集的数据(即用户反馈)被作为用于执行模块的训练数据应用(如图2中的配置中那样)。
应该清楚的是,虽然以上描述涉及初始图像和经净化的图像,但是在一个方面,两者之间的主要区别是从初始图像中移除和/或替换敏感数据和/或敏感文本以产生经净化的图像。还应当注意的是,虽然该描述涉及围绕文本标记和/或放置边界框,但是敏感数据可以包括非文本数据。在另一变型中,经净化的图像可以仅将敏感数据标记/放置在边界框中,以供用户验证。已经被标记的敏感数据的这些集群可以在随后的步骤中被替换或有效地移除。
在一个实施方式中,执行模块30包括卷积神经网络(convolutionalneuralnetwork,cnn),该卷积神经网络已经使用文档的图像进行训练,其中敏感数据已经被人工标识和/或利用被编译成训练数据集的图像进行了标记。这些训练数据集为cnn提供了期望的最终结果(例如,具有用边界框描绘的敏感数据的图像)的示例。一旦cnn已经被训练为识别敏感数据,执行模块30的部分然后可以利用合适的替换数据替换敏感数据。
在图4中示出的一个示例中,系统的任务是识别特定的数据类型,并在索赔表(claimform)中具有用户输入数据(即敏感数据)的区域周围放置边界框。如从图4中可以看出那样,带有边界框的区域包括包含个人信息(例如,姓名、地址、出生数据、电子邮件地址和保单号)的区段。一旦数据的这些集群已经用边界框界定,这些边界框内的数据可以使用合适的替换数据来替换/移除。应该清楚的是,一旦数据已经被移除/替换,所得到的图像将由用户验证。将向用户呈现经净化的图像,并且用户只需确认敏感数据已被替换或被有效移除。
应该清楚的是,一旦执行模块已经被训练,包含敏感数据的图像可以被执行模块接收,并且对每个图像的期望改变可以被执行模块应用(也就是说,敏感数据可以被边界框限制,并且边界框内的数据可以被合适的替换数据替换)。一旦应用了这个改变,所得到的经净化的图像将被发送给用户以便进行验证。一旦被验证,经净化的图像可以被存储并用作训练数据集的一部分。然而,如果经净化的图像不合适(例如,边界框不包含所有敏感数据,或者敏感数据中的至少一些没有被适当地移除或替换,或者敏感数据没有被适当地移除/替换),则用户可以通过截断未被替换的或剩余的敏感数据来编辑改变。因此,用户可以例如添加边界框或者改变或添加已经应用于图像的边界框的范围,使得需要由边界框界定的敏感数据在框内。
一旦用户编辑了应用于被标记的数据集图像的改变,则经编辑的数据集图像被用作反馈。如上所述,这个反馈可以用作新的训练数据集的一部分,以便在进一步训练执行模块中使用。
还应该清楚的是,本发明的各个方面包含不同的变型。作为示例,虽然上述附图和描述描述了“边界框”,但是用于描绘图像中的特征的“框”可以不是框形的或矩形/正方形的。其他形状和描绘方法(例如,点、线、多边形)也是可能的,并且被本发明覆盖。同样,这种框的其他配置和系统的其他配置也被本发明覆盖。
在本发明的一个变型中,用于训练执行模块的反馈可以采取多种形式。在第一变型中,所有经净化和验证的图像用于训练执行模块。在这种变型中,具有正确应用的改变的所有图像(即,其中敏感数据已经被正确识别和移除/替换的图像)被用作反馈。因此,如果执行模块正确地将期望的改变应用于原始或初始图像,则所得到的图像被用作反馈。同样,如果执行模块不正确地应用改变(例如,敏感数据没有被完全移除或替换,或者替换数据不合适),则正确应用改变的用户校正的或用户编辑的图像(即,敏感数据由边界框正确描绘)也被用作反馈。在这个变型中,正确应用的改变将作为执行模块的正确动作的加强操作,而用户校正的图像将作为执行模块的不正确动作的校正操作。
在对以上的另一变型中,只有用户校正的图像被用作反馈。对于这种变型,执行模块已经正确应用了改变的经标记的图像将被传递以用作训练数据集图像,并且不会形成反馈的一部分。这意味着只有用户编辑的或用户校正的标记图像才包括在反馈中。
在系统的另外的变型中,用户验证可以采取仅批准或不批准来自执行模块的经净化的图像的形式。在这种变型中,不批准的数据集图像(即,其中不正确地应用了改变的图像)将被丢弃。相反,具有被替换/移除的敏感数据的经批准的图像可以被用作反馈的一部分,并且可以被用作用于执行模块的新训练集的一部分。这种变型将大大加快验证过程,因为将不需要用户编辑/校正对所得到的图像的不正确应用的改变。
应该清楚的是,执行模块的任务的部分是在各种类型的敏感数据之间进行区分。这对于其中敏感数据被合适的替换数据替换的实施方式特别相关。例如,名称数据应该被合适的名称数据代替,而地址数据应该被地址数据代替。利用地址数据代替姓名数据将是不合适的,反之亦然。在本发明的一个变型中,用户指定要在原始图像中被标识/标记的机密信息的类型。
为了清楚起见,图5示出了执行模块内的块或阶段。如可以看出那样,在图5中,执行模块包括集群确定子模块130、位置确定子模块140、数据类型确定子模块150、替换数据生成器子模块160和数据替换子模块170。集群确定子模块130将基于系统已经从手动标记的数据训练集中学习的内容来确定图像中的哪些区域包含敏感数据。然后,由位置确定子模块140确定这个集群的(并且现在由边界框界定的)位置。然后,需要在数据的类型(例如,数据是否是电话号码、姓名、地址等)方面对该集群内的数据(即,边界框内的数据)进行确定。这通过数据类型确定子模块150来完成。这个子模块的结果然后被用于使用替换数据生成器子模块160生成合适的替换数据。利用所生成的替换数据,然后使用数据替换子模块170将这个替换数据插入到图像中。
为了清楚起见,由子模块130确定的集群将对应于上面描绘和参考的边界框。因此,系统将(通过由用户手动标记和描绘的训练数据集)学习哪些区域要定义为集群,以及因此哪些区域需要边界框。
一旦敏感数据已经由边界框描绘(在用户已经描绘了训练数据集中的特定数据之后,并且在系统已经至少使用这个数据集训练之后),敏感数据将需要被分类为不同类型的敏感数据。执行模块将因此确定边界块中的哪些数据包括敏感数据。由于初始处理阶段已经确定哪些数据类型在哪些边界块中,因此处理阶段仅寻找出相关的数据类型。因此,在一个实施方式中,确定名称数据(例如专有名称和公司名称)和地址数据(例如至少包含号和街道的数据)。然后,生成用于敏感数据中的每一个的合适的替换数据。这可以参考具有合适的名称和/或名称/地址元素的数据库来完成,然后可以使用该数据库来随机生成合适的替换数据。一旦为敏感数据的每个实例生成了替换数据,替换数据就以合适的方式插入到图像中,从而利用替换数据遮蔽和/或覆盖或模糊原始敏感数据。如上所述,系统可以基于来自用户的输入来学习要找到和/或替换哪些数据类型。这将确保希望仅替换文档图像中的敏感名称数据的用户不会也移除/替换具有地址的图像。
再次参考图5,初始处理阶段将包括集群确定子模块130和位置确定子模块140。处理阶段将包括数据类型确定子模块150、替换数据生成器子模块160和数据替换子模块170。
应该清楚的是,随机生成替换数据可以包括使用名称/地址元素的数据库,其中元素从数据库中随机选择并且然后被级联(concatenate)以生成替换数据。作为示例,可以通过首先从已知/常见名(例如,bill、william、jane、joe、tom、stacey等)的数据库中选择名来生成随机姓名。然后,访问已知/共同姓的数据库以随机选择共同/已知姓(例如,smith、kim、park、singh、fletcher、cooper等)。然后,这两个随机元素可以级联在一起以产生可以用于替换文档的图像中的名称数据的一个或多个实例的随机替换名称。对于地址,访问已知/常见街道名称的数据库以随机选择街道名称(例如,公园、1号、2号、主街(main)、墙街(wall)、河等)。然后访问具有公共街道名称扩展的另一数据库以找到随机的街道扩展(例如,街道、大道、广场、路、新月街(crescent)等)。然后,这些地址元素可以被级联以产生街道名称。对于街道号,合适的随机数生成器可以生成要与街道名称一起使用的街道号。随机城市名称也可以与用于生成地址的上述方法结合使用。其他随机生成的替换数据可以用来替换其他敏感数据。例如,可以使用随机生成的号来代替社会保险号码或社会安全号码的实例。关于公司身份,随机公司名称也可以通过从数据库中随机选择一个或多个公司名称元素,并且然后将这些元素级联以形成随机替换公司名称来生成。也可以随机生成电话号码,或者将已知的假号码插入到文档中。例如,人们可以随机生成区号,并将555交换机与随机生成的四位数一起使用,以产生已知的假号码,例如(212)555-4243。
当然,应该清楚的是,以上陈述的数据库的内容不必是假的或随机的数据。可能有人们期望将真实数据插入到文档中以代替该文档中最初存在的敏感数据的情况。对于这种情况,可以使用包含要插入到文档中的真实数据点的合适数据库。
作为上述内容的替代性方案,可以为地址或名称的每个实例使用特定的替换名称/地址,而不是为每个敏感数据段生成新的替换数据点。因此,作为这种替代性方案的示例,将利用特定的名称(诸如johndoe)替换名称的每个实例,而地址的每个实例将被特定的替换地址(诸如,742evergreenterrace,springfield)替换。特定的假电话号码也可以用来替换文档中的电话号码的所有实例。
为清楚起见,以下中的任何一个可以被视为文档中的敏感数据,并可以被如上所述的适当替换数据替换:名称、地址、电话号码、社会保险/社会安全号码、健康保险号码、车牌号码、公司名称、网站地址、电子邮件地址、车辆标识号码、ip地址、保险单号码、信用卡号码、身份证号码、出生日期、血型、银行账户数据和医疗处方数据。为了进一步清楚起见,术语“敏感数据”不仅可以包括文本数据,还可以包括图像数据、音频数据或用户、公司实体或组织可能不想让除了他或它自己之外的任何人获得的任何类型的数据。因此,术语“敏感数据”可以以上下文方式定义,使得在一个上下文中被认为是敏感数据的内容在另一上下文中可能不被认为是敏感数据。同样,“敏感数据”还可能涵括徽标、公司徽标或文档的图像中可能存在的任何其他图像。因此,如果徽标是敏感数据,则该标志可以被标记和/或被合适的替换数据替换。对于徽标,合适的替换数据可以包括通用徽标、通用图像、合适的生成图像和/或有效地阻止和/或从文档图像中移除敏感数据的块。
为了更清楚起见,在一些实施方式中,可以被认为是个人数据的任何数据可以被术语“敏感数据”所涵括。因此,应当明确的是,“个人数据”或“敏感数据”可以包括与已标识或可标识的自然人有关的任何信息,并且可标识的自然人是能够被直接或间接标识的人,特别是通过参考诸如姓名、身份证号码、位置数据、在线标识符等标识符或参考该自然人的身体、生理、遗传、精神、经济、文化或社会身份所特有的一个或多个因素。“敏感数据”还可以涵括与自然人的遗传性或获得性遗传特恶性有关的个人数据,这些数据给出了关于该自然人的生理或健康的独特信息,并且特别地通过来自所讨论的自然人的生物样本的分析产生。类似地,“敏感数据”也可以包括“生物测定数据”或通过与自然人的身体、生理或行为特性相关的特定技术处理产生的个人数据,其允许或确认这个自然人的唯一身份,诸如面部图像或指纹数据。“敏感数据”还可能包括与自然人的身体或精神健康有关的个人数据,包括提供保健服务,这些个人数据揭示了有关这个人的健康状况的信息。此外,“敏感数据”可以包括可能用于分析或标识或预测自然人工作中的表现、经济状况、健康、个人偏好、兴趣、可靠性、行为、位置或活动的数据。
在本发明的一个实施方式中,系统的输出是文档中各种数据集群的列表。每个集群的参数、内容、位置/方位以及集群的内容的参数都与每个集群相关联。因此,机器学习系统可以使用这个输出来确定期望的和/或相关的文档内容。
对于上面的实施方式,文档内的各种数据集群内的敏感数据可以在集群内并在数据被机器学习系统处理之前被替换。因此,本发明的系统将处理、确定和定位文档的图像内的敏感数据,并且在文档被将使用文档中的数据的机器学习系统处理之前,该系统将利用合适的替换数据替换这个敏感数据。因此,敏感数据不会形成用于训练机器学习系统的数据集的一部分。然而,应该清楚的是,即使敏感数据本身不形成用于训练的数据集的一部分,原始敏感数据的上下文或特性也被保留并形成训练数据集的一部分,尤其是在敏感数据被替换数据替换之后。敏感数据的特性(例如,敏感数据的放置、定位和性质)将形成训练数据集的一部分,但实际的敏感数据本身不会形成训练数据集的一部分。
在另一实施方式中,神经网络可以用于数据类型确定子模块。神经网络的任务可以是将各种集群分类为日期集群、地址集群或总金额集群。大于特定大小的集群(即,具有超过预定量的字符的集群)可以被丢弃,因为它们将构成主体集群,并且不是日期、地址或总金额集群。神经网络可以利用数据集来训练,该数据集包括不同的商业信函、发票、收据、采购订单、索赔表、工资单和其集群已经被分类(手动地或自动地)为日期、地址和总金额集群的其他商业类型的文档。通过使用这样的数据集,可以训练神经网络来确定商业文档中的哪个集群包含这些数据点(即地址、日期和总金额)。
在又一变型中,图1中系统的输出可以用作神经网络的适当输入,用于如上所述的数据类型确定。然后,神经网络可以确定哪个集群包含哪些数据,并且相应地,哪些数据将需要被处理和/或替换。
应该清楚的是,替换数据生成子模块160可以具有如图6所示的配置。从图6中,可以看出,子模块可以包括接收对替换数据的请求的聚集子模块190。这个请求将包括被请求的替换数据的类型(例如,地址、姓名、电话号码等)。基于这个请求,可以从数据库子模块200收集合适的替换数据元素,并且可以从随机数生成器子模块210生成合适的数字元素。各种替换数据元素然后被发送回聚集子模块190,该聚集子模块然后将各种元素组装成合适的替换数据点。这个生成的替换数据然后可以作为子模块160的输出发送出去。
虽然本发明可以适用于与ocr(光学字符识别)方法和技术一起使用,但是应该清楚的是,本发明也可以适用于手写文本和/或手写数据。因此,手写文本可以被识别,并且然后被适当地标记并被适当的替换数据替换。这种替换数据也可以被处理或生成,使得被插入到图像中的替换数据看起来像或具有手写文本的特性。当然,根据需要或期望,替换数据也可以是键入的文本或其他合适类型的文本数据。
在又一替代性方案中,本发明可以被实施为直接对文本文档操作/使用文本文档,而不是对文档的图像操作/使用文档的图像。可以对文本文档进行处理,以定位和标识文档中的敏感数据。在适用的情况下,敏感数据的集群可以被标识,由边界框界定,并且然后根据需要被替换。如应该清楚的那样,在文本文档上使用的过程类似于在文档的图像上使用的过程,除了不需要对文本文档应用ocr过程,因为文本不再需要被识别为文本。将收到并处理文本文件的初始版本。一旦处理完成,将生成文本文档的经净化的版本,其中经净化的版本与初始版本相同,除了初始版本中的敏感数据将在文本文档的经净化的版本中被替换或移除。当然,对于对文档的图像工作的实施方式,文档的初始版本和文档的经净化的版本将再次彼此不同,因为在经净化的版本中敏感数据将被移除或替换。
本发明的另一替代性实施方式可以使用数据生成子模块,该数据生成子模块在不参考数据库的情况下生成数据。合适的名称/数据生成子模块可以用于这样的实施方式。例如,可以使用具有生成性对抗网络的子模块,该生成性对抗网络生成合适的名称、地址和其他数据。
作为替代性方案,虽然上述讨论详细说明了利用具有与敏感数据相同类型的替换数据来替换敏感数据,但是敏感数据也可以简单地从文档的图像移除。对于这种替代性方案,敏感数据可以被纯色的图像块遮蔽,以有效地从文档中删除敏感数据。对于这种替代性方案,替换数据将简单地是有效去除和/或遮蔽敏感数据的数字图像块。
作为另外的替代性方案,手动“标记”或描绘图像中的数据的用户也可以基于每种类型“标记”这个数据。这允许系统学习在图像中要识别什么数据以及这个数据的类型。因此,当要生成替换数据时,系统可以生成正确类型的替换数据。因此,在经净化的图像中,名称不会被利用所生成的地址替换。
参考图7,示出了详细根据本发明的另一方面的方法中的步骤的流程图。该方法开始于步骤300,即接收具有敏感数据的文档的初始图像的步骤。该初始图像然后被发送到执行模块,在该执行模块中,一个或多个改变被应用于该图像(步骤310)。如上所述,这种改变是基于执行模块已经被利用其训练的数据集。改变可能是替换或移除文档的图像中的各种敏感数据。一旦这个改变被应用于初始图像,所得到的经净化的图像被发送给用户(步骤320)以便进行验证。步骤330是接收用户的关于对初始图像应用改变的反馈的步骤。如上所述,反馈可以包括用户对所得到的经净化的图像的验证(即批准),或者它可以包括用户对所应用的改变的编辑/校正。然后,这个反馈可以用于进一步训练执行模块(步骤340)。
应该清楚的是,本发明的各个方面可以作为整个软件系统中的软件模块来实施。由此,本发明可以采取计算机可执行指令的形式,这些指令在被执行时实施具有预定义功能的各种软件模块。
附加地,应该清楚的是,除非另有说明,本文中对“图像”或“多个图像”的任何引用是指包括像素或图片单元的数字图像或多个数字图像。同样地,对“音频文件”或对“多个音频文件”的任何引用是指数字音频文件,除非另有说明。“视频”、“视频文件”、“数据对象”、“数据文件”和所有其他此类术语应理解为是指数字文件和/或数据对象,除非另有说明。
本发明的实施例可以由以方法步骤的方式编程的计算机处理器或类似设备来执行,或者可以由设有用于执行这些步骤的装置的电子系统来执行。类似地,诸如计算机软盘、cd-rom、随机存取存储器(randomaccessmemory,ram)、只读存储器(readonlymemory,rom)或本领域已知的类似计算机软件存储介质的电子存储器装饰可以被编程来执行这些方法步骤。同样,代表这些方法步骤的电子信号也可以通过通信网络传输。
本发明的实施例可以以任何常规计算机编程语言来实施。例如,优选实施例可以以过程编程语言(例如,“c”或“go”)或面向对象语言(例如,“c ”、“java”、“php”、“python”或“c#”)来实施。本发明的替代性实施例可以被实施为预编程的硬件元件、其他相关组件或者硬件和软件组件的组合。
实施例可以被实施为用于与计算机系统一起使用的计算机程序产品。这种实施方式可以包括一系列计算机指令,这些指令或者固定在有形介质(诸如计算机可读介质(例如,磁盘、cd-rom、rom或固定盘)上,或者可通过调制解调器或其他接口设备(诸如通过介质连接到网络的通信适配器)传输到计算机系统。介质可以是有形介质(例如,光或电通信线路)或者利用无线技术(例如,微波、红外或其他传输技术)实施的介质。该系列计算机指令实现了本文先前描述的全部或部分功能。本领域技术人员应该理解,这种计算机指令可以以用于与许多计算机体系结构或操作系统一起使用的多种编程语言编写。另外,这样的指令可以存储在任何存储器设备(诸如半导体、磁、光或其他存储器设备)中,并且可以使用任何通信技术(诸如光、红外、微波或其他传输技术)来传输。预期的是,这种计算机程序产品可以作为带有附带的印刷或电子文档(例如,收缩包装软件)的可移动介质来分发、预加载有计算机系统(例如,在系统rom或固定盘上)、或者通过网络(例如,因特网或万维网)从服务器分发。当然,本发明的一些实施例可以被实施为软件(例如,计算机程序产品)和硬件两者的组合。本发明的其他实施例可以被实施为完全硬件或者完全软件(例如,计算机程序产品)。
理解本发明的人现在可以设想以上内容的替代性结构和实施例或变型,所有这些旨在落在所附权利要求所限定的本发明的范围内。