1. A method of automatically partitioning data elements into one or more parts said method comprising the steps of: (i) accessing information about the data elements; (ii) forming an undirected graphical model of the data elements using the accessed information; (iii) using the undirected graphical model to partition the data elements into the parts.