Generating programs based on input-output examples using converter modules
First Claim
1. A method, performed using at least one computing device, for generating a program that performs a data manipulation task, comprising:
- receiving input-output examples that include input items and corresponding output items, the corresponding output items representing transformed versions of respective input items;
parsing the input items and the output items to provide a plurality of input parts and output parts, respectively, the parsing including;
identifying multiple alternative approaches for parsing the input items and the output items into the plurality of input parts and output parts; and
selecting, based on analysis of the multiple alternative approaches, one of the multiple alternative approaches to use to parse the input items and the output items;
identifying portions of the output items that match portions of the respective input items by comparing the input parts with the output parts;
determining, for each output part, whether the output part can be produced from a corresponding input part using one or more converter modules;
generating formatting instructions which transform selected output parts into a form specified by the output items; and
automatically creating a program based on said parsing, said determining, and said generating, the program being configured to be used to transform subsequently received new input items into new respective output items.
2 Assignments
0 Petitions
Accused Products
Abstract
A program generation system is described that generates a program based on a plurality of input-output examples. The input-output examples include input items and corresponding output items. The program generation system can include three component modules. A parsing module processes the input items and output items to provide a plurality of input parts and output parts, respectively. A transformation module determines, for each output part, whether the output part can be produced from a corresponding input part using one or more converter modules selected from a collection of candidate converter modules. A formatting module generates formatting instructions that transform selected output parts into a form specified by the output items. These three modules provide a generated program that embodies logic learned from the input-output examples; the generated program can be subsequently used to transform new input items into new respective output items.
-
Citations
20 Claims
-
1. A method, performed using at least one computing device, for generating a program that performs a data manipulation task, comprising:
-
receiving input-output examples that include input items and corresponding output items, the corresponding output items representing transformed versions of respective input items; parsing the input items and the output items to provide a plurality of input parts and output parts, respectively, the parsing including; identifying multiple alternative approaches for parsing the input items and the output items into the plurality of input parts and output parts; and selecting, based on analysis of the multiple alternative approaches, one of the multiple alternative approaches to use to parse the input items and the output items; identifying portions of the output items that match portions of the respective input items by comparing the input parts with the output parts; determining, for each output part, whether the output part can be produced from a corresponding input part using one or more converter modules; generating formatting instructions which transform selected output parts into a form specified by the output items; and automatically creating a program based on said parsing, said determining, and said generating, the program being configured to be used to transform subsequently received new input items into new respective output items. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A program generation system comprising:
-
a data store that provides a collection of candidate converter modules, each candidate converter module configured to transform input information into output information based on at least one predetermined conversion rule; at least a memory and a processor to implement; a parsing module configured to receive a plurality of input-output examples, the input-output examples including input items and corresponding output items that represent transformed versions of respective input items, and to process the input items and the output items based on at least; identification of two or more alternative approaches for dividing the input items and the output items into plural parts; selection of one said approach based on an analysis of the two or more alternative approaches; provision of a plurality of input parts and output parts, respectively, based on the selected approach; and identification of portions of the output items that match portions of the input items based on a comparison of the input parts with the output parts; a transformation module configured to determine, for each output part, whether the output part can be produced from a corresponding input part using one or more converter modules selected from the collection of candidate converter modules; and a formatting module configured to generate formatting instructions that transform selected output parts into a form specified by the output items, the program generation system configured to automatically create a program using the parsing module, the transformation module, and the formatting module to be used to transform subsequently received new input items into new respective output items. - View Dependent Claims (14, 15, 16, 17)
-
-
18. A computer readable storage device for storing computer readable instructions, the computer readable instructions providing a program generation system when executed by one or more processing devices, the computer readable instructions comprising:
-
parsing logic configured to receive input-output examples, the input-output examples providing input items and corresponding output items that represent transformed versions of the input items, the parsing logic configured to; process the input items to provide a plurality of input parts based on identification of multiple alternative approaches for dividing the input items into the plurality of input parts, and selection of one said approach based on an analysis of the multiple alternative approaches; process the output items to provide a plurality of output parts based on selection of an additional approach from among multiple additional alternative approaches for dividing the output items into the plurality of output parts; and identify portions of the output items that match portions of respective input items by comparing the output parts with the input parts; transformation logic configured to determine, for each output part, whether the output part can be produced from a corresponding input part using one or more converter modules selected from a collection of candidate converter modules, each candidate converter module configured to transform input information into output information based on at least one predetermined conversion rule; formatting logic configured to generate formatting instructions which transform selected output parts into a form specified by the output items, at least one formatting instruction governing an order of presentation of the output parts; and program generation logic configured to use at least the selected one or more converter modules and the generated formatting instructions to produce a program that is to be used to transform subsequently received additional input items into additional respective output items. - View Dependent Claims (19, 20)
-
Specification