1. A computer comprising: an interface configured to receive an initial set of terms of a query from a user of the computer; a non-transitory, tangible memory; a hardware processor configured to perform a method comprising: initializing a set of candidate terms and storing the terms in the memory; performing the following for a predetermined number of iterations: obtaining a predetermined number of temporary terms for each candidate term of the set of candidate terms, the predetermined number of temporary terms having the highest differential affinity to the each candidate term, wherein the differential affinity for a temporary term with respect to a candidate term is the directional affinity between the temporary term and the candidate term minus the average affinity of the temporary term; placing each temporary term and the associated differential affinity into a set of temporary terms, if a temporary term is obtained from more than one candidate term, the differential affinity of the temporary term being related to the differential affinities to the more than one candidate term; calculating the average differential affinity for each temporary term of the set of temporary terms, the average differential affinity representing an average of differential affinities from the each temporary term to every term of the initial set of terms; removing from the temporary set one or more terms with an average differential affinity that fails to satisfy a predetermined threshold; and placing one or more terms of the temporary set with differential affinities above the threshold into the set of candidate terms; selecting one or more terms of the set of candidate terms; and outputting the one or more selected terms to the user via the interface of the computer.