1. A method of selecting a training database from a corpus, the method comprising: pre-defining a size of the training database, the size of the training database being indicative of an optimally minimal subset of the corpus; calculating a coefficient for at least one pair in a set of pairs of entries, the coefficient comprising distance between the at least one pair of entries; and executing a function to recursively select each entry to be saved in the training database based upon the calculated coefficient until a number of entries of the training database equals the size of the training database, the executing of the function comprising: (a) selecting an initial pair of entries from the set of pairs, wherein the initial pair has a distance that is greater than the distance calculated for each other pair in the set of pairs; (b) moving the initial pair into the training database; (c) identifying a new entry from the corpus, for which the average coefficient to entries in the training database is greater than average distances calculated for all other entries in the corpus; (d) moving the new entry from the corpus into the training database; and (e) if a number of entries of the training database is less than the pre-defined size of the training database, repeating (c) and (d).