1. A method for associating semantically-related items of a plurality of item types, comprising: (a) embedding, by one or more computers, training items of the plurality of item types in a joint embedding space having more than two dimensions configured in a memory coupled to at least one processor, wherein each of the dimensions is defined by a real-valued axis, wherein each embedded training item corresponds to a respective location in the joint embedding space, wherein said each embedded training item is represented by a respective vector of real numbers corresponding to the respective location, and wherein each of the real numbers of the vector corresponds to a mapping of the respective location to one of the dimensions; (b) learning, by the one or more computers, one or more mappings into the joint embedding space for each of the plurality of item types to create a trained joint embedding space and one or more learned mappings, the learning including: selecting, based on known relationships between the training items, a related pair of the training items that includes a first item and a second item, wherein the first item and the second item are separated by a first distance in the joint embedding space; selecting a third item that is less related to the first item than the second item, but is closer to the first item than the second item in the joint embedding space; and adjusting a mapping function to increase a distance between the first item and the third item relative to a distance between the first item and the second item; and (c) associating, by the one or more computers, one or more of the embedded training items with a first item based upon a distance in the trained joint embedding space from the first item to each said associated embedded training items, wherein each said distance is determined based upon a first vector of real numbers corresponding to the first item and a second vector of real numbers corresponding to a respective one of the associated embedded training items.