Breaking Words Apart Is Harder Than It Looks
Most people think structural analysis of words just means splitting a word into its prefix, root, and suffix. They're wrong. I ran into this problem head-on when I was building a morphological analyzer for a low-resource language project. We had a tokenization pipeline that worked fine for English and a handful of other languages, then we tried it on a Turkic language and watched it spit out nonsense for any word longer than six characters. The issue wasn't the code. The issue was that the language uses agglutinative morphology where a single word can carry eight or nine morphemes stacked together, and our rule-based segmenter kept making wrong cuts at ambiguous boundaries. We spent three weeks debugging it. The workaround was to switch from a purely rule-based greedy algorithm to a probabilistic Viterbi-based decoder trained on a small annotated corpus. Instead of always picking the longest matching prefix, it weighted each possible segmentation by corpus frequency and picked the most likely path. This cut our error rate from about 31% to roughly 7%. That's the kind of thing nobody tells you when they explain the concept in a textbook.
What Structural Analysis Of Words Actually Involves
At its core, structural analysis of words is about decomposing a written form into its meaningful constituent parts and describing the relationships between them. The standard terminology is morphology, and within that you have two main subdivisions: derivational morphology, which changes the meaning or grammatical category of a base (like turning "happy" into "unhappiness"), and inflectional morphology, which marks grammatical features without changing the core meaning (like adding "-ed" to mark past tense). Both matter, but they behave differently under analysis and often require completely different handling in any practical system. A word like "unpredictably" breaks down into "un-" (derivational prefix), "predict" (root), "-able" (derivational suffix), and "-ly" (derivational suffix). That seems straightforward until you hit words like "antidisestablishmentarianism," which has at least five layers and several competing analyses depending on which linguistic framework you use. Some researchers treat "disestablish" as a derived base; others go straight back to "establish." The choice isn't arbitrary, but it does change your output structure.
The Mechanics of Word Decomposition
There are really three approaches you'll encounter in practice. Rule-based systems use hand-crafted patterns and lookup tables. Statistical systems learn probabilities from tagged or segmented corpora. Hybrid systems, which is what most people actually end up using, combine both. A rule-based approach will give you clean, interpretable results but requires extensive manual effort and breaks on anything outside its coverage. A statistical approach handles novelty better but needs training data and can produce outputs that look reasonable but are technically wrong. Let me walk through a concrete example using a simple rule-based strategy because that's the clearest way to see what's happening under the hood. Take the word "regrettable." You scan from right to left, testing affixes against a known inventory. "-able" matches, leaving "regrettab." Then you check if "regrettab" is a known stem. It isn't. You try another cut. "-able" is a derivational suffix that attaches to verb stems, so you backtrack and look for a verb form. "Regret" is the stem, and "able" is a secondary suffix that derives an adjective from a noun. Wait, that doesn't fit. "Regret" is a verb, and "regrettable" means "capable of being regretted." So "-able" attaches to the verb stem, but there's a doubling of the terminal consonant that's orthographic, not morphological. The structural analysis needs to separate the orthographic rule from the morphological boundary, otherwise your system will learn the wrong thing about the word's structure. That consonant doubling issue is a genuinely annoying edge case. Most naive systems conflate spelling changes with morphological boundaries. In "regrettable," the double "t" belongs to the orthographic system, not the morphological one. The underlying stem is still "regret." If you're building a spell-checker or a search indexer, this distinction matters enormously. If you're doing pure linguistic analysis, it's less critical but still worth getting right for consistency.
Get the Full Details

Common Tools and How to Use Them
If you want to do this without writing everything from scratch, there are a few established options. For English, NLTK's morphy function uses WordNet lookups combined with a set of hand-crafted rules. It's fast and covers a surprising amount of ground, but it only returns the lemma, not the full structural breakdown. You need something more if you actually want to see the prefix-root-suffix decomposition. Morphodite is a heavier tool that uses statistical segmentation and can handle multiple languages. It's slower than a rule-based lookup but gives you actual segmentations with confidence scores. The tradeoff is that you need to train it on data or use its pre-built models, and the pre-built models are decent but not great for anything outside major European languages. I've also used a custom Python script that combines an affix list with a trie-based stemmer. The setup takes about 45 minutes if you have your affix inventory ready, and after that, it can segment words in under 2 milliseconds each on a standard laptop. Here's roughly what that looks like:
Affix lists need to be ordered by length, longest first, because shorter affixes can mask longer ones. If you test "-s" before "-ness", the algorithm will attach "-s" to "happiness" and leave you with a broken remainder. Sorting your affix inventory by length descending is one of those things that sounds obvious in hindsight but will cost you hours if you skip it. The stem dictionary is the other critical piece. You can build a small one from WordNet or from a tokenized corpus. For my project, I pulled the Brown Corpus, extracted all unique word stems using a heuristic cutoff at 2 million tokens, and that gave me coverage of about 89% of the words in the test set. The remaining 11% either had novel affix combinations or were rare enough that the corpus simply didn't contain them. For those, the system falls back to longest-match segmentation with no confidence score, which is when you know you're in fragile territory.
Pitfalls That Will Waste Your Time
Here are the things I've seen people get wrong repeatedly. First, assuming that a morphological boundary always corresponds to an orthographic boundary. "Realize" and "realise" have the same structure but different spellings. "Dreamt" and "dreamed" are alternative inflectional forms where the boundary analysis differs depending on which form you choose. Your system needs to handle both, or it will produce inconsistent outputs across texts. Second, treating all suffixes as independent. Some suffixes cannot co-occur. In English, you can't add "-ly" and "-ness" to the same base in most cases. "Quicklyness" is ungrammatical. A structural analyzer that doesn't enforce selectional restrictions will happily produce this kind of output, which is worse than producing no output at all because it looks plausible to someone who doesn't know the language. Third, ignoring dialect variation. British and American English have systematic differences in morphology. "Revamped" and "revamp" work the same way, but something like "dove" versus "dived" as the past tense of "dive" can cause your tagger to assign different structures depending on which variant the training data contains. If your system is trained on American English corpora, it may misanalyze British texts or vice versa.

Where This Method Breaks Down Completely
Structural analysis of words works best on languages with transparent orthography and relatively regular morphology. Languages like Finnish, Turkish, and Hungarian are actually easier to analyze structurally than English, despite being more morphologically complex, because each morpheme maps cleanly to a single form. The problem cases are languages with fusional morphology where a single affix carries multiple grammatical features simultaneously. Latin "amo" encodes person, number, tense, mood, and voice in a single bound form. You can't cleanly segment it the way you segment "unhappiness." Writing systems that don't use spaces, like Chinese and Classical Arabic, require a completely different approach. Structural analysis in those contexts usually means character-level or subword-level decomposition rather than morpheme-level. The term gets applied loosely in those domains, and I've seen papers conflate the two problems, which muddies the literature considerably. If you're working in a non-alphabetic script, look into byte-pair encoding or character n-gram models instead of traditional morphological segmentation. Another hard limit is polymorphemic ambiguity. The word "run" can be a noun or a verb, and "run" can also appear as part of compound nouns like "runway" or "runoff." A structural analyzer needs to disambiguate at the word level before it can decompose. That requires syntactic context, which means you can't do structural analysis in isolation if your target words are ambiguous. Most production systems fold in POS tagging as a preprocessing step for exactly this reason.
Practical Tips That Actually Matter
Start with a well-curated affix inventory rather than trying to generate one automatically. Hand-built inventories for English cover over 95% of productive affixation patterns with roughly 200 prefixes and 150 suffixes. Automated extraction from a corpus will give you thousands of false positives, many of which are just truncations or artifacts of the tokenization process. Always report uncertainty. When your analyzer encounters a word it can't confidently segment, say so explicitly instead of forcing a cut. In my experience, a system that flags 15% of its inputs as uncertain and defers to a fallback is far more useful than one that claims 100% confidence but is wrong on the difficult cases. The false certainty is what causes downstream systems to fail silently. If you need high accuracy on a specific domain, build a domain-specific affix list. General-purpose analyzers struggle with specialized vocabulary. Medical terms, legal jargon, and technical fields all have morphological patterns that don't appear in general corpora. I've seen this repeatedly when deploying analyzers for domain-specific search. A quick fix is to merge a domain lexicon into the stem dictionary, which can improve coverage by 8 to 12 percentage points in that domain with minimal additional effort.
Bottom Line
Structural analysis of words is a useful tool when you understand its constraints. It works well for languages with agglutinative or moderately fusional morphology and transparent orthography. It struggles with highly fusional languages, non-alphabetic scripts, and ambiguous word forms. The most practical approach combines a hand-curated affix inventory with a probabilistic segmentation layer and explicit uncertainty reporting. Anything else is usually slower to build and less accurate in production.
