Morphing

Morphing is the concept of transforming a stem word into the variations/inflections of the stem word.

The WeCantSpell.Hunspell package doesn't support morphing - this is something we're adding on top of the WeCantSpell.Hunspell in this package.

Unfortunately, our implementation has currently only been confirmed working with the Danish dictionary files provided by Stavekontrolden .

The Morph methods needs an instance of HunspellStemResult from a successful stem operation - eg. as shown in the example below where we're finding the stem words of the Danish cykel:

@using System.Web.Hosting
@using Skybrud.TextAnalysis.Hunspell
@using Skybrud.TextAnalysis.Hunspell.Stem

@{
   
    // Map the path to the dictionary and affix files
    string dic = HostingEnvironment.MapPath("~/App_Data/Hunspell/da-DK.dic");
    string aff = HostingEnvironment.MapPath("~/App_Data/Hunspell/da-DK.aff");

    // Load a new text analyzer (Hunspell wrapper)
    HunspellTextAnalyzer analyzer = HunspellTextAnalyzer.CreateFromFiles(dic, aff);
    
    // Get the stem words of "cykel" (underlying package only ever returns one stem)
    HunspellStemResult[] stems = analyzer.Stem("cykel");
    
    // Iterate through the stems
    foreach (HunspellStemResult stem in stems) {

        <h3>@stem.Value</h3>

        // Get the inflections of "stem" (through morphing)
        string[] inflections = analyzer.Morph(stem);

        // Iterate through the inflections
        foreach (string inflection in inflections) {
            <pre>@inflection</pre>
        }

    }

}

Morphing the word cykel returns the following inflections (including the word itself):

  • cykel
  • cykler
  • cyklers
  • cyklerne
  • cyklernes
  • cyklen
  • cyklens
  • cykels