Loading src/main/java/edu/bu/LanguageCorrection/Corrector.java +41 −4 Original line number Diff line number Diff line Loading @@ -7,9 +7,11 @@ import java.util.zip.Inflater; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.util.List; import java.util.Map; import java.util.ArrayList; import java.util.PriorityQueue; import java.util.Collections; import java.util.HashMap; public class Corrector { Loading Loading @@ -91,8 +93,13 @@ public class Corrector { // Convert to array of just sentences String[] topSentences = new String[topPairs.length]; for (int i = 0; i < topPairs.length; i++) { // Remove sentence that are not in the 0.1 percentile of the best sentence if (topPairs[i].score > topPairs[0].score * 1.5) { topSentences[i] = ""; } else { topSentences[i] = topPairs[i].sentence; } } return topSentences; } Loading Loading @@ -137,6 +144,38 @@ public class Corrector { } } private static void printSentencesInOrderOfChanges(String[] sentences, String originalSentence) { // Order the sentences by the number of changes needed Map<String, Integer> changesMap = new HashMap<>(); for (String sentence : sentences) { if (sentence == null || sentence.isEmpty()) continue; // Skip empty sentences (not in the 0.1 percentile of the best sentence) int changes = 0; if (sentence.length() != originalSentence.length()) { changes = Math.abs(sentence.split(" ").length - originalSentence.split(" ").length) + 1; } else { String[] originalWords = originalSentence.split(" "); String[] correctedWords = sentence.split(" "); for (int i = 0; i < originalWords.length; i++) { if (!originalWords[i].equals(correctedWords[i])) { changes++; } } } changesMap.put(sentence, changes); } List<Map.Entry<String, Integer>> sortedList = new ArrayList<>(changesMap.entrySet()); sortedList.sort(Map.Entry.comparingByValue()); for (Map.Entry<String, Integer> entry : sortedList) { System.out.println(" " + entry.getKey() + " | Changes: " + entry.getValue()); } } public static void main(String[] args) { if (args.length > 1 && "--file".equals(args[0])) { String path = args[1]; Loading @@ -148,9 +187,7 @@ public class Corrector { sentence = sentence.replaceAll("[^a-zA-Z0-9\\s]", ""); String[] corrected = corrector.correct(sentence); System.out.println(sentence + " | Corrected Sentence Suggestions:"); for (String correctedSentence : corrected) { System.out.println(" " + correctedSentence); } printSentencesInOrderOfChanges(corrected, sentence); } } catch (IOException e) { System.err.println("Error reading file: " + e.getMessage()); Loading Loading
src/main/java/edu/bu/LanguageCorrection/Corrector.java +41 −4 Original line number Diff line number Diff line Loading @@ -7,9 +7,11 @@ import java.util.zip.Inflater; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.util.List; import java.util.Map; import java.util.ArrayList; import java.util.PriorityQueue; import java.util.Collections; import java.util.HashMap; public class Corrector { Loading Loading @@ -91,8 +93,13 @@ public class Corrector { // Convert to array of just sentences String[] topSentences = new String[topPairs.length]; for (int i = 0; i < topPairs.length; i++) { // Remove sentence that are not in the 0.1 percentile of the best sentence if (topPairs[i].score > topPairs[0].score * 1.5) { topSentences[i] = ""; } else { topSentences[i] = topPairs[i].sentence; } } return topSentences; } Loading Loading @@ -137,6 +144,38 @@ public class Corrector { } } private static void printSentencesInOrderOfChanges(String[] sentences, String originalSentence) { // Order the sentences by the number of changes needed Map<String, Integer> changesMap = new HashMap<>(); for (String sentence : sentences) { if (sentence == null || sentence.isEmpty()) continue; // Skip empty sentences (not in the 0.1 percentile of the best sentence) int changes = 0; if (sentence.length() != originalSentence.length()) { changes = Math.abs(sentence.split(" ").length - originalSentence.split(" ").length) + 1; } else { String[] originalWords = originalSentence.split(" "); String[] correctedWords = sentence.split(" "); for (int i = 0; i < originalWords.length; i++) { if (!originalWords[i].equals(correctedWords[i])) { changes++; } } } changesMap.put(sentence, changes); } List<Map.Entry<String, Integer>> sortedList = new ArrayList<>(changesMap.entrySet()); sortedList.sort(Map.Entry.comparingByValue()); for (Map.Entry<String, Integer> entry : sortedList) { System.out.println(" " + entry.getKey() + " | Changes: " + entry.getValue()); } } public static void main(String[] args) { if (args.length > 1 && "--file".equals(args[0])) { String path = args[1]; Loading @@ -148,9 +187,7 @@ public class Corrector { sentence = sentence.replaceAll("[^a-zA-Z0-9\\s]", ""); String[] corrected = corrector.correct(sentence); System.out.println(sentence + " | Corrected Sentence Suggestions:"); for (String correctedSentence : corrected) { System.out.println(" " + correctedSentence); } printSentencesInOrderOfChanges(corrected, sentence); } } catch (IOException e) { System.err.println("Error reading file: " + e.getMessage()); Loading