This is a Kotlin Multiplatform implementation of the symspell fuzzy search algorithm. It has been ported from this Java implementation of symspell.
implementation("com.darkrockstudios:symspellkt:3.1.0")
Try out the sample desktop application:
gradlew sampleCompose:run
- the optional bigram dictionary in order to use sentence level context information for selecting best spelling correction.
- The Symmetric Delete spelling correction algorithm reduces the complexity of edit candidate generation and dictionary lookup for a given Damerau-Levenshtein distance.
- It is six orders of magnitude faster (than the standard approach with deletes + transposes + replaces + inserts) and language independent.
- Opposite to other algorithms only deletes are required, no transposes + replaces + inserts. Transposes + replaces + inserts of the input term are transformed into deletes of the dictionary term.
- The speed comes from the inexpensive delete-only edit candidate generation and the pre-calculation.
In order to optimize for size on disk, and speed of loading and parsing, I made a little file format to encode the common plain text frequency dictionaries use with SymSpell style spell checkers.
fdic is both smaller on disk, and faster to load than either plain text or gzipped dictionaries. In some cases being 70% faster to load and parse, and more than 40% smaller on disk.
There is a CLI program for producing .fdic
files from a standard plain text frequency dictionary, as well as some
extension functions in an addon library for loading them into a SymSpellKt SpellChecker object.