title: Removing suffixes or prefixes from a word and getting root word using Stemming or Lemmatization in C#
body: <p>We want the attempt to automatically remove suffixes (and in some cases prefixes) in order to find the <strong>“root word”</strong> or stem of a given word.
  Pretty much always we find variations of the same words e.g. requirement, requirements, requires, required. All have <strong>"require"</strong> in common. 
  So it should return "require" using <strong>Stemmers' Algorithm</strong>.</p>
  
  <p>We have tried using <strong>Stemmers.Net</strong>, but its giving incorrect output like this:</p>
  
  <ul>
  <li>Exception - except </li>
  <li>Nothing - noth</li>
  <li>prevents - prevent</li>
  <li>clinical - clinic</li>
  <li>disclosing, - disclosing</li>
  <li>collecting, - collecting,</li>
  </ul>
  
  <p>But it should display like this:</p>
  
  <ul>
  <li><p>Exception - except</p></li>
  <li><p>Nothing - nothing</p></li>
  <li><p>prevents - prevent</p></li>
  <li><p>clinical - clinic</p></li>
  <li><p>disclosing, - disclose</p></li>
  <li><p>collecting, - collect</p></li>
  </ul>
  
  <p>Can somebody help us into this?</p>
  
  <pre><code> class Program
  {
      static void Main(string[] args)
      {
          string strStemPhrase = @"Exception Nothing in this subsection prevents the sponsor of a clinical trial from voluntarily disclosing, 
                                      collecting, or reporting information to the Food and Drug Administration ";
  
          string[] strStemmedWords = strStemPhrase.Split(new[] { " " }, StringSplitOptions.None);
  
          TestStemmer(new EnglishStemmer(), strStemmedWords);                 
      }
  
      private static void TestStemmer(IStemmer stemmer, params string[] words)
      {
          Console.WriteLine("Stemmer: " + stemmer);
          foreach (string word in words)
          {
              Console.WriteLine(word + " --&gt; " + stemmer.Stem(word));
          }
      }
  }
  </code></pre>