Add Trie-based Spell Checker with edit distance suggestions#14677
Open
fauzan171 wants to merge 2 commits into
Open
Add Trie-based Spell Checker with edit distance suggestions#14677fauzan171 wants to merge 2 commits into
fauzan171 wants to merge 2 commits into
Conversation
Implemented a SpellChecker class that uses a Trie data structure for efficient dictionary storage and provides spell-checking with Levenshtein edit distance-based suggestions. Features: - Trie-based dictionary storage for efficient prefix lookups - is_correct() - check if a word exists in dictionary - suggest() - return closest matches based on edit distance - add_word() - dynamically add words to dictionary - Case-insensitive word matching - Comprehensive test suite included
There was a problem hiding this comment.
Click here to look at the relevant links ⬇️
🔗 Relevant Links
Repository:
Python:
Automated review generated by algorithms-keeper. If there's any problem regarding this review, please open an issue about it.
algorithms-keeper commands and options
algorithms-keeper actions can be triggered by commenting on this PR:
@algorithms-keeper reviewto trigger the checks for only added pull request files@algorithms-keeper review-allto trigger the checks for all the pull request files, including the modified files. As we cannot post review comments on lines not part of the diff, this command will post all the messages in one comment.NOTE: Commands are in beta and so this feature is restricted only to a member or owner of the organization.
|
|
||
| all_words = self.trie.get_all_words() | ||
| distances = [(w, self._edit_distance(word, w)) for w in all_words] | ||
| distances.sort(key=lambda x: x[1]) |
There was a problem hiding this comment.
Please provide descriptive name for the parameter: x
The word 'worl' in the test case was flagged by codespell as a misspelling of 'world'. Replaced with 'helo' (misspelling of 'hello') which serves the same purpose without triggering the linter.
There was a problem hiding this comment.
Click here to look at the relevant links ⬇️
🔗 Relevant Links
Repository:
Python:
Automated review generated by algorithms-keeper. If there's any problem regarding this review, please open an issue about it.
algorithms-keeper commands and options
algorithms-keeper actions can be triggered by commenting on this PR:
@algorithms-keeper reviewto trigger the checks for only added pull request files@algorithms-keeper review-allto trigger the checks for all the pull request files, including the modified files. As we cannot post review comments on lines not part of the diff, this command will post all the messages in one comment.NOTE: Commands are in beta and so this feature is restricted only to a member or owner of the organization.
|
|
||
| all_words = self.trie.get_all_words() | ||
| distances = [(w, self._edit_distance(word, w)) for w in all_words] | ||
| distances.sort(key=lambda x: x[1]) |
There was a problem hiding this comment.
Please provide descriptive name for the parameter: x
mindaugl
approved these changes
May 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Added a new
trie_spell_checker.pymodule indata_structures/trie/that implements a Trie-based Spell Checker with Levenshtein edit distance-based suggestions.What's New:
SpellCheckerclass - Uses a Trie for efficient dictionary storageis_correct(word)- Check if a word exists in the dictionarysuggest(word, max_suggestions=5)- Return closest matches based on edit distanceadd_word(word)- Dynamically add words to the dictionary_edit_distance()static method - Levenshtein distance implementationWhy:
The existing
trie.pyonly provides basic Trie operations (insert, search, delete). A spell checker is a classic and practical application of Trie data structures, commonly taught in data structures courses. This addition demonstrates a real-world use case of Tries.Testing:
test_spell_checker()function includedpython3 data_structures/trie/trie_spell_checker.pyChecklist
data_structures/trie/)