title: Building or Finding a "relevant terms" suggestion feature
body: <p>Given a few words of input, I want to have a utility that will return a diverse set of relevant terms, phrases, or concepts.  A caveat is that it would need to have a large graph of terms to begin with, or else the feature would not be very useful.</p>
  
  <p>For example, submitting "baseball" would return </p>
  
  <pre><code>["shortstop", "Babe Ruth", "foul ball", "steroids", ... ]
  </code></pre>
  
  <p><a href="http://labs.google.com/sets" rel="noreferrer">Google Sets</a> is the best example I can find of this kind of feature, but I can't use it since they have no public API (and I wont go against their TOS).  Also, single-word input doesn't garner a very diverse set of results.  I'm looking for a solution that goes off on tangents.</p>
  
  <p>The closest I've experimented with is using <a href="http://en.wikipedia.org/w/api.php" rel="noreferrer">WikiPedia's API</a> to search Categories and Backlinks, but there's no way to directly sort those results by <em>"relevance"</em> or <em>"popularity"</em>. Without that, the suggestion list is massive and all over the place, which is not immediately useful and very hard to whittle down.</p>
  
  <p>Using A Thesaurus could also work minimally, but that would leave out any proper nouns or tangentially relevant terms (like any of the results listed above).</p>
  
  <hr>
  
  <p>I would <em>happily</em> reuse an open service, if one exists, but I haven't found anything sufficient.  </p>
  
  <p>I'm looking for either a way to implement this either <em>in-house with a <strong>decently-populated</strong> starting set</em>, or <em>reuse a <strong>free service</em></strong> that offers this.</p>
  
  <p><strong><em>Have a solution?</strong>  Thanks ahead of time!</em></p>
  
  <hr>
  
  <p><strong>UPDATE:</strong>  Thank you for the incredibly dense &amp; informative answers.  I'll choose a winning answer in 6 to 12 months, when I'll hopefully understand what you've all suggested =)</p>