import com.aliasi.io.FileLineReader; import com.aliasi.spell.AutoCompleter; import com.aliasi.spell.FixedWeightEditDistance; import com.aliasi.util.Files; import com.aliasi.util.ScoredObject; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.SortedSet; public class AutoCompleteCommand { public static void main(String[] args) throws IOException { File wordsFile = new File(args[0]); String[] lines = FileLineReader.readLineArray(wordsFile,"ISO-8859-1"); Map counter = new HashMap(200000); for (String line : lines) { int i = line.lastIndexOf(' '); if (i < 0) continue; String phrase = line.substring(0,i); String countString = line.substring(i+1); Float count = Float.valueOf(countString); counter.put(phrase,count); } double matchWeight = 0.0; double insertWeight = -10.0; double substituteWeight = -10.0; double deleteWeight = -10.0; double transposeWeight = Double.NEGATIVE_INFINITY; FixedWeightEditDistance editDistance = new FixedWeightEditDistance(matchWeight, deleteWeight, insertWeight, substituteWeight, transposeWeight); int maxResults = 5; int maxQueueSize = 10000; double minScore = -25.0; AutoCompleter completer = new AutoCompleter(counter, editDistance, maxResults, maxQueueSize, minScore); for (int i = 1; i < args.length; ++i) { System.out.println("\n|" + args[i] + "|"); SortedSet> completions = completer.complete(args[i]); for (ScoredObject so : completions) System.out.printf("%6.2f %s\n", so.score(), so.getObject()); } } }