SymSpell
Rust implementation of brilliant SymSpell originally written in C# by @wolfgarbe.
Usage
extern crate symspell;
use symspell::{AsciiStringStrategy, SymSpell, Verbosity};
fn main() {
let mut symspell: SymSpell<AsciiStringStrategy> = SymSpell::default();
symspell.load_dictionary("data/frequency_dictionary_en_82_765.txt", 0, 1, " ");
let suggestions = symspell.lookup("roket", Verbosity::Top, 2);
println!("{:?}", suggestions);
let sentence = "whereis th elove hehad dated forImuch of thepast who couqdn'tread in sixtgrade and ins pired him"
let compound_suggestions = symspell.lookup_compound(sentence, 2);
println!("{:?}", compound_suggestions);
}
Advanced Usage
Using Custom Settings
let mut symspell: SymSpell<AsciiStringStrategy> = SymSpellBuilder::default()
.max_dictionary_edit_distance(2)
.prefix_length(7)
.count_threshold(1)
.build()
.unwrap()
String Strategy
String strategy is abstraction for string manipulation, for example preprocessing.
There are two strategies included:
UnicodeiStringStrategy
- Doesn't do any prepocessing and handles strings as they are.
AsciiStringStrategy
- Transliterates strings into ASCII only characters.
- Useful when you are working with accented languages and you don't want to care about accents, etc
To configure string strategy just pass it as a type parameter:
let mut ascii_symspell: SymSpell<AsciiStringStrategy> = SymSpell::default();
let mut unicode_symspell: SymSpell<UnicodeiStringStrategy> = SymSpell::default();