当前位置: 首页 > 专利查询>微软公司专利>正文

用于串变换的归纳合成的排序制造技术

技术编号:11659538 阅读:101 留言:0更新日期:2015-06-29 03:53
提供了使用统计和机器学习技术来学习想要的排序函数以供在用于串变换的领域的归纳程序合成中使用的各排序技术实施例。这一般涉及从给定的训练任务集合(每个包括多个输入-输出示例)自动创建正示例和负示例的训练数据集。从训练数据集学习给具有领域专用语言的程序中的表达式指派似然度测量的排序函数。该排序函数随后被用来从针对新任务的极少量的输入-输出示例来计算已学程序的似然度。

【技术实现步骤摘要】
【国外来华专利技术】用于串变换的归纳合成的排序背景世界范围内的数百万人使用电子表格等来存储和操纵数据。这些数据操纵场景通常包括将大量的输入信息从一种格式转换为另一种格式以产生所需输出。通常,手动地或使用小的、通常是一次性的计算机程序来实现这些任务,这些计算机程序由终端用户创建或由程序员为终端用户来创建。另一种办法涉及采用计算机来合成程序以实现所需数据变换的尝试。存在合成程序的两种主要的办法:演绎和归纳。在演绎程序合成中,完整的高级规范被转换成对应的低级程序,其中使用一些公理来验证转换中的每个步骤。这一办法需要用户提供完整的规范,这在一些情况下可能潜在地比编写写程序本身更加困难。这导致归纳合成办法近来变得更加流行。在归纳程序合成办法中,从不完整的规范(诸如包括输入-输出示例集合的规范)来合成程序。它近来被用于合成从低级指针操纵代码到电子表格宏的各种领域内的程序。由于归纳程序合成办法中的规范是不完整的且经常是不清楚的,存在具有符合给定规范的底层领域专用语言的许多不同程序。为了消除不清楚以及收敛成想要的程序,用户需要通过提供附加的输入-输出示例来加强规范。示例的数目与领域专用语言的表达性直接成比例,即该语言表达的越多,收敛成想要的程序所需的输入-输出示例就越多。领域专用语言需要是可表达的以表达用户想要的最多任务,但同时不能预期用户提供数量繁重的输入-输出示例以学习想要的程序。
技术实现思路
本文中所描述的排序技术实施例一般涉及通过使用用户仅提供少量输入-输出示例的归纳程序合成过程来生成的排序候选变换程序。在一个实施例中,计算机被用于排序候选变换程序以建立对一个或多个变换程序的经排序组,每个变换程序从用户输入的每个输入串产生具有用户想要形式的输出串,符合用户提供的一个或多个输入-输出示例中的每一个。更具体而言,输入候选变换程序的集合。要注意,每个变换程序由具有领域专用语言的程序表达式组成,该程序表达式进一步由子表达式组成。从用于在候选变换程序中发现的子表达式的离线训练数据建立排序机制。这些排序机制中的每一个产生似然度分数,该似然度分数指示子表达式是能够从用户输入的每个输入串产生具有用户想要形式的输出串的程序的一部分的似然度,其符合用户提供的输入-输出示例中的每一个。对于已经为其建立了排序机制的每个候选变换程序的每个子表达式,使用为该子表达式建立的排序机制来建立似然度分数。按从较小子表达式到较大子表达式的次序计算似然度分数。随后从为该候选变换程序建立的子表达式似然度分数计算针对每个候选变换程序的总排序分数。在一个实施例中,使用与候选变换程序中的每一个相关联的总排序来选择规定数目的排序在前的候选变换程序。这些排序在前的程序随后被指定为上述的对一个或多个变换程序的经排序组。要注意在一个实现中,该规定数目为1,且因此仅选择和指定排序最高的候选变换程序。应该注意,提供本
技术实现思路
是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本
技术实现思路
不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。附图简述参考以下描述、所附权利要求书以及附图,将更好地理解本专利技术的具体特征、方面和优点,附图中:图1是大体概述用于排序候选变换程序的过程的一个实施例的流程图。图2是大体概述图1的过程中涉及为原子表达式建立排序机制部分的实现的流程图。图3是大体概述图2的过程中涉及从任务的训练集合产生训练数据部分的实现的流程图。图4是大体概述图3的过程中涉及从正训练子表达式和负训练子表达式集合中的每个子串表达式产生训练数据部分的实现的流程图。图5是大体概述图1的过程中涉及使用排序机制为候选变换程序的每个子表达式建立似然度分数部分的实现的流程图,其中已经为每个子表达式建立了该排序机制。图6是大体概述用于使用最高排序的候选变换程序执行串变换的过程的一个实施例的流程图。图7是描绘具有输入栏和输出栏的电子表格的表,其中所述输入栏包含标识一个人姓氏的输入串,所述输出栏具有含对应输入串名连同置于该对应输入串名之前的串“先生(Mr.)”的一个示例输出串。图8是描绘具有输入栏和输出栏的电子表格的表,其中所述输入栏包含包括城市名称的地址,所述输出栏具有含对应输入串中与城市名称相对应的一部分的一个示例输出串。图9是描绘构成用于实现本文中所述的各排序技术实施例的示例系统的通用计算设备的图。详细描述在以下对排序技术的各实施例的描述中,对附图进行了参考,附图构成了各实施例的一部分且在其中作为说明示出了可在其中实践该技术的具体实施例。可以理解,可以使用其他实施例并且可以做出结构改变而不背离本专利技术技术的范围。还应注意,出于清楚的目的,在描述此处所描述的排序技术实施例中将依靠具体的术语,但并不意味着这些实施例被限制于所选择的具体术语。此外,应当理解的是,每个具体术语包括以宽泛地类似方式工作以实现类似目的的所有其技术等同物。此处提及“一个实施例”、或“另一实施”、或“示例性实施例”、或“替代实施例”、或“一个实施方式”、或“另一实施方式”、或“示例性实施方式”、或“替代实施方式”意味着结合实施例或实施方式描述的特定特征、特定结构或特定特性可被包括在排序技术的至少一个实施例中。在本说明书中各个地方出现短语“在一个实施例中”、“在另一实施例中”、“在示例性实施例中”、“在替代实施例中”、“在一个实施方式中”、“在另一实施方式中”、“在示例性实施方式中”、“在替代实施方式中”不一定全都指同一实施例或实施方式,也不是与其他实施例/实施方式互斥的单独或替换实施例/实施方式。此外,表示排序技术的一个或多个实施例或实现的过程流的次序既不固有地指示任何特定次序,也不暗示对排序技术的任何限制。还需要注意,本文中所用的术语“输入-输出示例”指形成输入的字符串的元组和形成输出的字符串。输入表示用户希望变换的输入的示例,而输出串表示用户希望从输入产生的输出的示例。1.0针对归纳程序合成的排序技术本文中所述的各排序技术实施例使用统计和机器学习技术来学习用于在归纳程序合成中使用的想要的排序函数。一般而言,从给定的输入-输出示例集合自动创建正示例和负示例的训练数据集。从训练数据集学习排序函数,该排序函数给具有领域专用语言的程序中的表达式指派似然度测量。这些排序函数随后被用来从极少量的输入-输出示例来计算已学程序的似然度。1.1串变换语言Ls在这一部分中,描述了本文中所述的用于实现各排序技术实施例的串变换语言。该串变换语言Ls的句法如下:跟踪(trace)(或连接(concatenate))表达式e指示对原子表达式f1,..,fn的连接。原子表达式f可以或者指示常量串表达式ConstStr(s)或者指示子串表达式SubStr(vi,p1,p2)。常量串表达式ConstStr(s)指示产生常量串“s”的表达式。子串表达式SubStr(vi,p1,p2)表示在vi列中呈现的输入串的子串,所述vi列左边和右边的位置分别由位置对表达式p1和p2表示。如果整数常量为正(或为负),则位置表达式CPos(k)指示给定串中从左侧(或右侧)起的第k个索引。位置表达式Pos(r1,r2,c)指示在输入串中的位置,该位置左侧和右侧分别匹配正则表达式r1和r2,并且该位置是在该串中正则表达式的第c个这样本文档来自技高网
...
用于串变换的归纳合成的排序

【技术保护点】
一种计算机实现的用于对候选变换程序进行排序以建立一个或多个变换程序的经排序组的过程,每个所述候选变换程序包括含子表达式的程序表达式,每个所述变换程序从用户输入的输入串产生具有用户想要形式的输出串,符合用户提供的一个或多个输入‑输出示例中的每一个,所述过程包括:使用计算机来执行以下过程动作:输入从用户提供的一个或多个输入‑输出示例归纳地合成的候选变换程序的集合,每个所述候选变换程序从用户提供的每个输入示例产生具有用户提供的每个输出示例所展现的形式的输出串;针对每个候选变换程序,对于已经为其建立了排序机制的按照从较小到较大次序的候选变换程序的每个子表达式,使用为所述子表达式建立的排序机制来建立似然度分数,以及从为所述候选变换程序建立的子表达式似然度分数计算针对所述候选变换程序的总排序分数。

【技术特征摘要】
【国外来华专利技术】2012.10.17 US 13/653,5811.一种计算机实现的用于对候选变换程序进行排序以建立一个或多个变换程序的经排序组的方法,每个所述候选变换程序包括含子表达式的程序表达式,每个所述变换程序从用户输入的输入串产生具有用户想要形式的输出串,符合用户提供的一个或多个输入-输出示例中的每一个,所述方法包括:使用计算机来执行以下方法动作:输入从用户提供的一个或多个输入-输出示例归纳地合成的候选变换程序的集合,每个所述候选变换程序从用户提供的每个输入示例产生具有用户提供的每个输出示例所展现的形式的输出串;针对每个候选变换程序,对于已经为其建立了排序机制的按照从较小到较大次序的候选变换程序的每个子表达式,使用为所述子表达式建立的排序机制来建立似然度分数,以及从为所述候选变换程序建立的子表达式似然度分数计算针对所述候选变换程序的总排序分数。2.如权利要求1所述的方法,其特征在于,子表达式或者是正则表达式,或者是位置表达式,或者是原子表达式,或者是连接表达式,并且建立所述排序机制以供按所述次序对所述正则表达式、位置表达式、原子表达式和连接表达式中的每一个进行排序。3.如权利要求2所述的方法,其特征在于,原子表达式或者是常量串表达式或者是子串表达式,并且建立用于原子表达式的排序机制的方法动作包括动作:标识所述原子表达式是常量串表达式还是子串表达式;输入任务的训练集合,其中每个任务包括多个输入-输出示例;从所述训练集合生成训练数据;以及训练机器学习分类器以向每个子串表达式和每个常量串表达式指派似然度分数。4.如权利要求3所述的方法,其特征在于,向每个子串表达式指派似然度分数的方法动作包括指派具有从0到1范围内的值的似然度分数,并且向每个常量串表达式指派似然度分数的方法动作包括指派规定的似然度分数值。5.如权利要求3所述的方法,其特征在于,从任务的所述训练集合生成训练数据的方法动作包括以下动作:针对所述训练集合中的每个任务,针对所述任务中的每个输入-输出示例,建立从所述输入-输出示例归纳地合成的变换程序的集合,其中每个所述变换程序从所述示例中的输入串的元组产生所述示例中的输出串,从所述变换程序的集合建立正训练子表达式集合,从所述变换程序的...

【专利技术属性】
技术研发人员:S·古尔瓦尼R·辛格
申请(专利权)人:微软公司
类型:发明
国别省市:美国;US

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

1