/starter/src/cs276/pe1/spell/KGramWithEditDistanceSpellingCorrector.java
Java | 43 lines | 24 code | 13 blank | 6 comment | 1 complexity | f5d51cfb277443958185e997370f278e MD5 | raw file
1package cs276.pe1.spell;
2
3import java.io.File;
4import java.util.List;
5
6import cs276.util.IOUtils;
7import cs276.util.StringUtils;
8import java.util.*;
9
10import cs276.util.Counter;
11
12public class KGramWithEditDistanceSpellingCorrector implements SpellingCorrector {
13 /** Initializes spelling corrector by indexing kgrams in words from a file */
14
15 KGramSpellingCorrector KGram;
16
17 public KGramWithEditDistanceSpellingCorrector() {
18 KGram = new KGramSpellingCorrector();
19 }
20
21 public List<String> corrections(String word) {
22 List<String> guesses = KGram.corrections(word);
23
24 // Analyze edit distances
25 Counter<String> editDistances = new Counter<String>();
26 for (String guess : guesses) {
27 editDistances.setCount(guess, -1*StringUtils.levenshtein(word, guess));
28 }
29
30// System.out.println("Using edit distances--------------------");
31// for (String guess : editDistances.topK(5)) {
32// System.out.println(guess + ": " + editDistances.getCount(guess));
33// }
34
35 return editDistances.topK(5);
36 }
37
38 public double getEditDistance(String word, String guess) {
39 return(-1*StringUtils.levenshtein(word, guess));
40 }
41
42
43}