1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
//! Spelling correction algorithms
//!
//! This module provides functionality for detecting and correcting misspelled words
//! using dictionary-based and statistical approaches.
//!
//! # Dictionary-based Correction
//!
//! The dictionary-based approach uses a reference word list and string similarity
//! metrics to find the closest match for a potentially misspelled word.
//!
//! # Statistical Correction
//!
//! The statistical approach uses n-gram language models and the noisy channel model
//! to find the most likely correction for a misspelled word based on context.
//!
//! # Features
//!
//! - Dictionary-based correction with configurable similarity metrics
//! - Statistical correction using n-gram language models
//! - Support for custom dictionaries and language models
//! - Context-aware suggestion prioritization
//! - Customizable edit distance thresholds
//!
//! # Examples
//!
//! ## Dictionary-based Correction
//!
//! ```
//! use scirs2_text::spelling::{DictionaryCorrector, SpellingCorrector};
//!
//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
//! // Create a dictionary-based spelling corrector
//! let corrector = DictionaryCorrector::default();
//!
//! // Correct a misspelled word
//! let corrected = corrector.correct("recieve")?;
//! assert_eq!(corrected, "receive");
//!
//! # Ok(())
//! # }
//! ```
//!
//! ## Statistical Correction
//!
//! ```
//! use scirs2_text::spelling::{StatisticalCorrector, SpellingCorrector};
//!
//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
//! // Create a statistical spelling corrector with added dictionary entries
//! let mut corrector = StatisticalCorrector::default();
//!
//! // Explicitly add words to the dictionary to ensure consistent behavior in tests
//! corrector.add_word("received", 100);
//! corrector.add_word("message", 100);
//!
//! // Correct a misspelled word in context
//! let text = "I recieved your mesage";
//! let corrected = corrector.correcttext(text)?;
//! // Check for corrections
//! assert!(corrected.contains("received"));
//! assert!(corrected.contains("message"));
//!
//! # Ok(())
//! # }
//! ```
pub use ;
pub use ;
pub use NGramModel;
pub use ;
// Re-export utility functions that might be useful for users building custom correctors
pub use ;
use crateResult;
/// Trait for spelling correction algorithms