title: Stemming algorithm that produces real words
body: <p>I need to take a paragraph of text and extract from it a list of "tags".  Most of this is quite straight forward. However I need some help now stemming the resulting word list to avoid duplicates. Example: Community / Communities</p>
  
  <p>I've used an implementation of Porter Stemmer algorithm (I'm writing in PHP by the way):</p>
  
  <p><a href="http://tartarus.org/~martin/PorterStemmer/php.txt" rel="noreferrer">http://tartarus.org/~martin/PorterStemmer/php.txt</a></p>
  
  <p>This works, up to a point, but doesn't return "real" words.  The example above is stemmed to "commun".</p>
  
  <p>I've tried "Snowball" (suggested within another Stack Overflow thread).</p>
  
  <p><a href="http://snowball.tartarus.org/demo.php" rel="noreferrer">http://snowball.tartarus.org/demo.php</a></p>
  
  <p>For my example (community / communities), Snowball stems to "communiti".</p>
  
  <p><strong>Question</strong></p>
  
  <p>Are there any other stemming algorithms that will do this? Has anyone else solved this problem?</p>
  
  <p><em>My current thinking is that I could use a stemming algorithm to avoid duplicates and then pick the shortest word I encounter to be the actual word to display.</em></p>