the most direct use of the present invention is for enterprise application integration ( eai ) although it can be applied to any application involving conversion of unstructured data to structured data . fig1 illustrates a representative digital computer system that can be programmed to perform the method of this invention . the exemplary hardware and operating environment of fig1 for implementing the invention includes a general purpose computing device in the form of a computer 100 , including a processing unit 102 , a system memory 104 , and a system bus 106 that operatively couples various system components include the system memory 104 to the processing unit 102 . there may be only one or there may be more than one processing unit 102 , such that the processor of computer 100 comprises a single central - processing unit ( cpu ), or a plurality of processing units , commonly referred to as a parallel processing environment . the computer 100 may be a conventional computer , a distributed computer , or any other type of computer ; the invention is not so limited . the system bus 106 may be any of several types of bus structures including a memory bus or memory controller , a peripheral bus , and a local bus using any of a variety of bus architectures . the system memory 104 may also be referred to as simply the memory , and includes read only memory ( rom ) and random access memory ( ram ). a basic input / output system ( bios ), containing the basic routines that help to transfer information between elements within the computer 100 , such as during start - up , is stored in system memory 104 . the computer 100 further includes storage memory 108 , which can be a hard disk drive for reading from and writing to a hard disk , a magnetic disk drive for reading from or writing to a removable magnetic disk , and an optical disk drive for reading from or writing to a removable optical disk such as a cd rom or other optical media . storage memory 108 is connected to the system bus 106 by the appropriate interface . storage memory 108 provides nonvolatile storage of computer - readable instructions , data structures , program modules and other data for the computer 100 . it should be appreciated by those skilled in the art that any type of computer - readable media which can store data that is accessible by a computer , such as magnetic cassettes , flash memory cards , digital video disks , bernoulli cartridges , random access memories ( rams ), read only memories ( roms ), and the like , may be used in the exemplary operating environment . a number of program modules may be stored in the storage memory 108 hard disk or system memory 104 , including an operating system , one or more application programs 124 , other program modules , and program data . a user may enter commands and information from input devices to the personal computer 100 via input peripherals interface 110 . such input devices can include a keyboard 111 , a pointing device , a microphone , joystick , game pad , satellite dish , scanner , or the like . input peripherals interface 110 is often a serial port interface that is coupled to system bus 106 , but may be connected by other interfaces , such as a parallel port , game port , or a universal serial bus ( usb ). a monitor 112 or other type of display device is also connected to the system bus 106 via an interface , such as a video adapter 114 . in addition to the monitor , computers typically include other peripheral output devices ( not shown ), such as speakers and printers . the computer 100 may operate in a networked environment using logical connections to one or more remote computers , such as remote computer 116 . these logical connections are achieved by a communication device coupled to or a part of the computer 100 ; the invention is not limited to a particular type of communications device . the remote computer 116 may be another computer , a server , a router , a network pc , a client , a peer device or other common network node , and typically includes many or all of the elements described above relative to the computer 100 . the logical connections depicted in fig1 include a local - area network ( lan ) 118 and a wide - area network ( wan ) 120 . such networking environments are commonplace in offices , enterprise - wide computer networks , intranets and the internet . when used in a lan - networking environment , the computer 100 is connected to the local network 118 through a network interface or adapter 122 , which is one type of communications device . when used in a wan - networking environment , the computer 100 typically includes a modem 113 , a type of communications device , or any other type of communications device for establishing communications over the wide area network 120 , such as the internet . the modem 113 , which may be internal or external , is connected to the system bus via the input peripherals interface 110 . in a networked environment , program modules depicted relative to the personal computer 100 , or portions thereof , may be stored in the remote memory storage device . it is appreciated that the network connections shown are exemplary and other means of and communications devices for establishing a communications link between the computers may be used . the hardware and operating environment in conjunction with which embodiments of the invention may be practiced has been described . the computer in conjunction with which embodiments of the invention may be practiced may be a conventional computer , a distributed computer , or any other type of computer ; the invention is not so limited . such a computer typically includes one or more processing units as its processor , and a computer - readable medium such as a memory . the computer may also include a communications device such as a network adapter or a modem , so that it is able to communicatively couple other computers . other digital computer system configurations can also be employed to perform the method of this invention , and to the extent that a particular system configuration is capable of performing the method of this invention , it is equivalent to the representative digital computer system of fig1 , and within the scope and spirit of this invention . moreover , those skilled in the art will appreciate that the invention may be practiced with other computer system configurations , including hand - held devices , multiprocessor systems , microprocessor - based or programmable consumer electronics , network pcs , minicomputers , mainframe computers , and the like . the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network . in a distributed computing environment , program modules may be located in both local and remote memory storage devices . once they are programmed to perform particular functions pursuant to instructions from program software that implements the method of this invention , such digital computer systems in effect become special - purpose computers particular to the method of this invention . the techniques necessary for this are well - known to those skilled in the art of computer systems . the invention is directed to applying an evolutionary paradigm for automatically deducing the underlying syntax of a set of unstructured data items . a data item is a string . that does not include complete syntactical information but implicitly is characterized by a syntax that , while nontrivial , is not given to full machine interpretation . a set of data items can comprise data items sharing the same syntax or data items where some or all have unique syntaxes . fig3 shows a data item 10 , in this case a page of a census report . the present invention detects the underlying syntax in the unstructured data item and generates a model of the syntax . the model can be used for a number of useful purposes , such as : creating an adapter that converts unstructured data items , which have the same underlying syntax , into a format that is machine - usable , for example to a database format or xml . identifying existence of duplicate syntaxes identifying deviations of elements from a canonical syntax to do this , the invention creates a software representation , called a bot , for each potential element of the data syntax . a syntax model evolves using the pool of created bots until it accurately represents the syntax of an inherent structure in the data . fig4 shows the data item 10 example of fig3 after it has been analyzed by the present invention . syntax model elements 12 have been detected . each syntax element 12 comprises a data definition ( header ) 14 and content 16 . a syntax element 12 can have a null data definition 12 , however it cannot have null content 16 in all of the data items 10 . for each identified syntax model one can create a tailored adapter that takes as input unstructured data items 10 obeying the format of the learning sample set and providing as output a structured version of the data items ( optionally manipulating some of the data elements ). the present invention is automatic in the sense that there is no need for a human created training set or a training stage . rather , given a sample set of input data 20 , the system , on its own , identifies the inherent structure . the main assumption underlying the system is that such structures exist , and that there are sufficient amounts of samples from each structure — where “ sufficient ” means that the relation between the size of the sample set and the complexity level of the underlying syntax is above the ambiguity threshold , a threshold above which no ambiguity in the distinction between the roles of the data item elements can occur . fig2 is a general flowchart illustrating a method for automatically deducing the syntactic structure of a set of unstructured data and constructing an adapter in accordance with a preferred embodiment of the present invention . input data 20 comprising data structures is used to create initial pool of bots 22 . for example , the pairs of data definitions 14 and content 16 shown in fig4 are represented in the present invention by bots . combinatorial evolution 24 is applied to the bots to produce a syntax model of the data structure 26 . the syntax model serves as the basis for any of several output options 28 , such as building an adapter to convert similar data items to structured data or creating a repository for storing the data syntaxes . details of initial bot pool creation 22 , are shown in fig5 . two groups of methods are applied . the first group consists of deterministic heuristic methods that analyze the given data set and create bots by running predefined bot templates 32 over the data set . the bots can relate to potential fields , tables , columns , frames and many other self - contained structural elements . examples of such deterministic heuristic methods used in step 32 : 1 . find a string a which abides regular expression template x and a string b which abides y . this creates a bot that looks for data segments which start with a and end with b . 2 . find a recurring string which is underlined , and underneath it appears data in more than x percentage of the data items . this creates a bot that looks for vertical fields that are initiated by the string found , where the data appears below the underline and the field ends in a blank line . there are many such methods , which identify tables , columns , single value fields , date fields etc . the second group of bot creation methods assembles additional bots by performing combination and manipulation 34 on subsets of the group of bots created using the first , template - based , group of methods 32 . 1 . combining several correlated bots ( which appear together frequently ) into a larger , unified bot . 2 . creating , when a bot is identified as repeating in one or more data items , a repeating bot . this is important when the same structure appears in different quantities in different data items . for example , it might appear that two items , one comprised of six bots and one comprised of four bots , are not of the same structure . however , if both items contain the same two - bot combination that repeats ( thrice and twice , respectively ), then the two items can be identified as the same structure . each bot potentially relates to a segment of a syntax appearing somewhere in the sample set . all of the bots created in initial bot pool creation stage 22 are put into a single initial pool , even if originating from distinct syntaxes . in other words , even if the sample data item set comprises several syntaxes , all the bots created for all the structures are put into a common pool . therefore if a bot can be applied to more than one syntax , it is available to each such syntax . it will be noted that both stages 22 and 24 result in bot creation : in initial bot creation stage 22 , bots are created using deterministic heuristics to study statistics of appearance of potential structural elements in the sample set , followed by combination and manipulation . in combinatorial evolution stage 24 more bots are created in a stochastic , non - deterministic manner . however , in stage 24 the creation of new bots is a byproduct of the process , while in stage 22 the bot creation is the essence of the stage . new bots created in stage 24 are based on bots already created in stage 22 and represent combinations of bots from the bot pool that other syntaxes ( other than the syntax , during the creation of which , the bots were formed ) may find useful . combinatorial evolution stage 24 improves , grows and fine tunes dominant syntax models by adapting the dynamic properties of its composing bots to its niche . the syntax &# 39 ; s niche is identified by the characteristics of the data elements . ( this stage can optionally be preceded by a step where inapplicable bots are removed from the niche — although retained in the bot pool for possible use in other niches .) the uniqueness of this approach lies in the fact that , unlike the real world , combinatorial evolution 24 transcends the darwinian paradigm of evolving better agents by random mutations and fitness selection . combinatorial evolution allows large collective adaptive changes compatible with / required by the global features of the problem space . in this way , one avoids the stagnation of bots evolution in the local minima . it is like reducing the time evolution scale from millions of years to days by allowing free exchange of entire limbs and organs between individuals belonging to different species but acting in similar conditions . if you are a mouse and want to become a bat , instead of waiting to evolve the wings , you can just try borrowing them from a neighboring eagle . as such , covering of the problem space is much more efficient than covering of genetic niches in biology . here , “ providence ” does exist : the system designer . various regions in the problem space will be inhabited by different ecologies . the combinatorial evolution phase 24 starts with creating a population of candidate model syntaxes . in the first iteration , the models are assembled by randomly combining correlated bots from the bot pool . following the feedback mechanism , where each model gets a quality assessment value , several evolution - based operators create the population 50 : a . copying the top performing syntax models into the new population ; b . creating new syntax models through recombination of two or more parent top - performing syntax models ; the probability of being a parent being proportional to the relative level of success of the model ; c . creating new syntax models through structural manipulations of top performing syntax models ; and d . creating syntax models from random sets of bots . the feedback mechanism drives evolution and cooperation processes and determines selection and adaptation in the system , and is thus extremely important . implicit feedback measures help score different bots and drive adaptation . in the design of the feedback mechanism lies the great novelty of the current invention . usually in evolutionary and other learning algorithms , the feedback is defined using a target function or a human - made training set . however , for the task of identifying syntaxes in data items no such effort is needed . this is due to the fact that while data structures may vary tremendously in format and may contain very different elements , still there are certain meta - rules that all structure models must abide by . in addition , each bot type ( be it data field , table or other structure element type ), has specific meta - rules that control all of its appearances , even if they spread over completely differing structures . this set of meta - rules is on the one hand extremely generic , but on the other hand forces the evolution towards tailored complex bots , which are extremely accurate . the existence of these meta - rules might not be apparent at first glance , however the fact is that all of the syntaxes we aim to analyze were created to be used and understood by humans or computers . in the case they were created to be used by computers , obviously a rigid set of rules must be used , given the fact that computers are very rigid in their structuring demands . however , the important point is that structures that were created to be used by humans must also abide by very rigid rules , because human beings have certain ways in which they comprehend data , certain unspoken agreements which are embedded so strongly into our way of thinking that we just see them as natural and irreplaceable , and thus do not consider them at all . the identification of these underlying rules of how people perceive structured data , such as reports , documents etc . allows us to provide a set of meta - rules which are used in the feedback process of the evolution , without the need for specific human labor in each case . the following are some examples of feedback meta - rules ( expressed in human terminology ): 1 . reports do not contain large irrelevant areas . thus , a good syntax model covers a high percentage of the data items &# 39 ; scope . 2 . a bot which covers more data is better , as long as it doesn &# 39 ; t misinterpret syntax information as data . 3 . several columns that are identical in their characteristics and are adjacent are better interpreted as tables . 4 . if two table representation bots cover the same area , one a column type bot and the other a multiplication table type ( one which has headers both on the top and on the side ), and the side headers always appear , it is better to interpret the data as a multiplication table . 5 . tables usually have headers which define the meaning of the data in the outer parts of the table 6 . it is usually better to have a more elaborate , detailed structure than a more abstract , general one . 7 . there is a distinction in the functions of the horizontal and the vertical dimension . while data items of the same structure usually do not differ in their horizontal offset ( i . e ., a field is usually situated in the same columns , and the horizontal size of a structure is the same ) they may vary in their vertical size ( a table may have a varying number of records .). fig6 illustrates the details of combinatorial evolution 24 . population creation 50 starts with the initial bot pool created in stage 22 . starting with the second iteration , population creation 50 comprises applying several operations to the previous population : a . copying the top performing syntax models into the new population ; b . creating new syntax models through recombination of two or more parent top performing syntax models , the probability of being a parent being proportional to the relative level of success of the model ; c . creating new syntax models through structural manipulations of top performing syntax models which suffer a local fault in their structure by : adding a bot if a consistent hole in coverage has been identified deleting an offending bot when its deletion will cause the evaluation result of the syntax to rise changing order and properties of individual bots comprising the structure ; and , d . creating syntax models from random sets of bots . these operations create the new population to be evaluated in step 52 . in population evaluation / feedback stage 52 , bots are scored and checked for how they fit to data according to meta rules . the detailed steps comprising stage 52 are : a . applying the set of feedback meta - rules , each of which outputs an evaluation result for each of the syntax models over each of the data items ; b . creating an overall evaluation result for each of the syntax models ; and c . identifying fault points in otherwise well performing models , such a fault points serving , in the population creation stage , to indicate a bad bot to remove from a model or a hole in an otherwise successful model to fill with a bot from the pool . if , during stage 52 , a new bot is created , which can happen for example , if the system identifies a strong correlation between two or more elementary bots , then the bot is added 62 to the bot pool so that it is available to other data structures . convergence test 54 checks whether one of the convergence criteria has been fulfilled . the convergence criteria check entities that signal whether a maximum of the process has been reached . examples of such entities are the derivative of the evaluation results over evolution generations , the level of uniformity of the bots in the population , and the amount of new bots that are considered acceptable . the convergence test then checks whether the algorithm has reached a maxima in the space of potential syntaxes and the probability that this maxima is a global one . if convergence is found to be satisfactory , the process continues 56 to structural modeling 26 . if not , then a split test 58 is performed : data items are tested to determine whether they should be split into groups to find possible multiple structures . the split test looks for situations where a syntax model becomes dominant , but is not relevant to the entire set of data items , or where there are large variances between the average success of a syntax over the entire set of date items 10 and its detailed success over specific data items 10 . ( if it is known that there is only one data structure , this test can be skipped and the system goes back to population creation 30 .) if the split test is required ( i . e ., system has more than one data structure ), and if the result of the test is that the data is split , then start a new population 60 with a subset of the data items and their related structure bots . with the new population , repeat the process ( create a new instance ), starting with evaluation stage 62 ′ ( which is equivalent to stage 52 ), etc . once convergence test 54 is passed for all instances , the system moves on to structure modeling 26 . in structure modeling the resulting structure bot is used as the basis for modeling the structure , so that it can be used in various forms in the future . once the model is established it serves as the base for useful application of similar unstructured data . for example , the model can serve as the basis for adapters to convert the unstructured data to other , machine - understandable formats , such as : proprietary spreadsheet hierarchical , such as xml ( extendable markup language ) comma separated value ( csv ) database it should be clear that the description of the embodiments and attached figures set forth in this specification serves only for a better understanding of the invention , without limiting its scope . it should also be clear that a person skilled in the art , after reading the present specification could make adjustments or amendments to the attached figures and above described embodiments that would still be covered by the scope of the invention .